diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/taskdispatch/TaskDispatchServiceImpl.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/taskdispatch/TaskDispatchServiceImpl.java index bec9b4ea..22de5ae4 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/taskdispatch/TaskDispatchServiceImpl.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/taskdispatch/TaskDispatchServiceImpl.java @@ -443,24 +443,26 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { List insertDetailList = new ArrayList<>(); List updateDetailList = new ArrayList<>(); + // 根据派工单明细id,根据工序id查找每个负责人是否在拆分表中存在,存在则更新,否则插入 detailOwnerList.forEach(owner ->{ - detailList.forEach(one ->{ - + owner.getOwners().forEach(m->{ + if(detailList.stream().filter(n ->n.getDetailOwnerId().equals(owner.getId()) && n.getOwner().equals(m) && n.getProcedureId().equals(owner.getProcedureId())).count()==0){ + TaskDispatchDetailDO taskDispatchDetailDO = BeanUtils.toBean(owner,TaskDispatchDetailDO.class); + taskDispatchDetailDO.setId(null); + taskDispatchDetailDO.setOwner(m); + taskDispatchDetailDO.setDetailOwnerId(owner.getId()); + insertDetailList.add(taskDispatchDetailDO); + }else{ + Long detailId = detailList.stream().filter(n -> n.getDetailOwnerId().equals(owner.getId()) && n.getOwner().equals(m) && n.getProcedureId().equals(owner.getProcedureId())).collect(Collectors.toList()).get(0).getId(); + TaskDispatchDetailDO taskDispatchDetailDO = BeanUtils.toBean(owner,TaskDispatchDetailDO.class); + taskDispatchDetailDO.setId(detailId); + updateDetailList.add(taskDispatchDetailDO); + } }); - }); -// insertList.forEach(o -> { -// o.getOwners().forEach(m ->{ -// TaskDispatchDetailDO taskDispatchDetailDO = BeanUtils.toBean(o,TaskDispatchDetailDO.class); -// taskDispatchDetailDO.setId(null); -// taskDispatchDetailDO.setOwner(m); -// insertDetailList.add(taskDispatchDetailDO); -//// if(detailList.stream().filter(n -> n.getOwner()!=null && n.getOwner().equals(m) && n.getProcedureId().equals(o.getProcedureId())).count()==0){ -//// } -// }); -// }); if(!insertDetailList.isEmpty()) taskDispatchDetailMapper.insertBatch(insertDetailList); + if(!updateDetailList.isEmpty()) taskDispatchDetailMapper.updateBatch(updateDetailList); } private void updateTaskDispatchDetailList(Long dispatchId, List list) { diff --git a/sql/v1.0.0/2.business/1.structure.sql b/sql/v1.0.0/2.business/1.structure.sql index 3101e8a2..0e21dae2 100644 --- a/sql/v1.0.0/2.business/1.structure.sql +++ b/sql/v1.0.0/2.business/1.structure.sql @@ -275,3 +275,7 @@ CREATE TABLE `pro_task_dispatch_detail_owner` ( `owner_ids` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '多个负责人', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB COMMENT='派工明细表'; + +alter table pro_task_dispatch_detail add COLUMN `detail_owner_id` bigint(20)default null comment '派工明细拆分前对应id' after id; + +update pro_task_dispatch_detail as a set detail_owner_id =(select id from pro_task_dispatch_detail_owner where owner_ids is not null and dispatch_id=a.dispatch_id and procedure_id=a.procedure_id and owner_ids=a.owner_ids limit 1) \ No newline at end of file