ly před 1 rokem
rodič
revize
99d851f426

+ 14 - 0
src/main/java/cn/ezhizao/fegin/FilterRequest.java

@@ -0,0 +1,14 @@
+package cn.ezhizao.fegin;
+
+import lombok.Data;
+
+import java.sql.Date;
+import java.util.List;
+
+@Data
+public class FilterRequest {
+    private List<Long> workOrderIds;
+    private Date date;
+
+
+}

+ 3 - 2
src/main/java/cn/ezhizao/fegin/IFeignClient.java

@@ -8,14 +8,15 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.sql.Date;
 import java.util.List;
 import java.util.Map;
 
 @FeignClient(name = "ezhizao-yzbh-production")
 public interface IFeignClient {
 
-    @PostMapping("/business/salary/rpc/abc")
-   String filterCompletedOrders(@RequestBody List<Long> workOrderIds);
+    @PostMapping("/business/salary/rpc/filterCompletedOrders")
+   String filterCompletedOrders(@RequestBody FilterRequest request);
 
 
 

+ 2 - 0
src/main/java/cn/ezhizao/project/business/entrust/domain/BizEntrust.java

@@ -83,5 +83,7 @@ public class BizEntrust extends BaseEntity
     private Date workMonthFrom;
     @TableField(exist = false)
     private Date workMonthTo;
+    @TableField(exist = false)
+    private Long examineId;
 
 }

+ 152 - 16
src/main/java/cn/ezhizao/project/business/entrustExamine/controller/BizEntrustExamineController.java

@@ -1,13 +1,27 @@
 package cn.ezhizao.project.business.entrustExamine.controller;
 
-import java.util.List;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 
 import cn.ezhizao.common.utils.poi.ExcelUtil;
+import cn.ezhizao.project.business.entrust.domain.BizEntrust;
+import cn.ezhizao.project.business.entrust.service.IBizEntrustService;
 import cn.ezhizao.project.business.entrustExamine.domain.BizEntrustExamine;
+import cn.ezhizao.project.business.entrustExamine.domain.vo.RefuseVo;
 import cn.ezhizao.project.business.entrustExamine.service.IBizEntrustExamineService;
+import cn.ezhizao.project.system.domain.SysUser;
+
+import cn.ezhizao.project.system.service.ISysUserService;
+import cn.hutool.core.date.DateField;
+import cn.hutool.core.date.DateTime;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
@@ -30,32 +44,42 @@ import cn.ezhizao.framework.web.page.TableDataInfo;
  */
 @RestController
 @RequestMapping("/business/examine")
-public class BizEntrustExamineController extends BaseController
-{
+public class BizEntrustExamineController extends BaseController {
     @Resource
     private IBizEntrustExamineService bizEntrustExamineService;
+    @Resource
+    IBizEntrustService bizEntrustService;
+
 
+    @Resource
+    private ISysUserService userService;
     /**
      * 查询企业租户列表
      */
     @PreAuthorize("@ss.hasPermi('business:examine:list')")
     @GetMapping("/list")
-    public TableDataInfo list(BizEntrustExamine bizEntrustExamine) throws NoSuchFieldException, IllegalAccessException
-    {
+    public TableDataInfo list(BizEntrustExamine bizEntrustExamine) throws NoSuchFieldException, IllegalAccessException {
+        bizEntrustExamine.setEntrustId(getTenantId());
         setTenantId(bizEntrustExamine);
         startPage();
         List<BizEntrustExamine> list = bizEntrustExamineService.getList(bizEntrustExamine);
         return getDataTable(list);
     }
 
+    @PostMapping("/refuse")
+    public AjaxResult refuse(@RequestBody  BizEntrustExamine bizEntrustExamine) {
+        bizEntrustExamine.setStatus(2);
+        bizEntrustExamineService.updateById(bizEntrustExamine);
+        return AjaxResult.success();
+    }
+
     /**
      * 导出企业租户列表
      */
     @PreAuthorize("@ss.hasPermi('business:examine:export')")
     @Log(title = "企业租户", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, BizEntrustExamine bizEntrustExamine) throws NoSuchFieldException, IllegalAccessException
-    {
+    public void export(HttpServletResponse response, BizEntrustExamine bizEntrustExamine) throws NoSuchFieldException, IllegalAccessException {
         setTenantId(bizEntrustExamine);
         List<BizEntrustExamine> list = bizEntrustExamineService.getList(bizEntrustExamine);
         ExcelUtil<BizEntrustExamine> util = new ExcelUtil<BizEntrustExamine>(BizEntrustExamine.class);
@@ -67,8 +91,7 @@ public class BizEntrustExamineController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('business:examine:query')")
     @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
         return success(bizEntrustExamineService.getById(id));
     }
 
@@ -78,8 +101,7 @@ public class BizEntrustExamineController extends BaseController
     @PreAuthorize("@ss.hasPermi('business:examine:add')")
     @Log(title = "企业租户", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody BizEntrustExamine bizEntrustExamine) throws NoSuchFieldException, IllegalAccessException
-    {
+    public AjaxResult add(@RequestBody BizEntrustExamine bizEntrustExamine) throws NoSuchFieldException, IllegalAccessException {
         setTenantId(bizEntrustExamine);
         return toAjax(bizEntrustExamineService.save(bizEntrustExamine));
     }
@@ -90,8 +112,7 @@ public class BizEntrustExamineController extends BaseController
     @PreAuthorize("@ss.hasPermi('business:examine:edit')")
     @Log(title = "企业租户", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody BizEntrustExamine bizEntrustExamine) throws NoSuchFieldException, IllegalAccessException
-    {
+    public AjaxResult edit(@RequestBody BizEntrustExamine bizEntrustExamine) throws NoSuchFieldException, IllegalAccessException {
         setTenantId(bizEntrustExamine);
         return toAjax(bizEntrustExamineService.updateById(bizEntrustExamine));
     }
@@ -101,9 +122,124 @@ public class BizEntrustExamineController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('business:examine:remove')")
     @Log(title = "企业租户", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable List<Long> ids)
-    {
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable List<Long> ids) {
         return toAjax(bizEntrustExamineService.removeBatchByIds(ids));
     }
+
+
+
+
+    @PostMapping("/agree")
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult agree(@RequestBody List<Long> ids) throws ParseException {
+        //下月
+        List<BizEntrustExamine> nextFlagOneList = new ArrayList<>();
+        //本月
+        List<BizEntrustExamine> flagEmptyList = new ArrayList<>();
+        List<BizEntrustExamine> list = bizEntrustExamineService
+                .list(new LambdaQueryWrapper<BizEntrustExamine>().in(BizEntrustExamine::getId, ids));
+        for (BizEntrustExamine bizEntrustExamine : list) {
+            if (bizEntrustExamine.getNextFlag() == 1){
+                nextFlagOneList.add(bizEntrustExamine);
+            }else {
+                flagEmptyList.add(bizEntrustExamine);
+            }
+        }
+
+        if (!CollectionUtils.isEmpty(nextFlagOneList)){
+            for (BizEntrustExamine item : nextFlagOneList) {
+                BizEntrust bizEntrust = new BizEntrust();
+                bizEntrust.setWorkOrderIds(Collections.singletonList(item.getWorkOrderId()));
+                String str = item.getCurrentPeriod();
+                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                java.util.Date d = null;
+                try {
+                    d = format.parse(str);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+                java.sql.Date date = new java.sql.Date(d.getTime());
+                bizEntrust.setCurrentMonth(date);
+                extracted1(bizEntrust);
+            }
+        }
+
+        if (!CollectionUtils.isEmpty(flagEmptyList)){
+            for (BizEntrustExamine bizEntrustExamine : flagEmptyList) {
+                BizEntrust bizEntrust = new BizEntrust();
+                bizEntrust.setWorkOrderIds(Collections.singletonList(bizEntrustExamine.getWorkOrderId()));
+
+                String str = bizEntrustExamine.getCurrentPeriod();
+                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                java.util.Date d = null;
+                try {
+                    d = format.parse(str);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+                java.sql.Date date = new java.sql.Date(d.getTime());
+                bizEntrust.setCurrentMonth(date);
+                extracted(bizEntrust);
+            }
+        }
+
+        return AjaxResult.success();
+    }
+
+    private void extracted1(BizEntrust bizEntrust) {
+        List<BizEntrust> entrustList = bizEntrustService.getList(bizEntrust);
+        BizEntrustExamine bizEntrustExamine = new BizEntrustExamine();
+        bizEntrustExamine.setId(bizEntrust.getExamineId());
+        bizEntrustExamine.setStatus(1);
+        bizEntrustExamineService.updateById(bizEntrustExamine);
+        bizEntrustService.removeByIds(entrustList.stream().map(BizEntrust::getId).collect(Collectors.toList()));
+    }
+
+    private void extracted(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> list = bizEntrustService.list(new LambdaQueryWrapper<BizEntrust>()
+                .eq(BizEntrust::getDeleted, 0)
+                .eq(BizEntrust::getWorkMonth, bizEntrust.getWorkMonth())
+                .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;
+        }
+        BizEntrustExamine bizEntrustExamine = new BizEntrustExamine();
+        bizEntrustExamine.setId(bizEntrust.getExamineId());
+        bizEntrustExamine.setStatus(1);
+        bizEntrustExamineService.updateById(bizEntrustExamine);
+        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())));
+    }
+
+
+    @PostMapping("/refuseIds")
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult refuseIds(@RequestBody RefuseVo vo) {
+        List<Long> ids = vo.getIds();
+        List<BizEntrustExamine> list = ids.stream().map(id -> {
+            BizEntrustExamine bizEntrustExamine = new BizEntrustExamine();
+            bizEntrustExamine.setId(id);
+            bizEntrustExamine.setStatus(2);
+            bizEntrustExamine.setRefuseReason(vo.getReason());
+            return bizEntrustExamine;
+        }).collect(Collectors.toList());
+        bizEntrustExamineService.updateBatchById(list);
+        return AjaxResult.success();
+    }
 }

+ 50 - 14
src/main/java/cn/ezhizao/project/business/entrustExamine/domain/BizEntrustExamine.java

@@ -1,11 +1,17 @@
 package cn.ezhizao.project.business.entrustExamine.domain;
 
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import cn.ezhizao.framework.web.domain.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import io.swagger.annotations.ApiModelProperty;
 import cn.ezhizao.framework.aspectj.lang.annotation.Excel;
 
+import java.sql.Date;
+import java.util.List;
+
 /**
  * 企业租户对象 biz_entrust_examine
  *
@@ -14,48 +20,78 @@ import cn.ezhizao.framework.aspectj.lang.annotation.Excel;
  */
 @Data
 @TableName(value = "biz_entrust_examine")
-public class BizEntrustExamine extends BaseEntity
-{
+public class BizEntrustExamine extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-    /** $column.columnComment */
-    @ApiModelProperty(value = "${comment}")
     private Long workOrderId;
 
-    /** $column.columnComment */
-    @ApiModelProperty(value = "${comment}")
+
     private Long entrustId;
 
-    /** $column.columnComment */
-    @ApiModelProperty(value = "${comment}")
     private Long companyId;
 
-    /** $column.columnComment */
     @ApiModelProperty(value = "${comment}")
     private Long taskTypeId;
 
-    /** 所属期 */
+    /**
+     * 所属期
+     */
     @Excel(name = "所属期")
     @ApiModelProperty(value = "所属期")
     private String currentPeriod;
 
-    /** 委托来源 */
+    /**
+     * 委托来源
+     */
     @Excel(name = "委托来源")
     @ApiModelProperty(value = "委托来源")
     private Long entrustCome;
 
-    /** 取消理由 */
+    /**
+     * 取消理由
+     */
     @Excel(name = "取消理由")
     @ApiModelProperty(value = "取消理由")
     private String cancelReason;
 
-    /** 1同意 2拒绝 */
+    /**
+     * 1同意 2拒绝
+     */
     @Excel(name = "1同意 2拒绝")
     @ApiModelProperty(value = "1同意 2拒绝")
     private Integer status;
 
-    /** 租户外键 */
+    /**
+     * 租户外键
+     */
     @ApiModelProperty(value = "1同意 2拒绝")
     private Long tenantId;
 
+    private String refuseReason;
+
+    @TableField(exist = false)
+    private List<Long> workOrderIds;
+
+    @TableField(exist = false)
+    private Date workMonth;
+
+    @TableField(exist = false)
+    private String fromTenant;
+
+    @TableField(exist = false)
+    private String socialCreditCode;
+
+    @TableField(exist = false)
+    private String taskName;
+
+    @TableField(exist = false)
+    private String companyName;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
+    @TableField(value = "create_time", fill = FieldFill.INSERT)
+    private java.util.Date createTime;
+
+    private Integer nextFlag;
+    @TableField(exist = false)
+    private List<String> dateFilter;
 }

+ 11 - 0
src/main/java/cn/ezhizao/project/business/entrustExamine/domain/vo/RefuseVo.java

@@ -0,0 +1,11 @@
+package cn.ezhizao.project.business.entrustExamine.domain.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class RefuseVo {
+    private List<Long> ids;
+    private String reason;
+}

+ 86 - 20
src/main/java/cn/ezhizao/project/business/workOrder/controller/WorkOrderCurrentController.java

@@ -2,6 +2,7 @@ package cn.ezhizao.project.business.workOrder.controller;
 
 import cn.ezhizao.common.exception.ServiceException;
 import cn.ezhizao.common.utils.poi.ExcelUtil;
+import cn.ezhizao.fegin.FilterRequest;
 import cn.ezhizao.fegin.IFeignClient;
 import cn.ezhizao.framework.aspectj.lang.annotation.Anonymous;
 import cn.ezhizao.framework.aspectj.lang.annotation.Log;
@@ -14,6 +15,7 @@ import cn.ezhizao.project.business.company.service.IBizCompanyService;
 import cn.ezhizao.project.business.entrust.domain.BizEntrust;
 import cn.ezhizao.project.business.entrust.service.IBizEntrustService;
 import cn.ezhizao.project.business.entrustExamine.domain.BizEntrustExamine;
+import cn.ezhizao.project.business.entrustExamine.service.IBizEntrustExamineService;
 import cn.ezhizao.project.business.workOrder.domain.BizWorkOrder;
 import cn.ezhizao.project.business.workOrder.domain.BizWorkOrderExport;
 import cn.ezhizao.project.business.workOrder.domain.vo.Condition;
@@ -40,6 +42,7 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.sql.Date;
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.Month;
 import java.util.*;
@@ -73,6 +76,8 @@ public class WorkOrderCurrentController extends BaseController {
     private IFeignClient entrustFeignClient;
 
 
+    @Resource
+    private IBizEntrustExamineService entrustExamineService;
     /**
      * 查询工单信息列表
      */
@@ -91,6 +96,10 @@ public class WorkOrderCurrentController extends BaseController {
         List<BizEntrust> entrusts = bizEntrustService.getList(bizEntrust);
         list.forEach(l -> {
             l.setEntrust(entrusts.stream().filter(v -> v.getWorkOrderId().equals(l.getId())).findFirst().orElse(null));
+            BizEntrustExamine one = entrustExamineService.getOne(new LambdaQueryWrapper<BizEntrustExamine>()
+                    .eq(BizEntrustExamine::getWorkOrderId, l.getId())
+                    .orderByDesc(BizEntrustExamine::getCreateTime).last("limit 1"));
+            l.setEntrustExamine(one);
         });
         return getDataTable(list);
     }
@@ -494,12 +503,48 @@ public class WorkOrderCurrentController extends BaseController {
         // 保存
         return (entrustList.isEmpty() || bizEntrustService.updateBatchById(entrustList)) && (addEntrusts.isEmpty() || bizEntrustService.saveBatch(addEntrusts));
     }
-
-    @PreAuthorize("@ss.hasPermi('business:entrust:workOrder:current:edit')")
+    @PostMapping("/saveExamine")
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult saveExamine(@RequestBody BizEntrustExamine entrustExamine) {
+        List<BizEntrustExamine> entrustExamineList = entrustExamine.getWorkOrderIds().stream().map(item -> {
+            BizEntrustExamine bizEntrustExamine = new BizEntrustExamine();
+            bizEntrustExamine.setWorkOrderId(item);
+            BizEntrust bizEntrust1 = new BizEntrust();
+            bizEntrust1.setWorkOrderId(item);
+            bizEntrust1.setWorkMonth(entrustExamine.getWorkMonth());
+            List<BizEntrust> entrustList = bizEntrustService.getList(bizEntrust1);
+            bizEntrustExamine.setEntrustId(entrustList.get(0).getToTenantId());
+            bizEntrustExamine.setCompanyId(entrustList.get(0).getCompanyId());
+            bizEntrustExamine.setTaskTypeId(entrustList.get(0).getTaskTypeId());
+            bizEntrustExamine.setCurrentPeriod(entrustExamine.getWorkMonth().toString());
+            bizEntrustExamine.setEntrustCome(entrustList.get(0).getFromTenantId());
+            bizEntrustExamine.setCancelReason(entrustExamine.getCancelReason());
+            bizEntrustExamine.setStatus(0);
+           if (entrustExamine.getNextFlag() != null && entrustExamine.getNextFlag() == 1){
+               bizEntrustExamine.setNextFlag(1);
+           }
+            return bizEntrustExamine;
+        }).collect(Collectors.toList());
+        entrustExamineService.saveBatch(entrustExamineList);
+        return AjaxResult.success();
+    }
     @PostMapping("/delEntrust")
-
     public AjaxResult delEntrust(@RequestBody BizEntrust bizEntrust) {
-        String s =  entrustFeignClient.filterCompletedOrders(bizEntrust.getWorkOrderIds());
+        List<Long> workOrderIds1 = bizEntrust.getWorkOrderIds();
+        for (Long id : workOrderIds1) {
+            BizEntrustExamine one = entrustExamineService.getOne(new LambdaQueryWrapper<BizEntrustExamine>()
+                    .eq(BizEntrustExamine::getWorkOrderId, id)
+                    .orderByDesc(BizEntrustExamine::getCreateTime).last("limit 1"));
+            if(one!= null && one.getStatus().equals(0)){
+
+                String name = bizCompanyService.getById(one.getCompanyId()).getName();
+                throw new RuntimeException(name+"工单正在取消委托审核中");
+            }
+        }
+        FilterRequest filterRequest = new FilterRequest();
+        filterRequest.setDate(bizEntrust.getWorkMonth());
+        filterRequest.setWorkOrderIds(workOrderIds1);
+        String s =  entrustFeignClient.filterCompletedOrders(filterRequest);
         Map<String,List<Long>> map = JSON.parseObject(s, Map.class);
         List<Long> workOrderIds = map.get("workOrderIds");
         List<Long> oneList = map.get("oneList");
@@ -528,23 +573,44 @@ public class WorkOrderCurrentController extends BaseController {
         return AjaxResult.success("操作成功",hashMap);
     }
 
+    @PostMapping("/okDelEntrust")
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult okDelEntrust(@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> list = bizEntrustService.list(new LambdaQueryWrapper<BizEntrust>()
+                .eq(BizEntrust::getDeleted, 0)
+                .eq(BizEntrust::getWorkMonth, bizEntrust.getWorkMonth())
+                .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;
+        }
+        BizEntrustExamine bizEntrustExamine = new BizEntrustExamine();
+        bizEntrustExamine.setId(bizEntrust.getExamineId());
+        bizEntrustExamine.setStatus(1);
+        entrustExamineService.updateById(bizEntrustExamine);
+        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);
+    }
+
 
-    //            oneList.stream().map( one->{
-//                BizEntrustExamine bizEntrustExamine = new BizEntrustExamine();
-//                bizEntrustExamine.setWorkOrderId(one);
-//                BizEntrust bizEntrust1 = new BizEntrust();
-//                bizEntrust1.setWorkOrderId(one);
-//                bizEntrust1.setWorkMonth(bizEntrust.getWorkMonth());
-//                List<BizEntrust> entrustList = bizEntrustService.getList(bizEntrust1);
-//                bizEntrustExamine.setEntrustId(entrustList.get(0).getToTenantId());
-//                bizEntrustExamine.setCompanyId(entrustList.get(0).getCompanyId());
-//                bizEntrustExamine.setTaskTypeId(entrustList.get(0).getTaskTypeId());
-//                bizEntrustExamine.setCurrentPeriod(bizEntrust.getWorkMonth().toString());
-//                bizEntrustExamine.setEntrustCome(entrustList.get(0).getFromTenantId());
-//                bizEntrustExamine.setCancelReason(null);
-//                bizEntrustExamine.setStatus(0);
-//                return bizEntrustExamine;
-//            }).collect(Collectors.toList());
     public static List<Long> mergeLists(List<Long>... lists) {
         List<Long> result = new ArrayList<>();
         for (List<Long> list : lists) {

+ 78 - 2
src/main/java/cn/ezhizao/project/business/workOrder/controller/WorkOrderNextController.java

@@ -1,14 +1,19 @@
 package cn.ezhizao.project.business.workOrder.controller;
 
 import cn.ezhizao.common.utils.poi.ExcelUtil;
+import cn.ezhizao.fegin.FilterRequest;
+import cn.ezhizao.fegin.IFeignClient;
 import cn.ezhizao.framework.aspectj.lang.annotation.Log;
 import cn.ezhizao.framework.aspectj.lang.enums.BusinessType;
 import cn.ezhizao.framework.web.controller.BaseController;
 import cn.ezhizao.framework.web.domain.AjaxResult;
 import cn.ezhizao.framework.web.domain.server.Sys;
 import cn.ezhizao.framework.web.page.TableDataInfo;
+import cn.ezhizao.project.business.company.service.IBizCompanyService;
 import cn.ezhizao.project.business.entrust.domain.BizEntrust;
 import cn.ezhizao.project.business.entrust.service.IBizEntrustService;
+import cn.ezhizao.project.business.entrustExamine.domain.BizEntrustExamine;
+import cn.ezhizao.project.business.entrustExamine.service.IBizEntrustExamineService;
 import cn.ezhizao.project.business.workOrder.domain.BizWorkOrder;
 import cn.ezhizao.project.business.workOrder.domain.BizWorkOrderExport;
 import cn.ezhizao.project.business.workOrder.service.IBizWorkOrderService;
@@ -18,8 +23,10 @@ import cn.ezhizao.project.tenant.domain.Tenant;
 import cn.ezhizao.project.tenant.service.ITenantService;
 import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
+import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -48,7 +55,14 @@ public class WorkOrderNextController extends BaseController {
     IBizEntrustService bizEntrustService;
     @Resource
     ITenantService tenantService;
+    @Resource
+    private IBizEntrustExamineService entrustExamineService;
+
+    @Resource
+    private IBizCompanyService bizCompanyService;
 
+    @Resource
+    private IFeignClient entrustFeignClient;
     /**
      * 查询工单信息列表
      */
@@ -74,6 +88,10 @@ public class WorkOrderNextController extends BaseController {
         List<BizEntrust> entrusts = bizEntrustService.getList(bizEntrust);
         list.forEach(l -> {
             l.setEntrust(entrusts.stream().filter(v -> v.getWorkOrderId().equals(l.getId())).findFirst().orElse(null));
+            BizEntrustExamine one = entrustExamineService.getOne(new LambdaQueryWrapper<BizEntrustExamine>()
+                    .eq(BizEntrustExamine::getWorkOrderId, l.getId())
+                    .orderByDesc(BizEntrustExamine::getCreateTime).last("limit 1"));
+            l.setEntrustExamine(one);
         });
         return getDataTable(list);
     }
@@ -198,16 +216,64 @@ public class WorkOrderNextController extends BaseController {
 
     }
 
-    @PreAuthorize("@ss.hasPermi('business:entrust:workOrder:next:edit')")
     @PostMapping("/delEntrust")
     public AjaxResult delEntrust(@RequestBody BizEntrust bizEntrust) {
+        List<Long> workOrderIds1 = bizEntrust.getWorkOrderIds();
+        for (Long id : workOrderIds1) {
+            BizEntrustExamine one = entrustExamineService.getOne(new LambdaQueryWrapper<BizEntrustExamine>()
+                    .eq(BizEntrustExamine::getWorkOrderId, id)
+                    .orderByDesc(BizEntrustExamine::getCreateTime).last("limit 1"));
+            if(one!= null && one.getStatus().equals(0)){
+
+                String name = bizCompanyService.getById(one.getCompanyId()).getName();
+                throw new RuntimeException(name+"工单正在取消委托审核中");
+            }
+        }
+        FilterRequest filterRequest = new FilterRequest();
+        filterRequest.setDate(bizEntrust.getWorkMonth());
+        filterRequest.setWorkOrderIds(workOrderIds1);
+        String s =  entrustFeignClient.filterCompletedOrders(filterRequest);
+        Map<String,List<Long>> map = JSON.parseObject(s, Map.class);
+        List<Long> workOrderIds = map.get("workOrderIds");
+        List<Long> oneList = map.get("oneList");
+        List<Long> twoList = map.get("twoList");
+        List<Long> threeList = map.get("threeList");
+        boolean status= false;
+        List<Long> finishWorkIds = mergeLists(oneList, twoList, threeList);
+        if (!CollectionUtils.isEmpty(workOrderIds)){
+            bizEntrust.setWorkOrderIds(workOrderIds);
+            bizEntrust.setCurrentMonth(bizEntrust.getCurrentMonth());
+            List<BizEntrust> entrustList = bizEntrustService.getList(bizEntrust);
+            status = bizEntrustService.removeByIds(entrustList.stream().map(BizEntrust::getId).collect(Collectors.toList()));
+        }
+        //说明当前状态工单任务都处于未完成
+        if( CollectionUtils.isEmpty(finishWorkIds) ){
+            // 取消委托
+            return toAjax(status);
+        }
+
+        String companyName = finishWorkIds.stream().map(id -> {
+            Long companyId = bizWorkOrderService.getById(id).getCompanyId();
+            return bizCompanyService.getById(companyId).getName();
+
+        }).collect(Collectors.joining(","));
+        HashMap<String, Object> hashMap = new HashMap<>();
+        hashMap.put("companyName", companyName);
+        hashMap.put("workOrderIds", finishWorkIds);
+        return AjaxResult.success("操作成功",hashMap);
+    }
+    @PostMapping("/okDelEntrust")
+    public AjaxResult okDelEntrust(@RequestBody BizEntrust bizEntrust) {
         bizEntrust.setCurrentMonth(bizEntrust.getCurrentMonth());
         List<BizEntrust> entrustList = bizEntrustService.getList(bizEntrust);
+        BizEntrustExamine bizEntrustExamine = new BizEntrustExamine();
+        bizEntrustExamine.setId(bizEntrust.getExamineId());
+        bizEntrustExamine.setStatus(1);
+        entrustExamineService.updateById(bizEntrustExamine);
         // 取消委托
         return toAjax(bizEntrustService.removeByIds(entrustList.stream().map(BizEntrust::getId).collect(Collectors.toList())));
     }
 
-
     @PreAuthorize("@ss.hasPermi('business:entrust:workOrder:next:edit')")
     @GetMapping("/getFactories")
     public AjaxResult getFactories() {
@@ -233,4 +299,14 @@ public class WorkOrderNextController extends BaseController {
             return success(result);
         }
     }
+
+    public static List<Long> mergeLists(List<Long>... lists) {
+        List<Long> result = new ArrayList<>();
+        for (List<Long> list : lists) {
+            if (list != null) {
+                result.addAll(list);
+            }
+        }
+        return result;
+    }
 }

+ 3 - 0
src/main/java/cn/ezhizao/project/business/workOrder/domain/BizWorkOrder.java

@@ -3,6 +3,7 @@ package cn.ezhizao.project.business.workOrder.domain;
 import cn.ezhizao.framework.aspectj.lang.annotation.Excel;
 import cn.ezhizao.framework.web.domain.BaseEntity;
 import cn.ezhizao.project.business.entrust.domain.BizEntrust;
+import cn.ezhizao.project.business.entrustExamine.domain.BizEntrustExamine;
 import cn.ezhizao.project.business.standardCpmpany.domain.BizStandardCompany;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -255,6 +256,8 @@ public class BizWorkOrder extends BaseEntity {
     private String toAccountName;
     @TableField(exist = false)
     private Date workDate;
+    @TableField(exist = false)
+    private BizEntrustExamine entrustExamine;
 
 
 }

+ 32 - 9
src/main/resources/mybatis/business/BizEntrustExamineMapper.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="cn.ezhizao.project.business.entrustExamine.mapper.BizEntrustExamineMapper">
 
     <resultMap type="cn.ezhizao.project.business.entrustExamine.domain.BizEntrustExamine" id="BizEntrustExamineResult">
@@ -10,14 +10,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 
     <select id="getList" parameterType="BizEntrustExamine" resultMap="BizEntrustExamineResult">
-        SELECT * FROM biz_entrust_examine
+        SELECT
+        t2.NAME as companyName,
+        t2.social_credit_code,
+        t3.name as taskName,
+        t1.current_period,
+        t1.create_time,
+        t4.account_name as fromTenant,
+        t1.cancel_reason,
+        t1.id,
+        t1.work_order_id,
+        t1.`status`,
+        t1.next_flag
+        FROM
+        biz_entrust_examine t1
+        LEFT JOIN biz_company t2 ON t1.company_id = t2.id
+        LEFT JOIN biz_task_type t3 ON t1.task_type_id = t3.id
+        LEFT JOIN biz_tenant t4 on t4.id = t1.entrust_come
         <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
-            deleted = 0
-            <if test="currentPeriod != null  and currentPeriod != ''"> AND current_period = #{currentPeriod}</if>
-            <if test="entrustCome != null  and entrustCome != ''"> AND entrust_come = #{entrustCome}</if>
-            <if test="cancelReason != null  and cancelReason != ''"> AND cancel_reason = #{cancelReason}</if>
-            <if test="status != null "> AND status = #{status}</if>
+            t1.deleted = 0 and t1.entrust_id = #{entrustId}
+            <if test="currentPeriod != null  and currentPeriod != ''">AND t1.current_period LIKE CONCAT('%',#{currentPeriod},'%')</if>
+            <if test="entrustCome != null  and entrustCome != ''">AND t1.entrust_come LIKE CONCAT('%',#{entrustCome},'%') </if>
+            <if test="status != null ">AND t1.status = #{status}</if>
+            <if test="dateFilter!= null and dateFilter.size() ">
+                AND (
+                DATE_FORMAT(t1.create_time,'%Y-%m-%d') &gt;= #{dateFilter[0]}
+                AND
+                DATE_FORMAT(t1.create_time,'%Y-%m-%d') &lt;= #{dateFilter[1]}
+                )
+            </if>
         </trim>
+        order by t1.create_time desc
     </select>
 
     <delete id="physicalDelete">
@@ -26,7 +49,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="id != null">
                 id = #{id} AND
             </if>
-       <!-- 删除条件为其他外键可以在这里加 -->
+            <!-- 删除条件为其他外键可以在这里加 -->
         </trim>
     </delete>
 </mapper>