ly 1 tahun lalu
induk
melakukan
903a36fc0e

+ 52 - 15
src/main/java/cn/ezhizao/project/business/workOrder/controller/WorkOrderCurrentController.java

@@ -19,7 +19,9 @@ import cn.ezhizao.project.business.workOrder.domain.vo.EntrustRes;
 import cn.ezhizao.project.business.workOrder.domain.vo.EntrustVo;
 import cn.ezhizao.project.business.workOrder.service.IBizWorkOrderService;
 import cn.ezhizao.project.system.domain.SysCurrentMonth;
+import cn.ezhizao.project.system.domain.SysUser;
 import cn.ezhizao.project.system.service.ISysCurrentMonthService;
+import cn.ezhizao.project.system.service.ISysUserService;
 import cn.ezhizao.project.tenant.domain.Tenant;
 import cn.ezhizao.project.tenant.service.ITenantService;
 import cn.hutool.core.date.DateField;
@@ -60,7 +62,8 @@ public class WorkOrderCurrentController extends BaseController {
     ITenantService tenantService;
     @Resource
     IBizCompanyService bizCompanyService;
-
+    @Resource
+    private ISysUserService userService;
 
     /**
      * 查询工单信息列表
@@ -82,15 +85,15 @@ public class WorkOrderCurrentController extends BaseController {
 //        if (months.isEmpty()) {
 //            return getDataTable(new ArrayList<>());
 //        } else {
-            BizEntrust bizEntrust = new BizEntrust();
-            bizEntrust.setWorkOrderIds(list.stream().map(BizWorkOrder::getId).collect(Collectors.toList()));
-             bizEntrust.setWorkMonth(DateTime.of(bizWorkOrder.getCurrentMonth()).toSqlDate());
-            List<BizEntrust> entrusts = bizEntrustService.getList(bizEntrust);
+        BizEntrust bizEntrust = new BizEntrust();
+        bizEntrust.setWorkOrderIds(list.stream().map(BizWorkOrder::getId).collect(Collectors.toList()));
+        bizEntrust.setWorkMonth(DateTime.of(bizWorkOrder.getCurrentMonth()).toSqlDate());
+        List<BizEntrust> entrusts = bizEntrustService.getList(bizEntrust);
 //            bizEntrustService.query().in("work_order_id", list.stream().map(BizWorkOrder::getId).collect(Collectors.toList())).eq("work_month", months.get(0).getYear() + "-" + months.get(0).getMonth() + "-01").list();
-            list.forEach(l -> {
-                l.setEntrust(entrusts.stream().filter(v -> v.getWorkOrderId().equals(l.getId())).findFirst().orElse(null));
-            });
-            return getDataTable(list);
+        list.forEach(l -> {
+            l.setEntrust(entrusts.stream().filter(v -> v.getWorkOrderId().equals(l.getId())).findFirst().orElse(null));
+        });
+        return getDataTable(list);
 //        }
     }
 
@@ -187,9 +190,23 @@ public class WorkOrderCurrentController extends BaseController {
     public AjaxResult addEntrust(@RequestBody BizEntrust entrust) {
         // 添加本月
         boolean status = addEntrust(entrust.getWorkOrderIds(), entrust.getWorkMonth(), entrust.getToTenantId());
+        //如果下月工单没有被修改则可以委托
         // 添加下一月
         DateTime currentMonth = DateTime.of(entrust.getWorkMonth());
-        status = status && addEntrust(entrust.getWorkOrderIds(), currentMonth.offset(DateField.MONTH, 1).toSqlDate(), entrust.getToTenantId());
+
+        List<BizEntrust> list = bizEntrustService.list(new LambdaQueryWrapper<BizEntrust>()
+                .eq(BizEntrust::getDeleted, 0)
+                .eq(BizEntrust::getWorkMonth, currentMonth.offset(DateField.MONTH, 1).toSqlDate())
+                .eq(BizEntrust::getFromTenantId, entrust.getFromTenantId())
+                .in(BizEntrust::getWorkOrderId, entrust.getWorkOrderIds()));
+        List<Long> needWorkIds = list.stream().filter(l ->
+                {
+                    Long updaterId = l.getCreatorId();
+                    SysUser sysUser = userService.selectUserById(Long.valueOf(updaterId));
+                    return sysUser == null ? true : false;
+                }
+        ).map(l -> l.getWorkOrderId()).collect(Collectors.toList());
+        status = status && addEntrust(needWorkIds, currentMonth.offset(DateField.MONTH, 1).toSqlDate(), entrust.getToTenantId());
         // 添加委托
         return toAjax(status);
     }
@@ -481,10 +498,29 @@ public class WorkOrderCurrentController extends BaseController {
     public AjaxResult delEntrust(@RequestBody BizEntrust bizEntrust) {
         List<BizEntrust> entrustList = bizEntrustService.getList(bizEntrust);
         DateTime currentMonth = DateTime.of(bizEntrust.getWorkMonth());
+        List<BizEntrust> nextEntrustList = new ArrayList<>();
         bizEntrust.setWorkMonth(currentMonth.offset(DateField.MONTH, 1).toSqlDate());
-        List<BizEntrust> nextEntrustList = bizEntrustService.getList(bizEntrust);
+        List<BizEntrust> list = bizEntrustService.list(new LambdaQueryWrapper<BizEntrust>()
+                .eq(BizEntrust::getDeleted, 0)
+                .eq(BizEntrust::getWorkMonth, currentMonth.offset(DateField.MONTH, 1).toSqlDate())
+                .in(BizEntrust::getWorkOrderId, bizEntrust.getWorkOrderIds()));
+        List<Long> needWorkIds = list.stream().filter(l ->
+                {
+                    Long updaterId = l.getCreatorId();
+                    SysUser sysUser = userService.selectUserById(Long.valueOf(updaterId));
+                    return sysUser == null ? true : false;
+                }
+        ).map(l -> l.getWorkOrderId()).collect(Collectors.toList());
+        if (!needWorkIds.isEmpty()) {
+            bizEntrust.setWorkOrderIds(needWorkIds);
+            nextEntrustList = bizEntrustService.getList(bizEntrust);
+        } else {
+            nextEntrustList = null;
+        }
 
-        boolean status = (entrustList.isEmpty() || bizEntrustService.removeByIds(entrustList.stream().map(BizEntrust::getId).collect(Collectors.toList()))) && (nextEntrustList.isEmpty() || bizEntrustService.removeByIds(nextEntrustList.stream().map(BizEntrust::getId).collect(Collectors.toList())));
+        boolean status = (entrustList.isEmpty() ||
+                bizEntrustService.removeByIds(entrustList.stream().map(BizEntrust::getId).collect(Collectors.toList()))) && (CollectionUtils.isEmpty(nextEntrustList) ||
+                bizEntrustService.removeByIds(nextEntrustList.stream().map(BizEntrust::getId).collect(Collectors.toList())));
         // 取消委托
         return toAjax(status);
     }
@@ -511,7 +547,7 @@ public class WorkOrderCurrentController extends BaseController {
 
         // 获取上月的委托
         List<BizEntrust> entrusts = bizEntrustService.query().eq("tenant_id", getTenantId()).eq("work_month", nextMonthDate.toSqlDate()).list();
-        List<BizEntrust> entr = new ArrayList<>(entrusts) ;
+        List<BizEntrust> entr = new ArrayList<>(entrusts);
         //将到截至月的委托去掉
         for (BizEntrust b : entr) {
             List<BizWorkOrder> workOrder = bizWorkOrderService.query().eq("id", b.getWorkOrderId()).list();
@@ -525,7 +561,7 @@ public class WorkOrderCurrentController extends BaseController {
             calendar.set(Calendar.DAY_OF_MONTH, 1);
             Date currentMonthDate = new java.sql.Date(calendar.getTime().getTime());
             if (!workOrder.isEmpty()) {
-                if(workOrder.get(0).getIsStop() == 1 || (currentMonthDate == workOrder.get(0).getEndMonth())){
+                if (workOrder.get(0).getIsStop() == 1 || (currentMonthDate == workOrder.get(0).getEndMonth())) {
                     entrusts.removeIf(s -> s.getWorkOrderId().equals(b.getWorkOrderId()));
                 }
             }
@@ -605,9 +641,10 @@ public class WorkOrderCurrentController extends BaseController {
         }
 
     }
+
     @Anonymous
     @PostMapping("/test")
-    public void test(@RequestBody List<Tenant> storeList){
+    public void test(@RequestBody List<Tenant> storeList) {
         for (Tenant tenant : storeList) {
             System.out.println(tenant.getId());
             System.out.println(tenant.getAccountName());