功能修改-sjx

liweidong
sunjianxi 2 weeks ago
parent 5762530f99
commit 41f946ee01
  1. 13
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/cost/pojo/entity/CostStatisticsEntity.java
  2. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/cost/service/impl/CostStatisticsServiceImpl.java
  3. 30
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java

@ -120,4 +120,17 @@ public class CostStatisticsEntity extends BaseEntity {
@Schema(description = "备注") @Schema(description = "备注")
private String remarks; private String remarks;
/**
* erp作业中心材料费用
*/
@Schema(description = "erp作业中心材料费用")
private BigDecimal erpWorkCenterMaterialCost;
/**
* 作业中心id
*/
@Schema(description = "交付中心")
private Long jcId;
} }

@ -117,13 +117,13 @@ public class CostStatisticsServiceImpl extends BaseServiceImpl<CostStatisticsMap
//作业中心材料费用(剔除成本计算维护的物料) //作业中心材料费用(剔除成本计算维护的物料)
BigDecimal workCenterMaterialCost = baseMapper.getWorkCenterMaterialCost(workCenter.getId(),month); BigDecimal workCenterMaterialCost = baseMapper.getWorkCenterMaterialCost(workCenter.getId(),month);
//费用科目中维护的作业中心材料费用 //费用科目中维护的作业中心材料费用
BigDecimal workCenterMaterialCost2 = getMaterialCost(subjectFeeList,workCenter,month); BigDecimal erpWorkCenterMaterialCost = getMaterialCost(subjectFeeList,workCenter,month);
//作业中心辅助人员材料费用比例 //作业中心辅助人员材料费用比例
BigDecimal rate = baseMapper.getWorkCenterAssistantRate(workCenter.getId(),month); BigDecimal rate = baseMapper.getWorkCenterAssistantRate(workCenter.getId(),month);
//辅助人员材料费用 //辅助人员材料费用
BigDecimal assistantMaterialCost = assistantMaterialCostSum.multiply(rate).divide(BigDecimal.valueOf(100),2, BigDecimal.ROUND_HALF_UP); BigDecimal assistantMaterialCost = assistantMaterialCostSum.multiply(rate).divide(BigDecimal.valueOf(100),2, BigDecimal.ROUND_HALF_UP);
//材料费用 //材料费用
BigDecimal materialCost = workCenterMaterialCost.add(assistantMaterialCost).add(workCenterMaterialCost2); BigDecimal materialCost = workCenterMaterialCost.add(assistantMaterialCost).add(erpWorkCenterMaterialCost);
//月度产出 //月度产出
List<CostCalculationProcessEntity> processList = costCalculationProcessService.list(Wrappers.<CostCalculationProcessEntity>lambdaQuery().eq(CostCalculationProcessEntity::getWorkCenterId,workCenter.getId())); List<CostCalculationProcessEntity> processList = costCalculationProcessService.list(Wrappers.<CostCalculationProcessEntity>lambdaQuery().eq(CostCalculationProcessEntity::getWorkCenterId,workCenter.getId()));
BigDecimal monthOutputArea = BigDecimal.ZERO; BigDecimal monthOutputArea = BigDecimal.ZERO;
@ -147,11 +147,13 @@ public class CostStatisticsServiceImpl extends BaseServiceImpl<CostStatisticsMap
entity.setWorkCenterId(workCenter.getId()); entity.setWorkCenterId(workCenter.getId());
entity.setWorkCenterCode(workCenter.getWcCode()); entity.setWorkCenterCode(workCenter.getWcCode());
entity.setWorkCenterName(workCenter.getWcName()); entity.setWorkCenterName(workCenter.getWcName());
entity.setJcId(Long.parseLong(workCenter.getJcId()));
entity.setMonth(month); entity.setMonth(month);
entity.setProductCost(productCost); entity.setProductCost(productCost);
entity.setMaterialCost(materialCost); entity.setMaterialCost(materialCost);
entity.setWorkCenterMaterialCost(workCenterMaterialCost); entity.setWorkCenterMaterialCost(workCenterMaterialCost);
entity.setAssistantMaterialCost(assistantMaterialCost); entity.setAssistantMaterialCost(assistantMaterialCost);
entity.setErpWorkCenterMaterialCost(erpWorkCenterMaterialCost);
entity.setUnitCost(unitCost); entity.setUnitCost(unitCost);
entity.setMonthOutputArea(monthOutputArea); entity.setMonthOutputArea(monthOutputArea);
entity.setMonthOutputVolume(monthOutputVolume); entity.setMonthOutputVolume(monthOutputVolume);

@ -207,6 +207,10 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
processList.forEach(item -> { processList.forEach(item -> {
processMap.put(item.getId(), item.getName()); processMap.put(item.getId(), item.getName());
}); });
Map<Long, String> mainProcessMap = new HashMap<>();
processList.forEach(item -> {
mainProcessMap.put(item.getId(), item.getIsMain());
});
//初始化作业中心 //初始化作业中心
List<WorkCenterEntity> workCenterList = workCenterService.list(); List<WorkCenterEntity> workCenterList = workCenterService.list();
Map<Long, String> workCenterMap = workCenterList.stream().collect(Collectors.toMap(BaseEntity::getId, WorkCenterEntity::getWcName)); Map<Long, String> workCenterMap = workCenterList.stream().collect(Collectors.toMap(BaseEntity::getId, WorkCenterEntity::getWcName));
@ -238,14 +242,14 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
) )
)); ));
//处理带有公共前置工序的订单 //处理带有公共前置工序的订单
Map<Long, List<WorkPlanEntity>> planMap = dealCommonCraftOrders(); Map<Long, List<WorkPlanEntity>> planMap = dealCommonCraftOrders(mainProcessMap);
//多线程排产 //多线程排产
ExecutorService threadPool = new ThreadPoolExecutor( ExecutorService threadPool = new ThreadPoolExecutor(
map.size(), map.size(), 0L, TimeUnit.MILLISECONDS, map.size(), map.size(), 0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<>(), new LinkedBlockingQueue<>(),
r -> new Thread(r, "scheduling-thread-" + System.currentTimeMillis())); r -> new Thread(r, "scheduling-thread-" + System.currentTimeMillis()));
map.forEach((workcenter, orders) -> { map.forEach((workcenter, orders) -> {
threadPool.execute(() -> allocateResources(orders, personAbilityMap, mainProducerMap, planMap, processMap, sintMap, workCenterMap, craftAbilityMap)); threadPool.execute(() -> allocateResources(orders, personAbilityMap, mainProducerMap, planMap, processMap, sintMap, workCenterMap, craftAbilityMap, mainProcessMap));
}); });
} }
@ -454,7 +458,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
Map<Long, String> processMap, Map<Long, String> processMap,
Map<Long, List<SintTempCurveEntity>> sintMap, Map<Long, List<SintTempCurveEntity>> sintMap,
Map<Long, String> workCenterMap, Map<Long, String> workCenterMap,
Map<Long, String> craftAbilityMap) { Map<Long, String> craftAbilityMap,
Map<Long, String> mainProcessMap) {
List<StGlassCakeOutDTO> glassCakeOutList = new ArrayList<>(); List<StGlassCakeOutDTO> glassCakeOutList = new ArrayList<>();
List<WorkOrderEntity> workOrderList = new ArrayList<>(); List<WorkOrderEntity> workOrderList = new ArrayList<>();
//list = mergeYieldOrderList(list); //list = mergeYieldOrderList(list);
@ -534,6 +539,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workPlan.setUnqualifiedQty(0); workPlan.setUnqualifiedQty(0);
workPlan.setScrapQty(0); workPlan.setScrapQty(0);
workPlan.setOcId(craft.getOcId()); workPlan.setOcId(craft.getOcId());
workPlan.setCruxProcess(mainProcessMap.get(craft.getPpsId()));
workPlanList.add(workPlan); workPlanList.add(workPlan);
//下一道工序如果不是外协就只排产到外协工序停止 //下一道工序如果不是外协就只排产到外协工序停止
if(i!=craftList.size()-1 && !craftList.get(i+1).getIsOutsource()){ if(i!=craftList.size()-1 && !craftList.get(i+1).getIsOutsource()){
@ -546,7 +552,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
//同炉同槽 //同炉同槽
if(order.getYieldType() == YieldOrderEnum.YIELD_TYPE_1.getCode()){ if(order.getYieldType() == YieldOrderEnum.YIELD_TYPE_1.getCode()){
//热表同槽 //热表同槽
sameMap = sameTrough(order, craft, localDateTime, workPlanList, prevProcessEnd); sameMap = sameTrough(order, craft, localDateTime, workPlanList, prevProcessEnd, mainProcessMap);
//同槽就不需要继续匹配了 //同槽就不需要继续匹配了
if (sameMap.get("isSameTrough").toString() == "true") { if (sameMap.get("isSameTrough").toString() == "true") {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm");
@ -556,7 +562,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}else{ }else{
//烧结同炉 //烧结同炉
if (sintMap.containsKey(craft.getPpsId())) { if (sintMap.containsKey(craft.getPpsId())) {
sameMap = sameFurnace(order, craft, workPlanList, localDateTime, glassCodeStr, sintMap, part, processMap, prevProcessEnd); sameMap = sameFurnace(order, craft, workPlanList, localDateTime, glassCodeStr, sintMap, part, processMap, prevProcessEnd, mainProcessMap);
//同炉的话就不用走下面的匹配了,直接下一工序 //同炉的话就不用走下面的匹配了,直接下一工序
if (sameMap.get("isSameFurnace").toString() == "true") { if (sameMap.get("isSameFurnace").toString() == "true") {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm");
@ -703,6 +709,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workPlan.setEquipCode(equipResource.getEquipCode()); workPlan.setEquipCode(equipResource.getEquipCode());
workPlan.setEquipName(equipResource.getEquipName()); workPlan.setEquipName(equipResource.getEquipName());
workPlan.setEquipResourceId(equipResource.getId().toString()); workPlan.setEquipResourceId(equipResource.getId().toString());
workPlan.setCruxProcess(mainProcessMap.get(craft.getPpsId()));
processPlanList.add(workPlan); processPlanList.add(workPlan);
//更新剩余产能 //更新剩余产能
equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(capacity)); equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(capacity));
@ -868,6 +875,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workPlan.setQualifiedQty(0); workPlan.setQualifiedQty(0);
workPlan.setUnqualifiedQty(0); workPlan.setUnqualifiedQty(0);
workPlan.setScrapQty(0); workPlan.setScrapQty(0);
workPlan.setCruxProcess(mainProcessMap.get(craft.getPpsId()));
workPlanList.add(workPlan); workPlanList.add(workPlan);
} else { } else {
@ -1317,7 +1325,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
return batches; return batches;
} }
public Map<Long, List<WorkPlanEntity>> dealCommonCraftOrders() { public Map<Long, List<WorkPlanEntity>> dealCommonCraftOrders(Map<Long, String> mainProcessMap) {
log.info("处理前置公共工序开始!"); log.info("处理前置公共工序开始!");
List<YieldOrderEntity> commonCraftOrderList = yieldOrderService.selectCommonCraftOrderList(); List<YieldOrderEntity> commonCraftOrderList = yieldOrderService.selectCommonCraftOrderList();
Map<Long, List<WorkPlanEntity>> planMap = new HashMap<>(); Map<Long, List<WorkPlanEntity>> planMap = new HashMap<>();
@ -1368,6 +1376,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workPlan.setEquipCode(equipResource.getEquipCode()); workPlan.setEquipCode(equipResource.getEquipCode());
workPlan.setEquipName(equipResource.getEquipName()); workPlan.setEquipName(equipResource.getEquipName());
workPlan.setEquipResourceId(equipResource.getId().toString()); workPlan.setEquipResourceId(equipResource.getId().toString());
workPlan.setCruxProcess(mainProcessMap.get(craft.getPpsId()));
workPlanList.add(workPlan); workPlanList.add(workPlan);
break; break;
} }
@ -1446,7 +1455,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
YieldOrderCraftEntity craft, YieldOrderCraftEntity craft,
LocalDateTime dateTime, LocalDateTime dateTime,
List<WorkPlanEntity> workPlanList, List<WorkPlanEntity> workPlanList,
LocalDateTime prevProcessEnd) { LocalDateTime prevProcessEnd,
Map<Long, String> mainProcessMap) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
Boolean isSameTrough = false; Boolean isSameTrough = false;
SameTroughEntity sameTrough = sameTroughService.getOne(Wrappers.<SameTroughEntity>lambdaQuery() SameTroughEntity sameTrough = sameTroughService.getOne(Wrappers.<SameTroughEntity>lambdaQuery()
@ -1519,6 +1529,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workPlan.setEquipCode(equipResource.getEquipCode()); workPlan.setEquipCode(equipResource.getEquipCode());
workPlan.setEquipName(equipResource.getEquipName()); workPlan.setEquipName(equipResource.getEquipName());
workPlan.setEquipResourceId(equipResource.getId().toString()); workPlan.setEquipResourceId(equipResource.getId().toString());
workPlan.setCruxProcess(mainProcessMap.get(craft.getPpsId()));
processPlanList.add(workPlan); processPlanList.add(workPlan);
equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(sumCapacity)); equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(sumCapacity));
@ -1664,6 +1675,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workPlan.setEquipCode(equipResource.getEquipCode()); workPlan.setEquipCode(equipResource.getEquipCode());
workPlan.setEquipName(equipResource.getEquipName()); workPlan.setEquipName(equipResource.getEquipName());
workPlan.setEquipResourceId(equipResource.getId().toString()); workPlan.setEquipResourceId(equipResource.getId().toString());
workPlan.setCruxProcess(mainProcessMap.get(craft.getPpsId()));
processPlanList.add(workPlan); processPlanList.add(workPlan);
equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(sumCapacity)); equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(sumCapacity));
@ -1709,7 +1721,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
Map<Long, List<SintTempCurveEntity>> sintMap, Map<Long, List<SintTempCurveEntity>> sintMap,
PartEntity part, PartEntity part,
Map<Long, String> processMap, Map<Long, String> processMap,
LocalDateTime prevProcessEnd) { LocalDateTime prevProcessEnd,
Map<Long, String> mainProcessMap) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
Boolean isSameFurnace = false; Boolean isSameFurnace = false;
if (order.getYieldType() != YieldOrderEnum.YIELD_TYPE_1.getCode()) {//烧结订单 if (order.getYieldType() != YieldOrderEnum.YIELD_TYPE_1.getCode()) {//烧结订单
@ -1805,6 +1818,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workPlan.setEquipCode(equipResource.getEquipCode()); workPlan.setEquipCode(equipResource.getEquipCode());
workPlan.setEquipName(equipResource.getEquipName()); workPlan.setEquipName(equipResource.getEquipName());
workPlan.setEquipResourceId(equipResource.getId().toString()); workPlan.setEquipResourceId(equipResource.getId().toString());
workPlan.setCruxProcess(mainProcessMap.get(craft.getPpsId()));
workPlanList.add(workPlan); workPlanList.add(workPlan);
equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(sumCapacity)); equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(sumCapacity));

Loading…
Cancel
Save