近期修改

This commit is contained in:
z 2025-11-25 14:30:02 +08:00
parent becc60d2ef
commit 53c7099546
10 changed files with 64 additions and 17 deletions

View File

@ -203,11 +203,11 @@ public class ProjectOrderController {
//材料成本
BigDecimal materialCost;
materialCost=processBomService.materialCost(projectOrderDO.getId(),projectOrderDO.getProjectSubId());
projectOrderDO.setCailiaoCost(materialCost.add(outsourcedProcessingFee));
//内部工时费
BigDecimal internalLaborCost;
internalLaborCost=processBomService.internalLaborCost(projectOrderDO.getId(),projectOrderDO.getProjectSubId());
projectOrderDO.setNeibuCost(internalLaborCost);
projectOrderDO.setCailiaoCost(materialCost.add(outsourcedProcessingFee).add(internalLaborCost));
//装配工时费
BigDecimal assemblyLaborCost;
assemblyLaborCost=processBomService.assemblyLaborCost(projectOrderDO.getId(),projectOrderDO.getProjectSubId());
@ -218,7 +218,7 @@ public class ProjectOrderController {
yunFeiCost = deliverOrderService.getListYf(projectOrderDO.getId(),projectOrderDO.getProjectSubId());
projectOrderDO.setYunFeiCost(yunFeiCost);
BigDecimal sum = projectOrderDO.getYunFeiCost().add(projectOrderDO.getCailiaoCost()).add(projectOrderDO.getBiaoZhunJianCost()).add(projectOrderDO.getNeibuCost()).add(projectOrderDO.getZpCost());
BigDecimal sum = projectOrderDO.getYunFeiCost().add(projectOrderDO.getCailiaoCost()).add(projectOrderDO.getBiaoZhunJianCost()).add(projectOrderDO.getZpCost());
projectOrderDO.setSumCost(sum);
}
return success(BeanUtils.toBean(pageResult, ProjectOrderCostRespVO.class));

View File

@ -8,5 +8,6 @@ import java.math.BigDecimal;
public class BubbleFeeResult {
private Long bomDetailId;
private Long procedureId;
private Long dispatchDetailId;
private BigDecimal cost;
}

View File

@ -15,7 +15,9 @@ import com.chanko.yunxi.mes.module.heli.enums.ProcessDesignTypeEnum;
import com.chanko.yunxi.mes.module.heli.enums.ProjectPlanStatusEnum;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.util.StringUtils;
import java.util.Date;
@ -391,4 +393,6 @@ public interface ProcessDesignMapper extends BaseMapperX<ProcessDesignDO> {
System.out.println(query.getSqlSelect()); // 查看实际执行的 SQL
return selectPage(reqVO, query);
}
@Delete("delete from pro_process_design where project_id = #{id}")
void deleteOrderId(@Param("id") Long id);
}

View File

@ -37,6 +37,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.plansub.PlanSubMapper;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.BeanUtils;
@ -902,7 +903,7 @@ public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetail
List<BubbleFeeResult> batchMaterialCosts(@Param("bomDetailIds")List<Long> bomDetailIds,@Param("procedureIds") List<Long> procedureIds);
Map<Long, BigDecimal> batchInternalLaborCost(@Param("bomDetailIds")List<Long> bomDetailIds);
List<BubbleFeeResult> batchInternalLaborCost(@Param("bomDetailIds")List<Long> bomDetailIds);
Map<Long, BigDecimal> batchProcessInspection(@Param("bomDetailIds")List<Long> bomDetailIds);
List<BubbleFeeResult> batchProcessInspection(@Param("bomDetailIds")List<Long> bomDetailIds);
}

View File

@ -211,13 +211,14 @@ public class PlanSubDetailServiceImpl implements PlanSubDetailService {
planSubDetailDO.setProjectSubCode(planSubDO.getProjectSubCode());
planSubDetailDO.setTwoDimDate(planSubDO.getBlankDate());
planSubDetailDO.setProjectSubId(planSubDO.getProjectSubId());
planSubDetailDO.setProjectPlanId(planSubDO.getProjectPlanId());
planSubDetailDO.setProjectPlanSubId(planSubDO.getId());
planSubDetailDO.setName(planSubDO.getName());
planSubDetailDO.setCode(planSubDO.getProjectCode());
planSubDetailDO.setCustomerBrief(planSubDO.getCustomerName());
planSubDetailDO.setPlanNo(planSubDO.getPlanNo());
planSubDetailDO.setProjectName(planSubDO.getProjectNameSim());
planSubDetailDO.setProjectNameSim(planSubDO.getProjectNameSim());
list.add(planSubDetailDO);
}

View File

@ -42,6 +42,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.plantask.PlanTaskMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.plantaskbom.PlanTaskBomMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.processdesign.ProcessDesignMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetailMapper;
@ -144,6 +145,8 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
private PlanSubDetailMapper planSubDetailMapper;
@Resource
private ProcessBomDetailMapper processBomDetailMapper;
@Resource
private ProcessDesignMapper ProcessDesignMapper;
@Override
@Transactional(rollbackFor = Exception.class)
@ -226,6 +229,25 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
return CommonResult.error(400,"子项目已生成BOM明细,不允许删除");
}
}
LambdaQueryWrapper<PlanSubDetailDO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(PlanSubDetailDO::getProjectSubId,id);
lambdaQueryWrapper.orderByAsc(PlanSubDetailDO::getCreateTime);
PlanSubDetailDO planSubDetailDO = planSubDetailMapper.selectOne(lambdaQueryWrapper);
if (ObjectUtil.isNotEmpty(planSubDetailDO)){
String type="";
switch (planSubDetailDO.getSubType()){
case "BLUEPRINT_WORKBLANK":
type="毛坯";
break;
case "BLUEPRINT_2D":
type="2D";
break;
case "BLUEPRINT_3D":
type="3D";
break;
}
return CommonResult.error(400,"该子项目已做"+type+"设计,请先前往插活处删除");
}
LambdaUpdateWrapper<ProcessBomDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.eq(ProcessBomDO::getProjectSubId,id);
processBomMapper.delete(lambdaUpdateWrapper);
@ -326,6 +348,8 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
planSubMapper.deleteOrderId( id);
//计划明细子表
planSubDetailMapper.deleteOrderId( id);
//工艺设计表
ProcessDesignMapper.deleteOrderId(id);
//生产任务单表
LambdaQueryWrapper<PlanTaskDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PlanTaskDO::getProjectId, id);

View File

@ -896,7 +896,7 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
.setStartTime(now);
if(operateReqVO.getOwnerId()!=null){
lastReportDO.setOwner(operateReqVO.getOwnerId());
taskDispatchDetailDO.setOwner(operateReqVO.getOwnerId());
// taskDispatchDetailDO.setOwner(operateReqVO.getOwnerId());
}else{
lastReportDO.setOwner(taskDispatchDetailDO.getOwner());
}
@ -1422,6 +1422,20 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
}
return resultMap;
}
/**
* 转换查询结果为Map
*/
private Map<Long, BigDecimal> convertToMap(List<BubbleFeeResult> results) {
Map<Long, BigDecimal> resultMap = new HashMap<>();
if (ObjectUtil.isNotEmpty(results)){
for (BubbleFeeResult result : results) {
if (ObjectUtil.isNotEmpty(result)){
resultMap.put(result.getDispatchDetailId(), ObjectUtil.isEmpty(result.getCost()) ? BigDecimal.ZERO : result.getCost());
}
}
}
return resultMap;
}
/**
* 收集所有需要查询的键
*/
@ -1475,8 +1489,8 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
.map(TaskDispatchDetailDO::getId)
.distinct()
.collect(Collectors.toList());
return taskDispatchDetailMapper.batchInternalLaborCost(bomDetailIds);
List<BubbleFeeResult> batchResults=taskDispatchDetailMapper.batchInternalLaborCost(bomDetailIds);
return convertToMap(batchResults);
}
private Map<Long, BigDecimal> getProcessInspectionBatch(List<TaskDispatchDetailDO> details) {
@ -1488,8 +1502,8 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
.map(TaskDispatchDetailDO::getId)
.distinct()
.collect(Collectors.toList());
return taskDispatchDetailMapper.batchProcessInspection(bomDetailIds);
List<BubbleFeeResult> batchResults=taskDispatchDetailMapper.batchProcessInspection(bomDetailIds);
return convertToMap(batchResults);
}
// 辅助方法

View File

@ -232,8 +232,8 @@
) AS subquery
GROUP BY subquery.bomDetailId, subquery.procedureId;
</select>
<select id="batchInternalLaborCost" resultType="java.util.Map">
SELECT t1.id,sum(COALESCE(r.work_time, 0) * p.grade_cost) cost
<select id="batchInternalLaborCost" resultType="com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.BubbleFeeResult">
SELECT t1.id as dispatchDetailId,sum(COALESCE(r.work_time, 0) * p.grade_cost) cost
from pro_task_dispatch t
left join pro_task_dispatch_detail t1 on t.id=t1.dispatch_id and t1.deleted=0 and t1.tenant_id=2
left join pro_task_report r on r.dispatch_detail_id=t1.id and r.deleted=0 and r.tenant_id=2
@ -243,9 +243,10 @@
<foreach collection="bomDetailIds" item="bomDetailId" open="(" close=")" separator=",">
#{bomDetailId}
</foreach>
group by t1.id
</select>
<select id="batchProcessInspection" resultType="java.util.Map">
SELECT g.dispatch_detail_id,sum(COALESCE(t.work_time, 0) * p.grade_cost) cost
<select id="batchProcessInspection" resultType="com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.BubbleFeeResult">
SELECT g.dispatch_detail_id as dispatchDetailId,sum(COALESCE(t.work_time, 0) * p.grade_cost) cost
FROM quality_pg_master_line g
LEFT JOIN quality_bg_master_line t ON t.zj_mx_id = g.id and t.deleted = 0 and t.tenant_id = 2
left join system_user_post u on u.user_id=t.bg_user and u.deleted=0 and u.tenant_id=2
@ -254,5 +255,6 @@
<foreach collection="bomDetailIds" item="bomDetailId" open="(" close=")" separator=",">
#{bomDetailId}
</foreach>
group by g.dispatch_detail_id
</select>
</mapper>

View File

@ -544,7 +544,7 @@ const handleAddConfirm = () => {
return
}
selectedAddRow.value[0].twoDimDate = null
selectedAddRow.value[0].projectPlanSubId = null
// selectedAddRow.value[0].projectPlanSubId = null
selectedAddRow.value[0].startTwoDimDate = null
selectedAddRow.value[0].twoDimOwner = null
selectedAddRow.value[0].subType = null

View File

@ -85,7 +85,7 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" @row-click="rowClick" :row-class-name="tableRowClassName" highlight-current-row>
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" @row-click="rowClick" :row-class-name="tableRowClassName" highlight-current-row>
<el-table-column label="项目名称" align="center" prop="projectName" />
<!-- <el-table-column-->
<!-- label="生成日期"-->
@ -267,7 +267,7 @@ const getDictLabel = (dictType, value) => {
return dict?.label || value //
}
const tableRowClassName = ({ row }) => {
if (row.paymentDate!=null){
if (row.paymentDate!=null&&row.cgTypee!=1){
var endTime = new Date(row.paymentDate);
// Date