Sfoglia il codice sorgente

feat:工单导入时,需要同类型同公司中的工单,系统中原有的工单跟导入中合同最新的一条关联其他导入的合同,需要的工单重新生成

ly 11 mesi fa
parent
commit
688a2dc343

+ 2 - 0
src/main/java/cn/ezhizao/project/business/order/service/IBizArchiveInputService.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import cn.ezhizao.project.business.order.domain.*;
 import cn.ezhizao.project.business.order.domain.vo.InputVo;
+import cn.ezhizao.project.business.workOrder.domain.BizWorkOrder;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
@@ -48,4 +49,5 @@ public interface IBizArchiveInputService extends IService<BizArchiveInput>
     int removeBinByIds(List<Long> ids);
 
     List<BizArchiveInput> getListByInput(InputVo bizArchiveInput);
+    boolean addLoopTasks(BizWorkOrder workOrder);
 }

+ 1 - 1
src/main/java/cn/ezhizao/project/business/upgrade/controller/BizWorkOrderUpdateController.java

@@ -87,7 +87,7 @@ public class BizWorkOrderUpdateController extends BaseController
         List<BizWorkOrderUpdate> list = null;
 
         if(bizWorkOrder.getNoContract() == 1){
-            list= bizWorkOrderUpdateService.gettoUpLoadList(bizWorkOrder);
+            list = bizWorkOrderUpdateService.gettoUpLoadList(bizWorkOrder);
         }else{
             list = bizWorkOrderUpdateService.getList2(bizWorkOrder);
         }

+ 11 - 3
src/main/java/cn/ezhizao/project/business/upgrade/crmUpgradeController.java

@@ -10,6 +10,7 @@ import cn.ezhizao.framework.lock.LockKey;
 import cn.ezhizao.framework.web.controller.BaseController;
 import cn.ezhizao.framework.web.domain.AjaxResult;
 import cn.ezhizao.project.business.order.domain.OrderExcelImportLoopModel;
+import cn.ezhizao.project.business.order.service.IBizArchiveInputService;
 import cn.ezhizao.project.business.upgrade.domain.BizWorkOrderUpdate;
 import cn.ezhizao.project.business.upgrade.service.IBizArchiveInputTempService;
 import cn.ezhizao.project.business.upgrade.service.IBizWorkOrderUpdateService;
@@ -34,7 +35,9 @@ import java.util.concurrent.TimeUnit;
 public class crmUpgradeController extends BaseController {
 
     @Resource
-    private IBizArchiveInputTempService bizArchiveInputService;
+    private IBizArchiveInputTempService bizArchiveInputTempService;
+    @Resource
+    private IBizArchiveInputService inputService;
     @Resource
     private IBizWorkOrderUpdateService bizWorkOrderUpdateService;
     @Resource
@@ -61,7 +64,7 @@ public class crmUpgradeController extends BaseController {
             if (!names.containsAll(excelHeaders)) {
                 return error("导入数据与模板不匹配!");
             }
-            String message = bizArchiveInputService.importLoop(orderList, SecurityUtils.getUserId(), getTenantId() == null ? 0 : getTenantId());
+            String message = bizArchiveInputTempService.importLoop(orderList, SecurityUtils.getUserId(), getTenantId() == null ? 0 : getTenantId());
             return success(message);
         }catch (Exception e){
             logger.error(e.getMessage());
@@ -83,10 +86,15 @@ public class crmUpgradeController extends BaseController {
             lock.lock(8,8,TimeUnit.MINUTES);
             Long tenantId = 0L;
             tenantId = getTenantId();
-            bizArchiveInputService.inputUpgrade(tenantId);
+            bizArchiveInputTempService.inputUpgrade(tenantId);
             List<BizWorkOrder> waitingForUpgradingList = bizWorkOrderService.lambdaQuery().eq(BizWorkOrder::getTenantId,tenantId).list();
             bizWorkOrderUpdateService.workerUpgrade(waitingForUpgradingList,tenantId);
             tenantService.completeUpgrade(tenantId,1L);
+            //升级完成需要生成循环任务
+            //List<BizWorkOrderUpdate> bizWorkOrderUpdates = bizWorkOrderUpdateService.lambdaQuery().eq(BizWorkOrderUpdate::getIsNew,1).list();
+            List<BizWorkOrder> bizWorkOrderList = bizWorkOrderUpdateService.getNewOrder();
+            bizWorkOrderList.forEach(order->inputService.addLoopTasks(order));
+            //工单列表页需要添加执行人的sql
         }catch (Exception e){
             logger.error(e.getMessage());
             return error("错误请联系管理员");

+ 1 - 0
src/main/java/cn/ezhizao/project/business/upgrade/mapper/BizWorkOrderUpdateMapper.java

@@ -34,4 +34,5 @@ public interface BizWorkOrderUpdateMapper extends BaseMapper<BizWorkOrderUpdate>
     List<BizWorkOrderUpdate> gettoUpLoadList(BizWorkOrderUpdate bizWorkOrder);
     List<BizWorkOrder> selectByUpgradeId(BizWorkOrder query);
     Long getToUpLoadCount(BizWorkOrderUpdate bizWorkOrder);
+    List<BizWorkOrder> getNewOrder();
 }

+ 1 - 0
src/main/java/cn/ezhizao/project/business/upgrade/service/IBizWorkOrderUpdateService.java

@@ -35,4 +35,5 @@ public interface IBizWorkOrderUpdateService extends IService<BizWorkOrderUpdate>
 
     void workerUpgrade(List<BizWorkOrder> bizWorkOrder, Long tenantId);
     Long getToUpLoadCount(BizWorkOrderUpdate bizWorkOrder);
+    List<BizWorkOrder> getNewOrder();
 }

+ 98 - 72
src/main/java/cn/ezhizao/project/business/upgrade/service/impl/BizArchiveInputTempServiceImpl.java

@@ -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);

+ 6 - 0
src/main/java/cn/ezhizao/project/business/upgrade/service/impl/BizWorkOrderUpdateServiceImpl.java

@@ -1,6 +1,7 @@
 package cn.ezhizao.project.business.upgrade.service.impl;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import javax.annotation.Resource;
 
@@ -89,4 +90,9 @@ public class BizWorkOrderUpdateServiceImpl  extends ServiceImpl<BizWorkOrderUpda
     public Long getToUpLoadCount(BizWorkOrderUpdate bizWorkOrder) {
         return bizWorkOrderUpdateMapper.getToUpLoadCount(bizWorkOrder);
     }
+
+    @Override
+    public List<BizWorkOrder> getNewOrder() {
+        return bizWorkOrderUpdateMapper.getNewOrder();
+    }
 }

+ 4 - 0
src/main/resources/mybatis/business/BizWorkOrderUpdateMapper.xml

@@ -86,6 +86,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
             orderupdate.id is null and t1.type = 1
             <if test="tenantId != null "> AND t1.tenant_id = #{tenantId}</if>
+            <if test="companyName != null and companyName != '' "> AND t2.name like concat('%', #{companyName}, '%')</if>
         </trim>
     </select>
     <select id="getToUpLoadCount" parameterType="BizWorkOrderUpdate" resultType="java.lang.Long">
@@ -118,4 +119,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        <!-- 删除条件为其他外键可以在这里加 -->
         </trim>
     </delete>
+    <select id="getNewOrder" resultType="cn.ezhizao.project.business.workOrder.domain.BizWorkOrder">
+        select *from biz_work_order_update where is_new = 1
+    </select>
 </mapper>