|
@@ -166,54 +166,95 @@ public class BizDayworkItemServiceImpl extends ServiceImpl<BizDayworkItemMapper,
|
|
|
public void updateDayworkItemForOutsource(List<BizOutsourcedOrderDetail> outsourcedOrderDetails,List<BizOutsourcedOrderDetail> oldOutsourcedOrderDetails) {
|
|
|
//编辑发出单对dayworkItem进行操作
|
|
|
List<Long> dayworkIds = outsourcedOrderDetails.stream().filter(item ->item.getProductionDeptId() ==null || item.getProductionDeptId() ==0 ).map(BizOutsourcedOrderDetail::getDayworkId).collect(Collectors.toList());
|
|
|
- List<Long> outsourcedDetailIds = outsourcedOrderDetails.stream().filter(item ->item.getProductionDeptId() ==null || item.getProductionDeptId() ==0).map(BizOutsourcedOrderDetail::getId).collect(Collectors.toList());
|
|
|
- List<Long> totalIds = new ArrayList<>();
|
|
|
- totalIds.addAll(dayworkIds);
|
|
|
- totalIds.addAll(oldOutsourcedOrderDetails.stream().filter(item ->item.getProductionDeptId() ==null || item.getProductionDeptId() ==0).map(BizOutsourcedOrderDetail::getDayworkId).collect(Collectors.toList()));
|
|
|
- List<BizDayworkItem> dayworkItemList = getListByDayworkIds(totalIds.stream().distinct().collect(Collectors.toList()));
|
|
|
- //如果是新增的外协明细,则拿到报工信息最新一条,如果is_wx = 0,则吧状态置为7
|
|
|
- List<BizDayworkItem> needUpdateStatus = new ArrayList<>();
|
|
|
- for (int i = 0; i < dayworkIds.size(); i++) {
|
|
|
- Long dayworkId = dayworkIds.get(i);
|
|
|
- BizDayworkItem bizDayworkItem = dayworkItemList.stream().filter(item -> item.getDayworkId().equals(dayworkId)).sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList()).get(0);
|
|
|
- if (bizDayworkItem.getIsWx() == 0) {
|
|
|
- bizDayworkItem.setStatus("7");
|
|
|
- needUpdateStatus.add(bizDayworkItem);
|
|
|
+ if (!dayworkIds.isEmpty()) {
|
|
|
+ List<Long> outsourcedDetailIds = outsourcedOrderDetails.stream().filter(item -> item.getProductionDeptId() == null || item.getProductionDeptId() == 0).map(BizOutsourcedOrderDetail::getId).collect(Collectors.toList());
|
|
|
+ List<Long> totalIds = new ArrayList<>();
|
|
|
+ totalIds.addAll(dayworkIds);
|
|
|
+ totalIds.addAll(oldOutsourcedOrderDetails.stream().filter(item -> item.getProductionDeptId() == null || item.getProductionDeptId() == 0).map(BizOutsourcedOrderDetail::getDayworkId).collect(Collectors.toList()));
|
|
|
+ List<BizDayworkItem> dayworkItemList = getListByDayworkIds(totalIds.stream().distinct().collect(Collectors.toList()));
|
|
|
+ //如果是新增的外协明细,则拿到报工信息最新一条,如果is_wx = 0,则吧状态置为7
|
|
|
+ List<BizDayworkItem> needUpdateStatus = new ArrayList<>();
|
|
|
+ for (int i = 0; i < dayworkIds.size(); i++) {
|
|
|
+ Long dayworkId = dayworkIds.get(i);
|
|
|
+ BizDayworkItem bizDayworkItem = dayworkItemList.stream().filter(item -> item.getDayworkId().equals(dayworkId)).sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList()).get(0);
|
|
|
+ if (bizDayworkItem.getIsWx() == 0) {
|
|
|
+ bizDayworkItem.setStatus("7");
|
|
|
+ needUpdateStatus.add(bizDayworkItem);
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- if (needUpdateStatus.size() > 0) {
|
|
|
- updateBatchById(needUpdateStatus);
|
|
|
- }
|
|
|
- //判断dayworkItem需要删除、新增、修改
|
|
|
- List<BizDayworkItem> needDeletedDayworkItem = new ArrayList<>();
|
|
|
- List<BizDayworkItem> needAddedDayworkItem = new ArrayList<>();
|
|
|
- List<BizDayworkItem> needUpdateDayworkItem = new ArrayList<>();
|
|
|
- //通过明细id查到添加的dayworkItem
|
|
|
- //通过外协发出单主表id查出原发出单的外协明细(页面删除外协明细)
|
|
|
- List<Long> originalOutsourcedDetailIds = oldOutsourcedOrderDetails.stream().filter(item ->item.getProductionDeptId() ==null || item.getProductionDeptId() ==0).map(BizOutsourcedOrderDetail::getId).collect(Collectors.toList());
|
|
|
- originalOutsourcedDetailIds.forEach(item ->{
|
|
|
- //如果新的发出单明细没有不包含旧的,则查询出来dayworkItem然后删除
|
|
|
- if (!outsourcedDetailIds.contains(item)){
|
|
|
- needDeletedDayworkItem.addAll(dayworkItemList.stream().filter(info ->info.getOutsourceDetailId().equals(item)).collect(Collectors.toList()));
|
|
|
+ if (needUpdateStatus.size() > 0) {
|
|
|
+ updateBatchById(needUpdateStatus);
|
|
|
}
|
|
|
- });
|
|
|
- outsourcedOrderDetails.stream().filter(item ->item.getProductionDeptId() ==null || item.getProductionDeptId() ==0).forEach(detail -> {
|
|
|
- List<BizDayworkItem> originalDayworkItem = dayworkItemList.stream().filter(item -> item.getOutsourceDetailId().equals(detail.getId())).collect(Collectors.toList());
|
|
|
- List<String> newProcessStepNumberList = detail.getProcesses().stream().map(BizOutsourcedOrderDetailProcess::getProcessStepNumber).collect(Collectors.toList());
|
|
|
- //拿到最新的报工明细的工段
|
|
|
- BizDayworkItem lastDayworkItem = dayworkItemList.stream().filter(item -> item.getDayworkId().equals(detail.getDayworkId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList()).get(0);
|
|
|
- if(!originalDayworkItem.isEmpty()) {
|
|
|
- //需要删除的报工明细
|
|
|
- List<String> oldProcessStepNumberList = originalDayworkItem.stream().map(BizDayworkItem::getProcessStepNumber).collect(Collectors.toList());
|
|
|
- originalDayworkItem.forEach(item ->{
|
|
|
- if(!newProcessStepNumberList.contains(item.getProcessStepNumber())) {
|
|
|
+ //判断dayworkItem需要删除、新增、修改
|
|
|
+ List<BizDayworkItem> needDeletedDayworkItem = new ArrayList<>();
|
|
|
+ List<BizDayworkItem> needAddedDayworkItem = new ArrayList<>();
|
|
|
+ List<BizDayworkItem> needUpdateDayworkItem = new ArrayList<>();
|
|
|
+ //通过明细id查到添加的dayworkItem
|
|
|
+ //通过外协发出单主表id查出原发出单的外协明细(页面删除外协明细)
|
|
|
+ List<Long> originalOutsourcedDetailIds = oldOutsourcedOrderDetails.stream().filter(item -> item.getProductionDeptId() == null || item.getProductionDeptId() == 0).map(BizOutsourcedOrderDetail::getId).collect(Collectors.toList());
|
|
|
+ originalOutsourcedDetailIds.forEach(item -> {
|
|
|
+ //如果新的发出单明细没有不包含旧的,则查询出来dayworkItem然后删除
|
|
|
+ if (!outsourcedDetailIds.contains(item)) {
|
|
|
+ needDeletedDayworkItem.addAll(dayworkItemList.stream().filter(info -> info.getOutsourceDetailId().equals(item)).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ outsourcedOrderDetails.stream().filter(item -> item.getProductionDeptId() == null || item.getProductionDeptId() == 0).forEach(detail -> {
|
|
|
+ List<BizDayworkItem> originalDayworkItem = dayworkItemList.stream().filter(item -> item.getOutsourceDetailId().equals(detail.getId())).collect(Collectors.toList());
|
|
|
+ List<String> newProcessStepNumberList = detail.getProcesses().stream().map(BizOutsourcedOrderDetailProcess::getProcessStepNumber).collect(Collectors.toList());
|
|
|
+ //拿到最新的报工明细的工段
|
|
|
+ BizDayworkItem lastDayworkItem = dayworkItemList.stream().filter(item -> item.getDayworkId().equals(detail.getDayworkId())).sorted(Comparator.comparing(BizDayworkItem::getCreateTime).reversed()).collect(Collectors.toList()).get(0);
|
|
|
+ if (!originalDayworkItem.isEmpty()) {
|
|
|
+ //需要删除的报工明细
|
|
|
+ List<String> oldProcessStepNumberList = originalDayworkItem.stream().map(BizDayworkItem::getProcessStepNumber).collect(Collectors.toList());
|
|
|
+ originalDayworkItem.forEach(item -> {
|
|
|
+ if (!newProcessStepNumberList.contains(item.getProcessStepNumber())) {
|
|
|
needDeletedDayworkItem.add(item);
|
|
|
}
|
|
|
});
|
|
|
- //需要新增的报工明细
|
|
|
- detail.getProcesses().forEach(process -> {
|
|
|
- //新的报工信息
|
|
|
- if(!oldProcessStepNumberList.contains(process.getProcessStepNumber())) {
|
|
|
+ //需要新增的报工明细
|
|
|
+ detail.getProcesses().forEach(process -> {
|
|
|
+ //新的报工信息
|
|
|
+ if (!oldProcessStepNumberList.contains(process.getProcessStepNumber())) {
|
|
|
+ BizDayworkItem newBizDayworkItem = new BizDayworkItem();
|
|
|
+ newBizDayworkItem.setDayworkId(detail.getDayworkId());
|
|
|
+ newBizDayworkItem.setOutsourceDetailId(detail.getId());
|
|
|
+ newBizDayworkItem.setLotId(detail.getLotId());
|
|
|
+ newBizDayworkItem.setProcessId(process.getProcessId());
|
|
|
+ newBizDayworkItem.setProcessStepNumber(process.getProcessStepNumber());
|
|
|
+ newBizDayworkItem.setStatus("1");
|
|
|
+ newBizDayworkItem.setProdNum(detail.getProductNum());
|
|
|
+ newBizDayworkItem.setDeptId(lastDayworkItem.getDeptId());
|
|
|
+ newBizDayworkItem.setDeptName(lastDayworkItem.getDeptName());
|
|
|
+ newBizDayworkItem.setStartTime(new Date());
|
|
|
+ newBizDayworkItem.setProductionPlanDetailId(lastDayworkItem.getProductionPlanDetailId());
|
|
|
+ newBizDayworkItem.setTechnologicalProcessId(lastDayworkItem.getTechnologicalProcessId());
|
|
|
+ newBizDayworkItem.setTechnologicalProcessDetailId(process.getTechnologicalProcessDetailId());
|
|
|
+ newBizDayworkItem.setIsWx(1);
|
|
|
+ needAddedDayworkItem.add(newBizDayworkItem);
|
|
|
+ } else {
|
|
|
+ //编辑报工信息
|
|
|
+ BizDayworkItem newBizDayworkItem = new BizDayworkItem();
|
|
|
+ newBizDayworkItem.setDayworkId(detail.getDayworkId());
|
|
|
+ newBizDayworkItem.setOutsourceDetailId(detail.getId());
|
|
|
+ newBizDayworkItem.setLotId(detail.getLotId());
|
|
|
+ newBizDayworkItem.setProcessId(process.getProcessId());
|
|
|
+ newBizDayworkItem.setProcessStepNumber(process.getProcessStepNumber());
|
|
|
+ newBizDayworkItem.setStatus("1");
|
|
|
+ newBizDayworkItem.setProdNum(detail.getProductNum());
|
|
|
+ newBizDayworkItem.setDeptId(lastDayworkItem.getDeptId());
|
|
|
+ newBizDayworkItem.setDeptName(lastDayworkItem.getDeptName());
|
|
|
+// newBizDayworkItem.setStartTime(new Date());
|
|
|
+ newBizDayworkItem.setProductionPlanDetailId(lastDayworkItem.getProductionPlanDetailId());
|
|
|
+ newBizDayworkItem.setTechnologicalProcessId(lastDayworkItem.getTechnologicalProcessId());
|
|
|
+ newBizDayworkItem.setTechnologicalProcessDetailId(process.getTechnologicalProcessDetailId());
|
|
|
+ newBizDayworkItem.setIsWx(1);
|
|
|
+ needUpdateDayworkItem.add(newBizDayworkItem);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ //执行新增
|
|
|
+ detail.getProcesses().forEach(process -> {
|
|
|
+ //新的报工信息
|
|
|
BizDayworkItem newBizDayworkItem = new BizDayworkItem();
|
|
|
newBizDayworkItem.setDayworkId(detail.getDayworkId());
|
|
|
newBizDayworkItem.setOutsourceDetailId(detail.getId());
|
|
@@ -230,57 +271,18 @@ public class BizDayworkItemServiceImpl extends ServiceImpl<BizDayworkItemMapper,
|
|
|
newBizDayworkItem.setTechnologicalProcessDetailId(process.getTechnologicalProcessDetailId());
|
|
|
newBizDayworkItem.setIsWx(1);
|
|
|
needAddedDayworkItem.add(newBizDayworkItem);
|
|
|
- }else{
|
|
|
- //编辑报工信息
|
|
|
- BizDayworkItem newBizDayworkItem = new BizDayworkItem();
|
|
|
- newBizDayworkItem.setDayworkId(detail.getDayworkId());
|
|
|
- newBizDayworkItem.setOutsourceDetailId(detail.getId());
|
|
|
- newBizDayworkItem.setLotId(detail.getLotId());
|
|
|
- newBizDayworkItem.setProcessId(process.getProcessId());
|
|
|
- newBizDayworkItem.setProcessStepNumber(process.getProcessStepNumber());
|
|
|
- newBizDayworkItem.setStatus("1");
|
|
|
- newBizDayworkItem.setProdNum(detail.getProductNum());
|
|
|
- newBizDayworkItem.setDeptId(lastDayworkItem.getDeptId());
|
|
|
- newBizDayworkItem.setDeptName(lastDayworkItem.getDeptName());
|
|
|
-// newBizDayworkItem.setStartTime(new Date());
|
|
|
- newBizDayworkItem.setProductionPlanDetailId(lastDayworkItem.getProductionPlanDetailId());
|
|
|
- newBizDayworkItem.setTechnologicalProcessId(lastDayworkItem.getTechnologicalProcessId());
|
|
|
- newBizDayworkItem.setTechnologicalProcessDetailId(process.getTechnologicalProcessDetailId());
|
|
|
- newBizDayworkItem.setIsWx(1);
|
|
|
- needUpdateDayworkItem.add(newBizDayworkItem);
|
|
|
- }
|
|
|
- });
|
|
|
- }else{
|
|
|
- //执行新增
|
|
|
- detail.getProcesses().forEach(process -> {
|
|
|
- //新的报工信息
|
|
|
- BizDayworkItem newBizDayworkItem = new BizDayworkItem();
|
|
|
- newBizDayworkItem.setDayworkId(detail.getDayworkId());
|
|
|
- newBizDayworkItem.setOutsourceDetailId(detail.getId());
|
|
|
- newBizDayworkItem.setLotId(detail.getLotId());
|
|
|
- newBizDayworkItem.setProcessId(process.getProcessId());
|
|
|
- newBizDayworkItem.setProcessStepNumber(process.getProcessStepNumber());
|
|
|
- newBizDayworkItem.setStatus("1");
|
|
|
- newBizDayworkItem.setProdNum(detail.getProductNum());
|
|
|
- newBizDayworkItem.setDeptId(lastDayworkItem.getDeptId());
|
|
|
- newBizDayworkItem.setDeptName(lastDayworkItem.getDeptName());
|
|
|
- newBizDayworkItem.setStartTime(new Date());
|
|
|
- newBizDayworkItem.setProductionPlanDetailId(lastDayworkItem.getProductionPlanDetailId());
|
|
|
- newBizDayworkItem.setTechnologicalProcessId(lastDayworkItem.getTechnologicalProcessId());
|
|
|
- newBizDayworkItem.setTechnologicalProcessDetailId(process.getTechnologicalProcessDetailId());
|
|
|
- newBizDayworkItem.setIsWx(1);
|
|
|
- needAddedDayworkItem.add(newBizDayworkItem);
|
|
|
- });
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (!needDeletedDayworkItem.isEmpty()) {
|
|
|
+ removeBatchByIds(needDeletedDayworkItem);
|
|
|
+ }
|
|
|
+ if (!needAddedDayworkItem.isEmpty()) {
|
|
|
+ saveBatch(needAddedDayworkItem);
|
|
|
+ }
|
|
|
+ if (!needUpdateDayworkItem.isEmpty()) {
|
|
|
+ updateBatchById(needUpdateDayworkItem);
|
|
|
}
|
|
|
- });
|
|
|
- if(!needDeletedDayworkItem.isEmpty()) {
|
|
|
- removeBatchByIds(needDeletedDayworkItem);
|
|
|
- }
|
|
|
- if(!needAddedDayworkItem.isEmpty()){
|
|
|
- saveBatch(needAddedDayworkItem);
|
|
|
- }
|
|
|
- if(!needUpdateDayworkItem.isEmpty()) {
|
|
|
- updateBatchById(needUpdateDayworkItem);
|
|
|
}
|
|
|
}
|
|
|
|