功能修改-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 = "备注")
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 workCenterMaterialCost2 = getMaterialCost(subjectFeeList,workCenter,month);
BigDecimal erpWorkCenterMaterialCost = getMaterialCost(subjectFeeList,workCenter,month);
//作业中心辅助人员材料费用比例
BigDecimal rate = baseMapper.getWorkCenterAssistantRate(workCenter.getId(),month);
//辅助人员材料费用
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()));
BigDecimal monthOutputArea = BigDecimal.ZERO;
@ -147,11 +147,13 @@ public class CostStatisticsServiceImpl extends BaseServiceImpl<CostStatisticsMap
entity.setWorkCenterId(workCenter.getId());
entity.setWorkCenterCode(workCenter.getWcCode());
entity.setWorkCenterName(workCenter.getWcName());
entity.setJcId(Long.parseLong(workCenter.getJcId()));
entity.setMonth(month);
entity.setProductCost(productCost);
entity.setMaterialCost(materialCost);
entity.setWorkCenterMaterialCost(workCenterMaterialCost);
entity.setAssistantMaterialCost(assistantMaterialCost);
entity.setErpWorkCenterMaterialCost(erpWorkCenterMaterialCost);
entity.setUnitCost(unitCost);
entity.setMonthOutputArea(monthOutputArea);
entity.setMonthOutputVolume(monthOutputVolume);

@ -207,6 +207,10 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
processList.forEach(item -> {
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();
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(
map.size(), map.size(), 0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<>(),
r -> new Thread(r, "scheduling-thread-" + System.currentTimeMillis()));
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, List<SintTempCurveEntity>> sintMap,
Map<Long, String> workCenterMap,
Map<Long, String> craftAbilityMap) {
Map<Long, String> craftAbilityMap,
Map<Long, String> mainProcessMap) {
List<StGlassCakeOutDTO> glassCakeOutList = new ArrayList<>();
List<WorkOrderEntity> workOrderList = new ArrayList<>();
//list = mergeYieldOrderList(list);
@ -534,6 +539,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workPlan.setUnqualifiedQty(0);
workPlan.setScrapQty(0);
workPlan.setOcId(craft.getOcId());
workPlan.setCruxProcess(mainProcessMap.get(craft.getPpsId()));
workPlanList.add(workPlan);
//下一道工序如果不是外协就只排产到外协工序停止
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()){
//热表同槽
sameMap = sameTrough(order, craft, localDateTime, workPlanList, prevProcessEnd);
sameMap = sameTrough(order, craft, localDateTime, workPlanList, prevProcessEnd, mainProcessMap);
//同槽就不需要继续匹配了
if (sameMap.get("isSameTrough").toString() == "true") {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm");
@ -556,7 +562,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}else{
//烧结同炉
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") {
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.setEquipName(equipResource.getEquipName());
workPlan.setEquipResourceId(equipResource.getId().toString());
workPlan.setCruxProcess(mainProcessMap.get(craft.getPpsId()));
processPlanList.add(workPlan);
//更新剩余产能
equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(capacity));
@ -868,6 +875,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workPlan.setQualifiedQty(0);
workPlan.setUnqualifiedQty(0);
workPlan.setScrapQty(0);
workPlan.setCruxProcess(mainProcessMap.get(craft.getPpsId()));
workPlanList.add(workPlan);
} else {
@ -1317,7 +1325,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
return batches;
}
public Map<Long, List<WorkPlanEntity>> dealCommonCraftOrders() {
public Map<Long, List<WorkPlanEntity>> dealCommonCraftOrders(Map<Long, String> mainProcessMap) {
log.info("处理前置公共工序开始!");
List<YieldOrderEntity> commonCraftOrderList = yieldOrderService.selectCommonCraftOrderList();
Map<Long, List<WorkPlanEntity>> planMap = new HashMap<>();
@ -1368,6 +1376,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workPlan.setEquipCode(equipResource.getEquipCode());
workPlan.setEquipName(equipResource.getEquipName());
workPlan.setEquipResourceId(equipResource.getId().toString());
workPlan.setCruxProcess(mainProcessMap.get(craft.getPpsId()));
workPlanList.add(workPlan);
break;
}
@ -1446,7 +1455,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
YieldOrderCraftEntity craft,
LocalDateTime dateTime,
List<WorkPlanEntity> workPlanList,
LocalDateTime prevProcessEnd) {
LocalDateTime prevProcessEnd,
Map<Long, String> mainProcessMap) {
Map<String, Object> map = new HashMap<>();
Boolean isSameTrough = false;
SameTroughEntity sameTrough = sameTroughService.getOne(Wrappers.<SameTroughEntity>lambdaQuery()
@ -1519,6 +1529,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workPlan.setEquipCode(equipResource.getEquipCode());
workPlan.setEquipName(equipResource.getEquipName());
workPlan.setEquipResourceId(equipResource.getId().toString());
workPlan.setCruxProcess(mainProcessMap.get(craft.getPpsId()));
processPlanList.add(workPlan);
equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(sumCapacity));
@ -1664,6 +1675,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workPlan.setEquipCode(equipResource.getEquipCode());
workPlan.setEquipName(equipResource.getEquipName());
workPlan.setEquipResourceId(equipResource.getId().toString());
workPlan.setCruxProcess(mainProcessMap.get(craft.getPpsId()));
processPlanList.add(workPlan);
equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(sumCapacity));
@ -1709,7 +1721,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
Map<Long, List<SintTempCurveEntity>> sintMap,
PartEntity part,
Map<Long, String> processMap,
LocalDateTime prevProcessEnd) {
LocalDateTime prevProcessEnd,
Map<Long, String> mainProcessMap) {
Map<String, Object> map = new HashMap<>();
Boolean isSameFurnace = false;
if (order.getYieldType() != YieldOrderEnum.YIELD_TYPE_1.getCode()) {//烧结订单
@ -1805,6 +1818,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workPlan.setEquipCode(equipResource.getEquipCode());
workPlan.setEquipName(equipResource.getEquipName());
workPlan.setEquipResourceId(equipResource.getId().toString());
workPlan.setCruxProcess(mainProcessMap.get(craft.getPpsId()));
workPlanList.add(workPlan);
equipResource.setRestCapacity(equipResource.getRestCapacity().subtract(sumCapacity));

Loading…
Cancel
Save