|
@@ -529,94 +529,120 @@ public class BizArchiveInputTempServiceImpl extends ServiceImpl<BizArchiveInputT
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //最后需要保存的工单表list
|
|
|
- List<BizWorkOrderUpdate> workOrderUpdates = new ArrayList<>();
|
|
|
- List<BizWorkOrderDetailUpdate> workOrderDetailUpdates = new ArrayList<>();
|
|
|
- // 处理
|
|
|
+ // 同类型分组
|
|
|
+ Map<String, List<OrderExcelImportLoopGroupModel>> groupMap = new HashMap<>();
|
|
|
for (OrderExcelImportLoopGroupModel groupModel : groupList) {
|
|
|
-
|
|
|
- // 如果没查到, 新建
|
|
|
- BizWorkOrder workOrder = null;
|
|
|
- BizWorkOrderUpdate workOrderUpdate = null;
|
|
|
- List<BizWorkOrder> workOrders = workOrderService.query()
|
|
|
- .eq("company_id", groupModel.getCompanyId())
|
|
|
- .eq("task_type_id", groupModel.getTaskTypeId())
|
|
|
- .ge("start_month", groupModel.getStartMonth())
|
|
|
- .le("start_month", groupModel.getEndMonth())
|
|
|
- .list(); // 根据company_id + task_type_id + start_month包含在group_start...end
|
|
|
- if (!workOrders.isEmpty()) {
|
|
|
- workOrder = workOrders.get(0);
|
|
|
- }
|
|
|
-
|
|
|
- if (null != workOrder) {
|
|
|
- workOrderUpdate = new BizWorkOrderUpdate();
|
|
|
- BeanUtils.copyProperties(workOrder, workOrderUpdate);
|
|
|
- workOrderUpdate.setSourceWorkOrderId(workOrder.getId());
|
|
|
- workOrderUpdate.setIsNew(0);
|
|
|
- } else {
|
|
|
- workOrderUpdate = new BizWorkOrderUpdate();
|
|
|
- workOrderUpdate.setTenantId(tenantId);
|
|
|
- workOrderUpdate.setCompanyId(groupModel.getCompanyId());
|
|
|
- workOrderUpdate.setTaskTypeId(groupModel.getTaskTypeId());
|
|
|
- workOrderUpdate.setId(snowflakeIdWorker.nextId());
|
|
|
- workOrderUpdate.setIsNew(1);
|
|
|
+ String key = groupModel.getCompanyId() + "-" + groupModel.getTaskTypeId();
|
|
|
+ List<OrderExcelImportLoopGroupModel> subGroupList = groupMap.get(key);
|
|
|
+ if (subGroupList == null) {
|
|
|
+ subGroupList = new ArrayList<>();
|
|
|
}
|
|
|
+ subGroupList.add(groupModel);
|
|
|
+ groupMap.put(key, subGroupList);
|
|
|
+ }
|
|
|
|
|
|
- workOrderUpdate.setStartMonth(groupModel.getStartMonth());
|
|
|
- workOrderUpdate.setEndMonth(groupModel.getEndMonth());
|
|
|
- workOrderUpdate.setMonthNum(groupModel.getMonthNum());
|
|
|
+ //最后需要保存的工单表list
|
|
|
+ List<BizWorkOrderUpdate> workOrderUpdates = new ArrayList<>();
|
|
|
+ List<BizWorkOrderDetailUpdate> workOrderDetailUpdates = new ArrayList<>();
|
|
|
|
|
|
- workOrderUpdate.setContractId(groupModel.getModelList().get(0).getContractId());
|
|
|
- workOrderUpdate.setContractDetailId(groupModel.getModelList().get(0).getId());
|
|
|
+ for (List<OrderExcelImportLoopGroupModel> subGroupList : groupMap.values()) {
|
|
|
+ // 处理
|
|
|
+ for (int i = 0; i < subGroupList.size(); i++) {
|
|
|
+
|
|
|
+ OrderExcelImportLoopGroupModel groupModel = subGroupList.get(i);
|
|
|
+
|
|
|
+ // 如果没查到, 新建
|
|
|
+ BizWorkOrder workOrder = null;
|
|
|
+ BizWorkOrderUpdate workOrderUpdate = null;
|
|
|
+
|
|
|
+ // 最后一条
|
|
|
+ if (i == subGroupList.size() - 1) {
|
|
|
+ List<BizWorkOrder> workOrders = workOrderService.query()
|
|
|
+ .eq("company_id", groupModel.getCompanyId())
|
|
|
+ .eq("task_type_id", groupModel.getTaskTypeId())
|
|
|
+ .list(); // 根据company_id + task_type_id + start_month包含在group_start...end
|
|
|
+ if (!workOrders.isEmpty()) {
|
|
|
+ workOrder = workOrders.get(0);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- // TODO: 根据当前时间
|
|
|
- Date date = new Date();
|
|
|
- if (0 > date.compareTo(groupModel.getEndMonth())) {
|
|
|
- workOrderUpdate.setIsStop(0);
|
|
|
- } else {
|
|
|
- workOrderUpdate.setIsStop(1);
|
|
|
- }
|
|
|
+ if (null != workOrder) {
|
|
|
+ workOrderUpdate = new BizWorkOrderUpdate();
|
|
|
+ BeanUtils.copyProperties(workOrder, workOrderUpdate);
|
|
|
+ workOrderUpdate.setSourceWorkOrderId(workOrder.getId());
|
|
|
+ workOrderUpdate.setIsNew(0);
|
|
|
+ } else {
|
|
|
+ workOrderUpdate = new BizWorkOrderUpdate();
|
|
|
+ workOrderUpdate.setTenantId(tenantId);
|
|
|
+ workOrderUpdate.setCompanyId(groupModel.getCompanyId());
|
|
|
+ workOrderUpdate.setTaskTypeId(groupModel.getTaskTypeId());
|
|
|
+ workOrderUpdate.setId(snowflakeIdWorker.nextId());
|
|
|
+ workOrderUpdate.setIsNew(1);
|
|
|
+ }
|
|
|
|
|
|
- workOrderUpdates.add(workOrderUpdate);
|
|
|
+ workOrderUpdate.setStartMonth(groupModel.getStartMonth());
|
|
|
+ workOrderUpdate.setEndMonth(groupModel.getEndMonth());
|
|
|
+ workOrderUpdate.setMonthNum(groupModel.getMonthNum());
|
|
|
|
|
|
- List<BizWorkOrderDetail> existWorkOrderDetailList = new ArrayList<>();
|
|
|
- if (workOrderUpdate.getSourceWorkOrderId() != null) {
|
|
|
- // 从数据库查找工单明细
|
|
|
- existWorkOrderDetailList = workOrderDetailService.query()
|
|
|
- .eq("work_order_id", workOrderUpdate.getId())
|
|
|
- .list();
|
|
|
- }
|
|
|
+ workOrderUpdate.setContractId(groupModel.getModelList().get(0).getContractId());
|
|
|
+ workOrderUpdate.setContractDetailId(groupModel.getModelList().get(0).getId());
|
|
|
|
|
|
- for (int i = 0; i < groupModel.getModelList().size(); i++) {
|
|
|
+ // TODO: 根据当前时间
|
|
|
+ Date date = new Date();
|
|
|
+ if (0 > date.compareTo(groupModel.getEndMonth())) {
|
|
|
+ workOrderUpdate.setIsStop(0);
|
|
|
+ } else {
|
|
|
+ workOrderUpdate.setIsStop(1);
|
|
|
+ }
|
|
|
|
|
|
- BizArchiveInputDetailUpdate inputDetail = groupModel.getModelList().get(i);
|
|
|
+ workOrderUpdates.add(workOrderUpdate);
|
|
|
|
|
|
- // 工单明细
|
|
|
- BizWorkOrderDetailUpdate workOrderDetailUpdate = new BizWorkOrderDetailUpdate();
|
|
|
+ List<BizWorkOrderDetail> existWorkOrderDetailList = new ArrayList<>();
|
|
|
+ if (workOrderUpdate.getSourceWorkOrderId() != null) {
|
|
|
+ // 从数据库查找工单明细
|
|
|
+ existWorkOrderDetailList = workOrderDetailService.query()
|
|
|
+ .eq("work_order_id", workOrderUpdate.getId())
|
|
|
+ .list();
|
|
|
+ }
|
|
|
|
|
|
- if (!existWorkOrderDetailList.isEmpty()) {
|
|
|
- BizWorkOrderDetail workOrderDetail = existWorkOrderDetailList.get(0);
|
|
|
- BeanUtils.copyProperties(workOrderDetail, workOrderDetailUpdate);
|
|
|
- workOrderDetailUpdate.setSourceWorkOrderDetailId(workOrderDetail.getId());
|
|
|
- existWorkOrderDetailList.remove(0);
|
|
|
- } else {
|
|
|
- workOrderDetailUpdate = new BizWorkOrderDetailUpdate();
|
|
|
- workOrderDetailUpdate.setId(snowflakeIdWorker.nextId());
|
|
|
- workOrderDetailUpdate.setTenantId(tenantId);
|
|
|
- workOrderDetailUpdate.setCompanyId(groupModel.getCompanyId());
|
|
|
- workOrderDetailUpdate.setTaskTypeId(groupModel.getTaskTypeId());
|
|
|
+ for (int i2 = 0; i2 < groupModel.getModelList().size(); i2++) {
|
|
|
+
|
|
|
+ BizArchiveInputDetailUpdate inputDetail = groupModel.getModelList().get(i2);
|
|
|
+
|
|
|
+ // 工单明细
|
|
|
+ BizWorkOrderDetailUpdate workOrderDetailUpdate = new BizWorkOrderDetailUpdate();
|
|
|
+
|
|
|
+ if (!existWorkOrderDetailList.isEmpty()) {
|
|
|
+ BizWorkOrderDetail workOrderDetail = existWorkOrderDetailList.get(0);
|
|
|
+ BeanUtils.copyProperties(workOrderDetail, workOrderDetailUpdate);
|
|
|
+ workOrderDetailUpdate.setSourceWorkOrderDetailId(workOrderDetail.getId());
|
|
|
+ existWorkOrderDetailList.remove(0);
|
|
|
+ } else {
|
|
|
+ workOrderDetailUpdate = new BizWorkOrderDetailUpdate();
|
|
|
+ workOrderDetailUpdate.setId(snowflakeIdWorker.nextId());
|
|
|
+ workOrderDetailUpdate.setTenantId(tenantId);
|
|
|
+ workOrderDetailUpdate.setCompanyId(groupModel.getCompanyId());
|
|
|
+ workOrderDetailUpdate.setTaskTypeId(groupModel.getTaskTypeId());
|
|
|
+ }
|
|
|
+
|
|
|
+ workOrderDetailUpdate.setWorkOrderId(workOrderUpdate.getId());
|
|
|
+ workOrderDetailUpdate.setContractDetailId(inputDetail.getId());
|
|
|
+ workOrderDetailUpdate.setContractId(inputDetail.getContractId());
|
|
|
+ workOrderDetailUpdate.setContractDetailId(inputDetail.getId());
|
|
|
+ workOrderDetailUpdate.setFreeNum(inputDetail.getFreeNum());
|
|
|
+ workOrderDetailUpdate.setServiceNum(inputDetail.getServiceNum());
|
|
|
+ workOrderDetailUpdates.add(workOrderDetailUpdate);
|
|
|
}
|
|
|
|
|
|
- workOrderDetailUpdate.setWorkOrderId(workOrderUpdate.getId());
|
|
|
- workOrderDetailUpdate.setContractDetailId(inputDetail.getId());
|
|
|
- workOrderDetailUpdate.setContractId(inputDetail.getContractId());
|
|
|
- workOrderDetailUpdate.setContractDetailId(inputDetail.getId());
|
|
|
- workOrderDetailUpdate.setFreeNum(inputDetail.getFreeNum());
|
|
|
- workOrderDetailUpdate.setServiceNum(inputDetail.getServiceNum());
|
|
|
- workOrderDetailUpdates.add(workOrderDetailUpdate);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
+ // 同公司, 同类型 =》 分组
|
|
|
+ // 查工单: 0条, 1条
|
|
|
+ // 0条 =》 有多少条合同 -》 生成工单
|
|
|
+ // 1- 把工单绑定到 start_month 最大的, 有多少条合同 -》 生成工单
|
|
|
|
|
|
workOrderUpdateService.saveBatch(workOrderUpdates);
|
|
|
workOrderDetailUpdateService.saveBatch(workOrderDetailUpdates);
|