|
@@ -15,6 +15,8 @@ import cn.ezhizao.framework.web.domain.AjaxResult;
|
|
|
import cn.ezhizao.framework.web.page.TableDataInfo;
|
|
|
import cn.ezhizao.project.business.domain.*;
|
|
|
import cn.ezhizao.project.business.service.*;
|
|
|
+import cn.ezhizao.project.system.domain.SysDept;
|
|
|
+import cn.ezhizao.project.system.mapper.SysDeptMapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -69,6 +71,8 @@ public class BizLotController extends BaseController
|
|
|
IBizDayworkCarrierService dayworkCarrierService;
|
|
|
@Resource
|
|
|
IBizCarrierService carrierService;
|
|
|
+ @Resource
|
|
|
+ SysDeptMapper deptMapper;
|
|
|
|
|
|
@Resource
|
|
|
private IBizCarrierCategoryService bizCarrierCategoryService;
|
|
@@ -309,17 +313,20 @@ public class BizLotController extends BaseController
|
|
|
lot.setProductCode(product.getProductCode());
|
|
|
lot.setProductDescription(product.getDescription());
|
|
|
// 计划单号
|
|
|
- BizProductionPlanDetail productionPlanDetail = bizProductionPlanDetailService.getById(lot.getProductionPlanDetailId());
|
|
|
- lot.setProductionPlanNo(productionPlanDetail.getProductionPlanNo());
|
|
|
- // 下达日期
|
|
|
- lot.setIssueDate(productionPlanDetail.getIssueDate());
|
|
|
+ if (lot.getProductionPlanDetailId() != null) {
|
|
|
+ BizProductionPlanDetail productionPlanDetail = bizProductionPlanDetailService.getById(lot.getProductionPlanDetailId());
|
|
|
+ lot.setProductionPlanNo(productionPlanDetail.getProductionPlanNo());
|
|
|
+ // 下达日期
|
|
|
+ lot.setIssueDate(productionPlanDetail.getIssueDate());
|
|
|
+ }
|
|
|
// 当前工段
|
|
|
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().sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList()).stream().findFirst().orElse(new BizDayworkItem());
|
|
|
- lot.setCurrentDept(dayworkItem.getDeptName());
|
|
|
+ SysDept dept = deptMapper.selectDeptById(dayworkItem.getDeptId());
|
|
|
+ lot.setCurrentDept(dept!= null ? dept.getDeptName() : null);
|
|
|
// 当前批次对应箱号
|
|
|
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<>();
|
|
@@ -357,9 +364,10 @@ public class BizLotController extends BaseController
|
|
|
List<BizDaywork> bizDayworks = new ArrayList<>();
|
|
|
List<BizDayworkItem> bizDayworkItems = new ArrayList<>();
|
|
|
List<BizDayworkCarrier> newDayworkCarriers = new ArrayList<>();
|
|
|
+ List<BizDayworkItem> delDayworkItems = 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())));
|
|
|
+ sparateList.stream().filter(v -> !bizLot.getId().equals(v.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();
|
|
|
|
|
@@ -377,31 +385,56 @@ public class BizLotController extends BaseController
|
|
|
List<BizDayworkItem> baseDayworkItems = bizDayworkItemService.getList(new BizDayworkItem().setLotId(bizLot.getId()));
|
|
|
if (baseDayworks.size() > 0) {
|
|
|
sparateList.forEach(l -> {
|
|
|
+ l.setQualifiedNum(l.getLotNumber());
|
|
|
if (l.getId() == null) {
|
|
|
+ l.setId(snowflakeIdWorker.nextId());
|
|
|
// 分批复制报工详情
|
|
|
List<BizDaywork> newDayworks = new ArrayList<>();
|
|
|
baseDayworks.forEach(v -> {
|
|
|
BizDaywork newDaywork = new BizDaywork(v);
|
|
|
- v.setId(snowflakeIdWorker.nextId());
|
|
|
- v.setProcessQualifiedNum(l.getProdNum());
|
|
|
- newDaywork.setProcessQualifiedNum(l.getProdNum());
|
|
|
+ newDaywork.setId(snowflakeIdWorker.nextId());
|
|
|
+ newDaywork.setProcessQualifiedNum(l.getLotNumber());
|
|
|
+ newDaywork.setTemporaryProcessQualifiedNum(l.getLotNumber());
|
|
|
+ newDaywork.setId(snowflakeIdWorker.nextId());
|
|
|
+ newDaywork.setLotId(l.getId());
|
|
|
List<BizDayworkItem> items = baseDayworkItems.stream().filter(e -> e.getDayworkId().equals(v.getId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList());
|
|
|
// 最后一个报工是周转 修改周转数量为分批数
|
|
|
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);
|
|
|
+ BizDayworkItem turnitem = new BizDayworkItem(items.get(0));
|
|
|
+ turnitem.setProdNum(l.getLotNumber());
|
|
|
+ turnitem.setQualifiedNum(l.getQualifiedNum());
|
|
|
+ turnitem.setDayworkId(newDaywork.getId());
|
|
|
+ turnitem.setLotId(l.getId());
|
|
|
+ turnitem.setId(null);
|
|
|
+ bizDayworkItems.add(turnitem);
|
|
|
+ items.subList(1, items.size()).forEach(e -> {
|
|
|
+ BizDayworkItem item = new BizDayworkItem(e);
|
|
|
+ item.setDayworkId(newDaywork.getId());
|
|
|
+ item.setLotId(l.getId());
|
|
|
+ item.setId(null);
|
|
|
+ bizDayworkItems.add(item);
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ // 最后一个报工不是周转
|
|
|
+ // 获取最后一个报工工序的第一个报工,删除其他然后修改状态为最大的那个
|
|
|
+ List<BizDayworkItem> currentItems = items.stream().filter(e -> e.getTechnologicalProcessDetailId().equals(items.get(0).getTechnologicalProcessDetailId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime)).collect(Collectors.toList());
|
|
|
+ List<BizDayworkItem> copyItems = items.stream().filter(e -> currentItems.stream().noneMatch(t -> t.getId().equals(e.getId()))).collect(Collectors.toList());
|
|
|
+ copyItems.forEach(e -> {
|
|
|
+ BizDayworkItem item = new BizDayworkItem(e);
|
|
|
+ item.setDayworkId(newDaywork.getId());
|
|
|
+ item.setLotId(l.getId());
|
|
|
+ item.setId(null);
|
|
|
+ bizDayworkItems.add(item);
|
|
|
+ });
|
|
|
+ BizDayworkItem latestItem = currentItems.get(0);
|
|
|
+ latestItem.setStatus(currentItems.stream().max(Comparator.comparing(BizDayworkItem::getStatus)).orElse(new BizDayworkItem()).getStatus());
|
|
|
+ latestItem.setProdNum(l.getLotNumber());
|
|
|
+ latestItem.setQualifiedNum(l.getQualifiedNum());
|
|
|
+ latestItem.setDayworkId(newDaywork.getId());
|
|
|
+ latestItem.setId(null);
|
|
|
+ latestItem.setLotId(l.getId());
|
|
|
+ bizDayworkItems.add(latestItem);
|
|
|
}
|
|
|
- // 最后一个报工不是周转
|
|
|
- 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);
|
|
|
// 关联载具
|
|
@@ -422,16 +455,35 @@ public class BizLotController extends BaseController
|
|
|
});
|
|
|
bizDayworks.addAll(newDayworks);
|
|
|
} else {
|
|
|
+ BizDaywork bizDaywork = baseDayworks.isEmpty() ? null : baseDayworks.get(0);
|
|
|
+ if (bizDaywork != null) {
|
|
|
+ bizDaywork.setProductionQuantity(l.getLotNumber());
|
|
|
+ bizDaywork.setProcessQualifiedNum(l.getLotNumber());
|
|
|
+ bizDaywork.setTemporaryProcessQualifiedNum(l.getLotNumber());
|
|
|
+ bizDayworks.add(bizDaywork);
|
|
|
+ }
|
|
|
// 本批将当前报工数量改成分批后的数量
|
|
|
// 获取最新报工信息
|
|
|
- BizDayworkItem latestItem = baseDayworkItems.stream().filter(v -> v.getDayworkId().equals(l.getId())).max(Comparator.comparing(BizDayworkItem::getCreateTime)).orElse(new BizDayworkItem());
|
|
|
- // 假设最新报工是状态未开始开始的产品数量
|
|
|
+ BizDayworkItem latestItem = baseDayworkItems.stream().filter(v -> v.getDayworkId().equals(baseDayworks.get(0).getId())).max(Comparator.comparing(BizDayworkItem::getCreateTime)).orElse(new BizDayworkItem());
|
|
|
if ("0".equals(latestItem.getStatus())) {
|
|
|
- latestItem.setProdNum(l.getProdNum());
|
|
|
+ // 假设最新报工是状态未开始开始的产品数量
|
|
|
+ latestItem.setProdNum(l.getLotNumber());
|
|
|
+ bizDayworkItems.add(latestItem);
|
|
|
} else if (Arrays.asList("4", "5", "7").contains(latestItem.getStatus())) {
|
|
|
- latestItem.setProdNum(l.getProdNum());
|
|
|
+ // 假设最新是周转,只改周转数量
|
|
|
+ latestItem.setProdNum(l.getLotNumber());
|
|
|
+ latestItem.setQualifiedNum(l.getLotNumber());
|
|
|
+ bizDayworkItems.add(latestItem);
|
|
|
+ } else {
|
|
|
+ // 删除多的报工,只保留第一条并将状态改成最大的状态。
|
|
|
+ List<BizDayworkItem> currentItems = baseDayworkItems.stream().filter(v -> v.getTechnologicalProcessDetailId().equals(latestItem.getTechnologicalProcessId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime)).collect(Collectors.toList());
|
|
|
+ BizDayworkItem updateItem = currentItems.get(0);
|
|
|
+ updateItem.setStatus(currentItems.stream().max(Comparator.comparing(BizDayworkItem::getStatus)).orElse(new BizDayworkItem()).getStatus());
|
|
|
+ updateItem.setProdNum(l.getLotNumber());
|
|
|
+ updateItem.setQualifiedNum(l.getQualifiedNum());
|
|
|
+ bizDayworkItems.add(updateItem);
|
|
|
+ delDayworkItems.addAll(currentItems.stream().filter(e -> currentItems.stream().noneMatch(t -> t.getId().equals(e.getId()))).collect(Collectors.toList()));
|
|
|
}
|
|
|
- // 假设最新是周转,只改周转数量
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -439,8 +491,10 @@ public class BizLotController extends BaseController
|
|
|
return toAjax(
|
|
|
bizLotService.saveOrUpdateBatch(sparateList) &&
|
|
|
(bizDayworks.isEmpty() || bizDayworkService.saveOrUpdateBatch(bizDayworks)) &&
|
|
|
+ (delDayworkItems.isEmpty() || bizDayworkItemService.removeBatchByIds(delDayworkItems)) &&
|
|
|
(bizDayworkItems.isEmpty() || bizDayworkItemService.saveOrUpdateBatch(bizDayworkItems)) &&
|
|
|
(newDayworkCarriers.isEmpty() || dayworkCarrierService.saveBatch(newDayworkCarriers))
|
|
|
);
|
|
|
+// return toAjax(true);
|
|
|
}
|
|
|
}
|