ly 11 сар өмнө
parent
commit
518d31b837

+ 3 - 0
src/main/java/cn/ezhizao/project/business/entrust/mapper/BizEntrustMapper.java

@@ -1,8 +1,10 @@
 package cn.ezhizao.project.business.entrust.mapper;
 
+import java.util.Date;
 import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import cn.ezhizao.project.business.entrust.domain.BizEntrust;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 委托Mapper接口
@@ -26,4 +28,5 @@ public interface BizEntrustMapper extends BaseMapper<BizEntrust>
      * @return 删除结果
     */
     public int physicalDelete(BizEntrust bizEntrust);
+    int deleteByDate(@Param("workOrderId")Long workOrderId, @Param("endDate") Date endDate, @Param("taskTypeId")Long taskTypeId, @Param("updaterId")Long updaterId);
 }

+ 1 - 1
src/main/java/cn/ezhizao/project/business/order/controller/BizArchiveInputController.java

@@ -169,7 +169,7 @@ public class BizArchiveInputController extends BaseController {
     /**
      * 获取档案入库详细信息
      */
-    @PreAuthorize("@ss.hasPermi('business:archive:order:edit')")
+    @PreAuthorize("@ss.hasPermi('business:archive:order:list')")
     @GetMapping(value = "/{id}")
     public AjaxResult getInfo(@PathVariable("id") Long id) {
         return success(getById(id));

+ 4 - 0
src/main/java/cn/ezhizao/project/business/order/mapper/BizArchiveInputMapper.java

@@ -1,10 +1,12 @@
 package cn.ezhizao.project.business.order.mapper;
 
+import java.util.Date;
 import java.util.List;
 
 import cn.ezhizao.project.business.order.domain.BizArchiveInput;
 import cn.ezhizao.project.business.order.domain.vo.InputVo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 档案入库Mapper接口
@@ -32,4 +34,6 @@ public interface BizArchiveInputMapper extends BaseMapper<BizArchiveInput>
     int removeByIds(List<Long> ids);
 
     List<BizArchiveInput> getListByInput(InputVo bizArchiveInput);
+
+    int deleteByDate(@Param("workOrderId")Long workOrderId, @Param("endDate")Date endDate, @Param("taskTypeId")Long taskTypeId,@Param("updaterId")Long updaterId);
 }

+ 4 - 0
src/main/java/cn/ezhizao/project/business/order/service/impl/BizArchiveInputServiceImpl.java

@@ -609,9 +609,13 @@ public class BizArchiveInputServiceImpl extends ServiceImpl<BizArchiveInputMappe
                             // 不停止工单 只修改工单完成时间
                             l.setMonthNum(months);
                             l.setEndMonth(endDate);
+                            l.setIsContinue(0);
+                            // 当前这个工单所对应的委托根据endDate去查询,查询条件是大于endDate的,更新字段deleted为1
+                            bizArchiveInputMapper.deleteByDate(l.getId(),endDate,l.getTaskTypeId(),SecurityUtils.getUserId());
                             // 旧任务明细 停止
                             details.stream().filter(v -> v.getWorkOrderId().equals(l.getId())).forEach(v -> v.setIsStop(1));
                         }
+
                     } else {
                         l.setIsStop(1);
                         l.setIsContinue(0);

+ 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);
+
 }

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

@@ -1,14 +1,20 @@
 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.entrust.mapper.BizEntrustMapper;
+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 +25,17 @@ 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;
+    @Resource
+    private BizEntrustMapper bizEntrustMapper;
+    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 +72,37 @@ public class BizWorkOrderServiceImpl  extends ServiceImpl<BizWorkOrderMapper, Bi
         return bizWorkOrderMapper.stopTasks(tableValues);
     }
 
+    @Override
+    public void continueStop(List<BizWorkOrder> list) {
+
+        for(BizWorkOrder bizWorkOrder : list){
+//            Date endMonth = bizWorkOrder.getEndMonth();
+            //工单实际结束时间,代理记账要多一个月
+            Date endDate;
+            LocalDate now = LocalDate.now();
+            // 获取上一个月的第一天
+            LocalDate firstDayOfLastMonth = now.minusMonths(1).withDayOfMonth(1);
+            LocalDate firstDayOfMonth = now.withDayOfMonth(1);
+            if (bizWorkOrder.getTaskTypeId()==1){
+                // 将 LocalDate 对象转换为 Date 对象
+                endDate = Date.from(firstDayOfLastMonth.atStartOfDay(ZoneId.systemDefault()).toInstant());
+                if(endDate.compareTo(bizWorkOrder.getEndMonth())>0){
+                    //endDate = Date.from(firstDayOfMonth.atStartOfDay(ZoneId.systemDefault()).toInstant());
+                    bizEntrustMapper.deleteByDate(bizWorkOrder.getId(),endDate,bizWorkOrder.getTaskTypeId(), SecurityUtils.getUserId());
+                }
+            }else {
+                // 将 LocalDate 对象转换为 Date 对象
+                endDate = Date.from(firstDayOfMonth.atStartOfDay(ZoneId.systemDefault()).toInstant());
+                if(endDate.compareTo(bizWorkOrder.getEndMonth())>0){
+                    bizEntrustMapper.deleteByDate(bizWorkOrder.getId(),endDate,bizWorkOrder.getTaskTypeId(), SecurityUtils.getUserId());
+                }
+            }
+        }
+    }
+
     @Override
     public int setContinue(List<Long> ids, Integer state) {
+
         return bizWorkOrderMapper.setContinue(ids, state);
     }
 
@@ -76,5 +120,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;
+    }
 }

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

@@ -196,7 +196,12 @@
             #{id}
         </foreach>
     </update>
-
+    <update id="deleteByDate">
+        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} ]]>
+    </update>
     <delete id="physicalDelete">
         DELETE FROM biz_archive_input
         <where>

+ 6 - 1
src/main/resources/mybatis/business/BizEntrustMapper.xml

@@ -23,7 +23,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             </if>
         </trim>
     </select>
-
+    <update id="deleteByDate">
+        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} ]]>
+    </update>
     <delete id="physicalDelete">
         DELETE FROM biz_entrust
         <trim prefix=" WHERE" suffix="" suffixOverrides="AND">

+ 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>