Эх сурвалжийг харах

fix:延续设置为0时删除委托

ly 11 сар өмнө
parent
commit
f4e1c78c5f

+ 5 - 0
src/main/java/cn/ezhizao/project/business/workOrder/controller/BizWorkOrderController.java

@@ -355,7 +355,12 @@ public class BizWorkOrderController extends BaseController {
     @Log(title = "修改是否延续", businessType = BusinessType.UPDATE)
     @PreAuthorize("@ss.hasPermi('business:workOrder:continue')")
     @PostMapping(value = "/{ids}/{state}")
+    @Transactional
     public AjaxResult setContract(@PathVariable("ids") List<Long> ids, @PathVariable("state") Integer state) {
+        if(state.equals(0)){
+            List<BizWorkOrder> workOrderList = bizWorkOrderService.query().in("id",ids).list();
+            bizWorkOrderService.continueStop(workOrderList);
+        }
         return toAjax(bizWorkOrderService.setContinue(ids, state));
     }
 

+ 1 - 1
src/main/java/cn/ezhizao/project/business/workOrder/mapper/BizWorkOrderMapper.java

@@ -47,7 +47,7 @@ public interface BizWorkOrderMapper extends BaseMapper<BizWorkOrder>
     public int addSocialSecurity(Long companyId, List<Map<String, Object>> tableValues);
 
     public int stopTasks(List<Map<String, Object>> tableValues);
-
+    public int stopLoopTasks(List<Map<String, Object>> tableValues);
     int setContinue(List<Long> ids, Integer state);
     public void updateByTenantId(@Param("tenantId") Long tenantId);
     List<BizWorkOrder> getList2(BizWorkOrder bizWorkOrder);

+ 2 - 0
src/main/java/cn/ezhizao/project/business/workOrder/service/IBizWorkOrderService.java

@@ -48,9 +48,11 @@ public interface IBizWorkOrderService extends IService<BizWorkOrder>
     public int insertTasks(List<Map<String, Object>> tableValues);
 
     public int stopTasks(List<Map<String, Object>>tableValues);
+    public void continueStop(List<BizWorkOrder> list);
 
     int setContinue(List<Long> ids, Integer state);
     public void updateByTenantId(Long tenantId);
     List<BizWorkOrder> getList2(BizWorkOrder bizWorkOrder);
     void updateByWorkOrderId(List<Long> ids);
+
 }

+ 85 - 3
src/main/java/cn/ezhizao/project/business/workOrder/service/impl/BizWorkOrderServiceImpl.java

@@ -1,14 +1,19 @@
 package cn.ezhizao.project.business.workOrder.service.impl;
 
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.util.*;
+import java.util.stream.Collectors;
 import javax.annotation.Resource;
+
+import cn.ezhizao.common.utils.SecurityUtils;
+import cn.ezhizao.project.business.order.mapper.BizArchiveInputMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import cn.ezhizao.project.business.workOrder.mapper.BizWorkOrderMapper;
 import cn.ezhizao.project.business.workOrder.domain.BizWorkOrder;
 import cn.ezhizao.project.business.workOrder.service.IBizWorkOrderService;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 工单信息Service业务层处理
@@ -19,8 +24,15 @@ import cn.ezhizao.project.business.workOrder.service.IBizWorkOrderService;
 @Service
 public class BizWorkOrderServiceImpl  extends ServiceImpl<BizWorkOrderMapper, BizWorkOrder> implements IBizWorkOrderService
 {
+    @Resource
+    private BizArchiveInputMapper bizArchiveInputMapper;
     @Resource
     private BizWorkOrderMapper bizWorkOrderMapper;
+    final String[] reportTaskTableNames = {"biz_financial_individual_income_tax", "biz_financial_keep_account", "biz_financial_receive_ticket", "biz_financial_report_tax", "biz_financial_salary"};
+
+    final String[] housingFundTaskTableNames = {"biz_housing_fund_confirm", "biz_housing_fund_declare"};
+
+    final String[] socialSecurityTaskTableNames = {"biz_social_security_confirm", "biz_social_security_declare"};
 
     /**
      * 查询工单信息列表
@@ -57,8 +69,33 @@ public class BizWorkOrderServiceImpl  extends ServiceImpl<BizWorkOrderMapper, Bi
         return bizWorkOrderMapper.stopTasks(tableValues);
     }
 
+    @Override
+    public void continueStop(List<BizWorkOrder> list) {
+
+        for(BizWorkOrder bizWorkOrder : list){
+            Date endDate;
+            if (bizWorkOrder.getTaskTypeId()==1){
+                // 获取当前日期的 LocalDate 对象
+                LocalDate now = LocalDate.now();
+                // 获取上一个月的第一天
+                LocalDate firstDayOfLastMonth = now.minusMonths(1).withDayOfMonth(1);
+                // 将 LocalDate 对象转换为 Date 对象
+                endDate = Date.from(firstDayOfLastMonth.atStartOfDay(ZoneId.systemDefault()).toInstant());
+            }else {
+                // 获取当前日期的 LocalDate 对象
+                LocalDate now = LocalDate.now();
+                // 将 LocalDate 对象的日期设置为当前月份的第一天
+                LocalDate firstDayOfMonth = now.withDayOfMonth(1);
+                // 将 LocalDate 对象转换为 Date 对象
+                endDate = Date.from(firstDayOfMonth.atStartOfDay(ZoneId.systemDefault()).toInstant());
+            }
+            bizArchiveInputMapper.deleteByDate(bizWorkOrder.getId(),endDate,bizWorkOrder.getTaskTypeId(), SecurityUtils.getUserId());
+        }
+    }
+
     @Override
     public int setContinue(List<Long> ids, Integer state) {
+
         return bizWorkOrderMapper.setContinue(ids, state);
     }
 
@@ -76,5 +113,50 @@ public class BizWorkOrderServiceImpl  extends ServiceImpl<BizWorkOrderMapper, Bi
         bizWorkOrderMapper.updateByWorkOrderId(ids);
     }
 
+    public boolean stopLoopTasks(BizWorkOrder workOrder) {
+        if (workOrder.getTaskTypeId() == 1L) {
+            return stopReportTask(workOrder);
+        } else if (workOrder.getTaskTypeId() == 2L) {
+            return stopSocialSecurity(workOrder);
+        } else if (workOrder.getTaskTypeId() == 3L) {
+            return stopHousingFund(workOrder);
+        }
+        return true;
+    }
+
+    private boolean stopHousingFund(BizWorkOrder workOrder) {
+        List<Map<String, Object>> maps = Arrays.stream(housingFundTaskTableNames).map(v -> {
+            Map<String, Object> map = new HashMap<>();
+            map.put("tableName", v);
+            map.put("workOrderId", workOrder.getId());
+            map.put("is_continue", 0);
+            return map;
+        }).collect(Collectors.toList());
+        this.stopTasks(maps);
+        return true;
+    }
 
+    private boolean stopSocialSecurity(BizWorkOrder workOrder) {
+        List<Map<String, Object>> maps = Arrays.stream(socialSecurityTaskTableNames).map(v -> {
+            Map<String, Object> map = new HashMap<>();
+            map.put("tableName", v);
+            map.put("workOrderId", workOrder.getId());
+            map.put("is_continue", 0);
+            return map;
+        }).collect(Collectors.toList());
+        this.stopTasks(maps);
+        return true;
+    }
+
+    private boolean stopReportTask(BizWorkOrder workOrder) {
+        List<Map<String, Object>> maps = Arrays.stream(reportTaskTableNames).map(v -> {
+            Map<String, Object> map = new HashMap<>();
+            map.put("tableName", v);
+            map.put("workOrderId", workOrder.getId());
+            map.put("is_continue", 0);
+            return map;
+        }).collect(Collectors.toList());
+        this.stopTasks(maps);
+        return true;
+    }
 }

+ 1 - 1
src/main/resources/mybatis/business/BizArchiveInputMapper.xml

@@ -200,7 +200,7 @@
         update biz_entrust entrust set entrust.deleted = 1,update_time = now(),updater_id = #{updaterId}
         where work_order_id = #{workOrderId}
         and task_type_id = #{taskTypeId}
-        <![CDATA[and current_month > #{endDate} ]]>
+        <![CDATA[and current_month >= #{endDate} ]]>
     </update>
     <delete id="physicalDelete">
         DELETE FROM biz_archive_input

+ 6 - 0
src/main/resources/mybatis/business/BizWorkOrderMapper.xml

@@ -187,6 +187,12 @@
             update ${item.tableName} set is_stop = 1 where work_order_id = #{item.workOrderId}
         </foreach>
     </update>
+<!--    20241114 设置是否延续的时候用的-->
+    <update id="stopLoopTasks">
+        <foreach collection="tableValues" item="item" index="index" separator=";">
+            update ${item.tableName} set is_stop = 1,deleted = 1 where work_order_id = #{item.workOrderId}
+        </foreach>
+    </update>
     <update id="updateByTenantId">
         update biz_work_order set contract_id = 0,contract_detail_id = 0  where tenant_id = #{tenantId}
     </update>