近期修改

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; BigDecimal materialCost;
materialCost=processBomService.materialCost(projectOrderDO.getId(),projectOrderDO.getProjectSubId()); materialCost=processBomService.materialCost(projectOrderDO.getId(),projectOrderDO.getProjectSubId());
projectOrderDO.setCailiaoCost(materialCost.add(outsourcedProcessingFee));
//内部工时费 //内部工时费
BigDecimal internalLaborCost; BigDecimal internalLaborCost;
internalLaborCost=processBomService.internalLaborCost(projectOrderDO.getId(),projectOrderDO.getProjectSubId()); internalLaborCost=processBomService.internalLaborCost(projectOrderDO.getId(),projectOrderDO.getProjectSubId());
projectOrderDO.setNeibuCost(internalLaborCost); projectOrderDO.setNeibuCost(internalLaborCost);
projectOrderDO.setCailiaoCost(materialCost.add(outsourcedProcessingFee).add(internalLaborCost));
//装配工时费 //装配工时费
BigDecimal assemblyLaborCost; BigDecimal assemblyLaborCost;
assemblyLaborCost=processBomService.assemblyLaborCost(projectOrderDO.getId(),projectOrderDO.getProjectSubId()); assemblyLaborCost=processBomService.assemblyLaborCost(projectOrderDO.getId(),projectOrderDO.getProjectSubId());
@ -218,7 +218,7 @@ public class ProjectOrderController {
yunFeiCost = deliverOrderService.getListYf(projectOrderDO.getId(),projectOrderDO.getProjectSubId()); yunFeiCost = deliverOrderService.getListYf(projectOrderDO.getId(),projectOrderDO.getProjectSubId());
projectOrderDO.setYunFeiCost(yunFeiCost); 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); projectOrderDO.setSumCost(sum);
} }
return success(BeanUtils.toBean(pageResult, ProjectOrderCostRespVO.class)); return success(BeanUtils.toBean(pageResult, ProjectOrderCostRespVO.class));

View File

@ -8,5 +8,6 @@ import java.math.BigDecimal;
public class BubbleFeeResult { public class BubbleFeeResult {
private Long bomDetailId; private Long bomDetailId;
private Long procedureId; private Long procedureId;
private Long dispatchDetailId;
private BigDecimal cost; 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.heli.enums.ProjectPlanStatusEnum;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.Date; import java.util.Date;
@ -391,4 +393,6 @@ public interface ProcessDesignMapper extends BaseMapperX<ProcessDesignDO> {
System.out.println(query.getSqlSelect()); // 查看实际执行的 SQL System.out.println(query.getSqlSelect()); // 查看实际执行的 SQL
return selectPage(reqVO, query); 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.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.beans.BeanUtils; 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); 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.setProjectSubCode(planSubDO.getProjectSubCode());
planSubDetailDO.setTwoDimDate(planSubDO.getBlankDate()); planSubDetailDO.setTwoDimDate(planSubDO.getBlankDate());
planSubDetailDO.setProjectSubId(planSubDO.getProjectSubId()); planSubDetailDO.setProjectSubId(planSubDO.getProjectSubId());
planSubDetailDO.setProjectPlanId(planSubDO.getProjectPlanId()); planSubDetailDO.setProjectPlanSubId(planSubDO.getId());
planSubDetailDO.setName(planSubDO.getName()); planSubDetailDO.setName(planSubDO.getName());
planSubDetailDO.setCode(planSubDO.getProjectCode()); planSubDetailDO.setCode(planSubDO.getProjectCode());
planSubDetailDO.setCustomerBrief(planSubDO.getCustomerName()); planSubDetailDO.setCustomerBrief(planSubDO.getCustomerName());
planSubDetailDO.setPlanNo(planSubDO.getPlanNo()); planSubDetailDO.setPlanNo(planSubDO.getPlanNo());
planSubDetailDO.setProjectName(planSubDO.getProjectNameSim()); planSubDetailDO.setProjectName(planSubDO.getProjectNameSim());
planSubDetailDO.setProjectNameSim(planSubDO.getProjectNameSim()); planSubDetailDO.setProjectNameSim(planSubDO.getProjectNameSim());
list.add(planSubDetailDO); 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.plantaskbom.PlanTaskBomMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper; 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.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.ProjectOrderMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetailMapper;
@ -144,6 +145,8 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
private PlanSubDetailMapper planSubDetailMapper; private PlanSubDetailMapper planSubDetailMapper;
@Resource @Resource
private ProcessBomDetailMapper processBomDetailMapper; private ProcessBomDetailMapper processBomDetailMapper;
@Resource
private ProcessDesignMapper ProcessDesignMapper;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -226,6 +229,25 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
return CommonResult.error(400,"子项目已生成BOM明细,不允许删除"); 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<ProcessBomDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.eq(ProcessBomDO::getProjectSubId,id); lambdaUpdateWrapper.eq(ProcessBomDO::getProjectSubId,id);
processBomMapper.delete(lambdaUpdateWrapper); processBomMapper.delete(lambdaUpdateWrapper);
@ -326,6 +348,8 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
planSubMapper.deleteOrderId( id); planSubMapper.deleteOrderId( id);
//计划明细子表 //计划明细子表
planSubDetailMapper.deleteOrderId( id); planSubDetailMapper.deleteOrderId( id);
//工艺设计表
ProcessDesignMapper.deleteOrderId(id);
//生产任务单表 //生产任务单表
LambdaQueryWrapper<PlanTaskDO> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PlanTaskDO> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PlanTaskDO::getProjectId, id); wrapper.eq(PlanTaskDO::getProjectId, id);

View File

@ -896,7 +896,7 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
.setStartTime(now); .setStartTime(now);
if(operateReqVO.getOwnerId()!=null){ if(operateReqVO.getOwnerId()!=null){
lastReportDO.setOwner(operateReqVO.getOwnerId()); lastReportDO.setOwner(operateReqVO.getOwnerId());
taskDispatchDetailDO.setOwner(operateReqVO.getOwnerId()); // taskDispatchDetailDO.setOwner(operateReqVO.getOwnerId());
}else{ }else{
lastReportDO.setOwner(taskDispatchDetailDO.getOwner()); lastReportDO.setOwner(taskDispatchDetailDO.getOwner());
} }
@ -1422,6 +1422,20 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
} }
return resultMap; 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) .map(TaskDispatchDetailDO::getId)
.distinct() .distinct()
.collect(Collectors.toList()); .collect(Collectors.toList());
List<BubbleFeeResult> batchResults=taskDispatchDetailMapper.batchInternalLaborCost(bomDetailIds);
return taskDispatchDetailMapper.batchInternalLaborCost(bomDetailIds); return convertToMap(batchResults);
} }
private Map<Long, BigDecimal> getProcessInspectionBatch(List<TaskDispatchDetailDO> details) { private Map<Long, BigDecimal> getProcessInspectionBatch(List<TaskDispatchDetailDO> details) {
@ -1488,8 +1502,8 @@ public class TaskDispatchServiceImpl implements TaskDispatchService {
.map(TaskDispatchDetailDO::getId) .map(TaskDispatchDetailDO::getId)
.distinct() .distinct()
.collect(Collectors.toList()); .collect(Collectors.toList());
List<BubbleFeeResult> batchResults=taskDispatchDetailMapper.batchProcessInspection(bomDetailIds);
return taskDispatchDetailMapper.batchProcessInspection(bomDetailIds); return convertToMap(batchResults);
} }
// 辅助方法 // 辅助方法

View File

@ -232,8 +232,8 @@
) AS subquery ) AS subquery
GROUP BY subquery.bomDetailId, subquery.procedureId; GROUP BY subquery.bomDetailId, subquery.procedureId;
</select> </select>
<select id="batchInternalLaborCost" resultType="java.util.Map"> <select id="batchInternalLaborCost" resultType="com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.BubbleFeeResult">
SELECT t1.id,sum(COALESCE(r.work_time, 0) * p.grade_cost) cost SELECT t1.id as dispatchDetailId,sum(COALESCE(r.work_time, 0) * p.grade_cost) cost
from pro_task_dispatch t 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_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 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=","> <foreach collection="bomDetailIds" item="bomDetailId" open="(" close=")" separator=",">
#{bomDetailId} #{bomDetailId}
</foreach> </foreach>
group by t1.id
</select> </select>
<select id="batchProcessInspection" resultType="java.util.Map"> <select id="batchProcessInspection" resultType="com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.BubbleFeeResult">
SELECT g.dispatch_detail_id,sum(COALESCE(t.work_time, 0) * p.grade_cost) cost SELECT g.dispatch_detail_id as dispatchDetailId,sum(COALESCE(t.work_time, 0) * p.grade_cost) cost
FROM quality_pg_master_line g 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 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 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=","> <foreach collection="bomDetailIds" item="bomDetailId" open="(" close=")" separator=",">
#{bomDetailId} #{bomDetailId}
</foreach> </foreach>
group by g.dispatch_detail_id
</select> </select>
</mapper> </mapper>

View File

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

View File

@ -85,7 +85,7 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <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="项目名称" align="center" prop="projectName" />
<!-- <el-table-column--> <!-- <el-table-column-->
<!-- label="生成日期"--> <!-- label="生成日期"-->
@ -267,7 +267,7 @@ const getDictLabel = (dictType, value) => {
return dict?.label || value // return dict?.label || value //
} }
const tableRowClassName = ({ row }) => { const tableRowClassName = ({ row }) => {
if (row.paymentDate!=null){ if (row.paymentDate!=null&&row.cgTypee!=1){
var endTime = new Date(row.paymentDate); var endTime = new Date(row.paymentDate);
// Date // Date