|
@@ -1,9 +1,6 @@
|
|
|
package cn.ezhizao.project.business.controller;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.Comparator;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
import javax.annotation.Resource;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
@@ -69,6 +66,13 @@ public class BizLotController extends BaseController
|
|
|
@Resource
|
|
|
private SnowflakeIdWorker snowflakeIdWorker;
|
|
|
@Resource
|
|
|
+ IBizDayworkCarrierService dayworkCarrierService;
|
|
|
+ @Resource
|
|
|
+ IBizCarrierService carrierService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private IBizCarrierCategoryService bizCarrierCategoryService;
|
|
|
+ @Resource
|
|
|
HttpServletRequest request;
|
|
|
|
|
|
/**
|
|
@@ -293,12 +297,13 @@ public class BizLotController extends BaseController
|
|
|
@PostMapping("/getLotInfoForInBatches")
|
|
|
public AjaxResult getLotInfoForInBatches(@RequestBody BizLot bizLot) {
|
|
|
// 分批信息需要批次信息
|
|
|
-
|
|
|
List<BizLot> lots = bizLotService.getList(bizLot);
|
|
|
if (lots.size() == 0) {
|
|
|
return error("没有找到批次信息");
|
|
|
}
|
|
|
BizLot lot = lots.get(0);
|
|
|
+ List<BizLot> existsLots = bizLotService.query().likeRight("lot_code", lot.getLotCode().substring(0, lot.getLotCode().length() - 1)).list();
|
|
|
+ lot.setLatestLotCode(existsLots.stream().sorted(Comparator.comparing(BizLot::getLotCode).reversed()).findFirst().orElse(new BizLot()).getLotCode());
|
|
|
// 产品描述
|
|
|
BizProduct product = bizProductService.getById(lot.getProductId());
|
|
|
lot.setProductCode(product.getProductCode());
|
|
@@ -309,14 +314,37 @@ public class BizLotController extends BaseController
|
|
|
// 下达日期
|
|
|
lot.setIssueDate(productionPlanDetail.getIssueDate());
|
|
|
// 当前工段
|
|
|
-// BizDaywork bizDaywork = bizDayworkService.query().eq("lot_id", bizLot.getId()).one();
|
|
|
+ BizDaywork bizDaywork = bizDayworkService.query().eq("lot_id", bizLot.getId()).one();
|
|
|
BizDayworkItem conditions = new BizDayworkItem();
|
|
|
conditions.setLotId(lot.getId());
|
|
|
List<BizDayworkItem> dayworkItemList = bizDayworkItemService.getList(conditions);
|
|
|
- BizDayworkItem dayworkItem = dayworkItemList.stream().filter(v -> !Arrays.asList("4", "5", "7").contains(v.getStatus())).collect(Collectors.toList()).stream().findFirst().orElse(new BizDayworkItem());
|
|
|
+ BizDayworkItem dayworkItem = dayworkItemList.stream().sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList()).stream().findFirst().orElse(new BizDayworkItem());
|
|
|
lot.setCurrentDept(dayworkItem.getDeptName());
|
|
|
+ // 当前批次对应箱号
|
|
|
+ List<BizDayworkCarrier> dayworkCarriers = dayworkCarrierService.query().in("daywork_id", dayworkItemList.isEmpty() ? Collections.singletonList("0") : dayworkItemList.stream().map(v -> v.getDayworkId()).collect(Collectors.toList())).eq("is_changed", 0).list();
|
|
|
+ List<BizCarrier> carriers = new ArrayList<>();
|
|
|
+ dayworkCarriers.forEach(l -> {
|
|
|
+ BizCarrier carrier = new BizCarrier();
|
|
|
+ carrier.setCode(l.getCarrierCode());
|
|
|
+ carrier.setId(l.getCarrierId());
|
|
|
+ carriers.add(carrier);
|
|
|
+ });
|
|
|
+ // 判断当前工序是在周转状态还是进行中状态
|
|
|
+ Integer qualified = 0;
|
|
|
+ if (Arrays.asList("4", "5", "7").contains(dayworkItem.getStatus())) {
|
|
|
+ // 假设是周转状态合格数量为prodNum
|
|
|
+ qualified = dayworkItem.getProdNum();
|
|
|
+ } else {
|
|
|
+ // 假设进行中,合格数为已完成的生产的合格数总和
|
|
|
+ qualified = dayworkItemList.stream().filter(v -> v.getTechnologicalProcessDetailId().equals(dayworkItem.getTechnologicalProcessDetailId())).mapToInt(BizDayworkItem::getQualifiedNum).sum();
|
|
|
+ }
|
|
|
+ // 假设是进行中 合格数量是所有正在生产的中已完成的总和
|
|
|
+ lot.setQualifiedNum(qualified);
|
|
|
// 当前工序投产量
|
|
|
lot.setProdNum(dayworkItem.getProdNum());
|
|
|
+ // 当前工段合格数量
|
|
|
+ lot.setCarriers(carriers);
|
|
|
+ lot.setDaywork(bizDaywork);
|
|
|
return success(lot);
|
|
|
}
|
|
|
|
|
@@ -328,8 +356,24 @@ public class BizLotController extends BaseController
|
|
|
List<BizLot> sparateList = bizLot.getSparateList();
|
|
|
List<BizDaywork> bizDayworks = new ArrayList<>();
|
|
|
List<BizDayworkItem> bizDayworkItems = new ArrayList<>();
|
|
|
+ List<BizDayworkCarrier> newDayworkCarriers = new ArrayList<>();
|
|
|
+ // 判断绑定箱是否重复
|
|
|
+ List<Long> carrierIds = new ArrayList<>();
|
|
|
+ sparateList.stream().filter(v -> !v.getId().equals(bizLot.getId())).forEach(x -> carrierIds.addAll(x.getCarriers().stream().map(BizCarrier::getId).collect(Collectors.toList())));
|
|
|
+ List<BizCarrier> carriers = carrierService.query().in("id", carrierIds.isEmpty() ? Collections.singletonList("0"): carrierIds).list();
|
|
|
+ List<BizDayworkCarrier> dayworkCarriers = dayworkCarrierService.query().in("carrier_id", carrierIds.isEmpty() ? Collections.singletonList("0"): carrierIds).eq("is_changed", 0).list();
|
|
|
+
|
|
|
+ // 箱类型 先不管
|
|
|
+ List<BizCarrierCategory> bizCarrierCategories = bizCarrierCategoryService.query().in( "id", carriers.isEmpty() ? Collections.singletonList(0L): carriers.stream().map(BizCarrier::getCategoryId).collect(Collectors.toList())).list();
|
|
|
+ // 判断是否有已经被使用的
|
|
|
+ List<BizDaywork> dayworks = bizDayworkService.query().in("id", dayworkCarriers.isEmpty() ? Collections.singletonList("0") : dayworkCarriers.stream().map(BizDayworkCarrier::getDayworkId).collect(Collectors.toList())).list();
|
|
|
+
|
|
|
// 判断是否已报工
|
|
|
List<BizDaywork> baseDayworks = bizDayworkService.getList(new BizDaywork().setLotId(bizLot.getId()));
|
|
|
+
|
|
|
+ if (dayworks.stream().anyMatch(e -> !baseDayworks.stream().allMatch(v -> v.getProductionPlanDetailId().equals(e.getProductionPlanDetailId())))) {
|
|
|
+ return error("载具已绑定其他计划单");
|
|
|
+ }
|
|
|
List<BizDayworkItem> baseDayworkItems = bizDayworkItemService.getList(new BizDayworkItem().setLotId(bizLot.getId()));
|
|
|
if (baseDayworks.size() > 0) {
|
|
|
sparateList.forEach(l -> {
|
|
@@ -340,14 +384,41 @@ public class BizLotController extends BaseController
|
|
|
BizDaywork newDaywork = new BizDaywork(v);
|
|
|
v.setId(snowflakeIdWorker.nextId());
|
|
|
v.setProcessQualifiedNum(l.getProdNum());
|
|
|
+ newDaywork.setProcessQualifiedNum(l.getProdNum());
|
|
|
List<BizDayworkItem> items = baseDayworkItems.stream().filter(e -> e.getDayworkId().equals(v.getId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList());
|
|
|
- items.forEach(e -> {
|
|
|
+ // 最后一个报工是周转 修改周转数量为分批数
|
|
|
+ if(items.size() > 0 && Arrays.asList("4", "7", "5").contains( items.get(0).getStatus())) {
|
|
|
+ BizDayworkItem item = new BizDayworkItem(items.get(0));
|
|
|
+ item.setProdNum(l.getProdNum());
|
|
|
+ item.setQualifiedNum(l.getProdNum());
|
|
|
+ item.setDayworkId(newDaywork.getId());
|
|
|
+ item.setId(null);
|
|
|
+ bizDayworkItems.add(item);
|
|
|
+ }
|
|
|
+ // 最后一个报工不是周转
|
|
|
+ items.subList(1, items.size()).forEach(e -> {
|
|
|
BizDayworkItem item = new BizDayworkItem(e);
|
|
|
item.setDayworkId(newDaywork.getId());
|
|
|
item.setId(null);
|
|
|
bizDayworkItems.add(item);
|
|
|
});
|
|
|
+ // 判断最后一个报工是那种情况
|
|
|
newDayworks.add(newDaywork);
|
|
|
+ // 关联载具
|
|
|
+ l.getCarriers().forEach(e -> {
|
|
|
+ BizDayworkCarrier carrier = new BizDayworkCarrier();
|
|
|
+ BizCarrier item = carriers.stream().filter(x -> x.getId().equals(v.getId())).findFirst().orElse(new BizCarrier());
|
|
|
+ carrier.setCarrierCode(item.getCode());
|
|
|
+ carrier.setLotId(l.getId());
|
|
|
+ carrier.setCarrierId(item.getId());
|
|
|
+ carrier.setProductId(newDaywork.getProductId());
|
|
|
+ carrier.setDayworkId(newDaywork.getId());
|
|
|
+ carrier.setProductionPlanDetailId(newDaywork.getProductionPlanDetailId());
|
|
|
+ carrier.setProductionPlanId(newDaywork.getProductionPlanId());
|
|
|
+ carrier.setProductionPlanDetailSubDetailId(newDaywork.getProductionPlanDetailSubDetailId());
|
|
|
+ carrier.setTechnologicalProcessId(newDaywork.getTechnologicalProcessId());
|
|
|
+ newDayworkCarriers.add(carrier);
|
|
|
+ });
|
|
|
});
|
|
|
bizDayworks.addAll(newDayworks);
|
|
|
} else {
|
|
@@ -365,6 +436,11 @@ public class BizLotController extends BaseController
|
|
|
});
|
|
|
}
|
|
|
// 将报工信息复制一份
|
|
|
- return toAjax(bizLotService.saveOrUpdateBatch(sparateList) && (bizDayworks.isEmpty() || bizDayworkService.saveOrUpdateBatch(bizDayworks)) && (bizDayworkItems.isEmpty() || bizDayworkItemService.saveOrUpdateBatch(bizDayworkItems)));
|
|
|
+ return toAjax(
|
|
|
+ bizLotService.saveOrUpdateBatch(sparateList) &&
|
|
|
+ (bizDayworks.isEmpty() || bizDayworkService.saveOrUpdateBatch(bizDayworks)) &&
|
|
|
+ (bizDayworkItems.isEmpty() || bizDayworkItemService.saveOrUpdateBatch(bizDayworkItems)) &&
|
|
|
+ (newDayworkCarriers.isEmpty() || dayworkCarrierService.saveBatch(newDayworkCarriers))
|
|
|
+ );
|
|
|
}
|
|
|
}
|