Преглед изворни кода

1. 自动审批通过功能

wangjiang пре 2 година
родитељ
комит
626defc2fe

+ 12 - 0
src/main/java/platform/common/base/service/BaseService.java

@@ -8,6 +8,7 @@ import org.springframework.transaction.annotation.Transactional;
 import platform.common.base.mapper.BaseMapper;
 import platform.common.base.model.BaseEntity;
 import platform.common.base.model.Template;
+import platform.common.util.CommonUtils;
 import platform.common.util.DateUtil;
 import platform.common.util.ShiroUtils;
 import platform.modules.government.dto.GovIndustrialLandSupplyProjectNumDto;
@@ -119,6 +120,17 @@ public abstract class BaseService<T extends BaseEntity> {
         return record.getId();
     }
 
+    public Integer insertAndGetIdV2(T record) {
+        record.setCreate_time(DateUtil.getTimeString(DateUtil.getNowDate()));
+        record.setCreate_by(ShiroUtils.getUserId());
+        if (CommonUtils.isNull(record.getCreate_name())) {
+            record.setCreate_name(ShiroUtils.getUserName());
+        }
+        record.setDel_flag(false);
+        this.mapper.insertUseGeneratedKeys(record);
+        return record.getId();
+    }
+
     /**
      * 新增数据,使用不为null的字段,返回成功的条数
      *

+ 28 - 0
src/main/java/platform/common/util/DateUtil.java

@@ -265,6 +265,34 @@ public class DateUtil {
         return overTimeStr;
     }
 
+    public static Boolean isOverTime(String create_time, Integer overDay) throws ParseException {
+        Boolean isOverTime = false;
+        if (null == overDay) {
+            overDay = 5;
+        }
+        if (StringUtils.isNotBlank(create_time)) {
+            Calendar overTime = Calendar.getInstance();
+            Calendar now = Calendar.getInstance();
+            overTime.setTime(DateUtil.parseTimeStringToDate(create_time, "yyyy-MM-dd HH:mm:ss"));
+            overTime.add(Calendar.DATE, overDay);
+            now.setTime(new Date());
+
+            overTime.set(Calendar.MINUTE, 0);
+            overTime.set(Calendar.SECOND, 0);
+            now.set(Calendar.MINUTE, 0);
+            now.set(Calendar.SECOND, 0);
+
+            //得到两个日期相差的小时数
+            int hours = ((int) (overTime.getTime().getTime() / 1000) - (int) (now.getTime().getTime() / 1000)) / 3600;
+            if (hours / 24 > 0) {
+                isOverTime = false;
+            } else {
+                isOverTime = true;
+            }
+        }
+        return isOverTime;
+    }
+
     //获取审核处理时间 审核时间5天
     public static String getDealTimeStr(String create_time, String deal_time, Integer overDay) throws ParseException {
         String overTimeStr = "";

+ 5 - 0
src/main/java/platform/modules/company/dao/StockLandDao.java

@@ -29,6 +29,8 @@ public interface StockLandDao extends BaseMapper<StockLand>{
 
 	void updateTempporaryStateToNull(Integer id);
 
+	void saveStatus(@Param("stockLand") StockLand stockLand);
+
 
 	String getApplyDate(Integer id);
 
@@ -62,4 +64,7 @@ public interface StockLandDao extends BaseMapper<StockLand>{
 	List<StockLandStatistic> findListByStreetId(@Param("street_id") String street_id, @Param("apply_user_type") Integer applyUserType);
 
 	List<StockLandStatistic> findListByStreetIdAndTime(@Param("street_id") String street_id, @Param("start_time") String startTime ,@Param("end_time") String endTime);
+
+	List<StockLand> findAllNeedJudgeStockLand(@Param("approvalStatus") List<Integer> approvalStatus);
+
 }

+ 3 - 0
src/main/java/platform/modules/company/entity/StockLand.java

@@ -58,6 +58,9 @@ public class StockLand extends BaseEntity {
     @Transient
     private String approve_status_str;
 
+    @Transient
+    private String approvalIds;
+
     @Transient
     private List<StockLandMaterial> applyMaterials;
 

+ 61 - 1
src/main/java/platform/modules/company/service/StockLandService.java

@@ -555,6 +555,14 @@ public class StockLandService extends BaseService<StockLand> {
 		return landApply;
 	}
 
+	public List<StockLand> findAllNeedJudgeStockLand() {
+		List<Integer> approveStatus = new ArrayList<>();
+		approveStatus.add(14);
+		approveStatus.add(3);
+		List<StockLand> stockLandList = stockLandDao.findAllNeedJudgeStockLand(approveStatus);
+		return stockLandList;
+	}
+
 	/**
 	 * @Title: findPageInfo
 	 * @Description: TODO(存量用地 待审核)
@@ -604,7 +612,7 @@ public class StockLandService extends BaseService<StockLand> {
 			condition.setApply_status(applyStatus);
 			condition.setUserId(ShiroUtils.getUserId());
 			PageHelper.startPage(pageNum, pageSize);
-				List<StockLand> stockLands = stockLandDao.findPageInfo(condition);
+			List<StockLand> stockLands = stockLandDao.findPageInfo(condition);
 			/*for (Integer usrId : userIdList) {
 				stockLands = stockLands.stream().filter(stockLand -> !(Arrays.asList(stockLand.getNextChecker().split(",")).contains(String.valueOf(usrId)))).collect(Collectors.toList());
 			}*/
@@ -1523,6 +1531,42 @@ public class StockLandService extends BaseService<StockLand> {
 		return sameCheckers;
 	}
 
+	/**
+	 * 自动审批
+	 * @param id
+	 * @param comment
+	 * @param nextCheckers
+	 * @param approveStatus
+	 * @param opera_type
+	 * @param approvalRound
+	 */
+	public void autoSaveApproval(Integer id, String comment, String currentChecker, String nextCheckers, String beforeApproveStatus,String afterApproveStatus, String opera_type, Integer approvalRound) {
+		Approval approval1 = new Approval();
+		String department = "" ;
+		User currentUser = userService.findById(Integer.parseInt(currentChecker));
+		if(null != currentUser.getDepartment_id()) {
+			Department dept = departmentService.findById(currentUser.getDepartment_id());
+			if(null != dept) {
+				department = dept.getName();
+			}
+		}
+		approval1.setDepartment(department);
+		approval1.setApply_id(id);
+		approval1.setType(Constant.DictionaryType.STOCKLAND);
+		approval1.setApproval_comment(comment);
+		approval1.setBefore_approvalstatus(beforeApproveStatus);
+		approval1.setAfter_approvalstatus(afterApproveStatus);
+		approval1.setDeal_time(DateUtil.getTimeString(new Date()));
+		approval1.setChecker(Integer.valueOf(currentChecker));
+		approval1.setNextchecker(nextCheckers);
+		approval1.setOper_type(opera_type);
+		approval1.setApproval_round(approvalRound);
+		approval1.setCreate_name(currentUser.getUser_name());
+		//保存审核记录
+		approvalService.insertAndGetIdV2(approval1);
+//		updateAttachment(slad, approval1.getId());
+//		return approval1;
+	}
 	public Approval saveApprovalAndUpdateAttach(StockLandApprovalDto slad, int id, String comment, String userIdInThisGroup,String afterStatu,String Oper_type,Integer approval_round) {
 		Approval approval1 = new Approval();
 		String department = "" ;
@@ -1559,6 +1603,17 @@ public class StockLandService extends BaseService<StockLand> {
         return sb.toString();
 	}
 
+
+	public String  findGroupName(String groupName) {
+		Group group =  groupService.findByNameOnly(groupName);
+		List<UserGroup> userGroups = userGroupService.findByGroupId(group.getId());
+		StringBuffer sb = new StringBuffer("");
+		for (UserGroup userGroup : userGroups) {
+			sb.append(userGroup.getUser_id()+",");
+		}
+		return sb.toString();
+	}
+
 	private void updateAttachment(StockLandApprovalDto slad, Integer approval_id) {
 		if(null != slad.getFileDowns() && slad.getFileDowns().size()>0) {
 			for (FileDown file : slad.getFileDowns()) {
@@ -1802,4 +1857,9 @@ public class StockLandService extends BaseService<StockLand> {
     public List<StockLand> findListByCondition(SearchCondition searchCondition) {
 		return stockLandDao.findListByCondition(searchCondition);
     }
+
+
+	public void saveStatus(StockLand stockLand) {
+		stockLandDao.saveStatus(stockLand);
+	}
 }

+ 179 - 0
src/main/java/platform/modules/sys/task/StocklandAutoFinishFlowTask.java

@@ -0,0 +1,179 @@
+package platform.modules.sys.task;
+
+import com.alibaba.fastjson.JSONObject;
+import com.aliyuncs.exceptions.ClientException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Configurable;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+import platform.common.Constant;
+import platform.common.util.AlibabaSMSUtil;
+import platform.common.util.DateUtil;
+import platform.common.util.StringUtils;
+import platform.modules.api.dto.CompanyInfoDto;
+import platform.modules.build.service.CompanyService;
+import platform.modules.carrier.service.ContractFloorService;
+import platform.modules.company.entity.StockLand;
+import platform.modules.company.service.StockLandService;
+import platform.modules.government.entity.User;
+import platform.modules.government.service.UserService;
+import platform.modules.sys.entity.Approval;
+import platform.modules.sys.service.ApprovalService;
+import platform.modules.sys.service.GroupService;
+
+import java.text.ParseException;
+import java.util.*;
+
+/**
+ * 自动审批存量用地单据
+ * 超过5天未审批的单据自动全部通过
+ */
+@Component
+@EnableScheduling
+@Slf4j
+public class StocklandAutoFinishFlowTask {
+
+
+    @Autowired
+    private GroupService groupService;
+
+    @Autowired
+    private StockLandService stockLandService;
+
+    @Autowired
+    private ApprovalService approvalService;
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private CompanyService companyService;
+
+    // 默认wei.pp的电话号码
+    @Value("${company-master-phone:18362602202}")
+    private String companyMasterPhone;
+
+    @Scheduled(cron = "0 0 0 * * ?") // 每天凌晨12点执行
+    public void autoFinishFlow() {
+
+        List<StockLand> allNeedJudgeStockLand = stockLandService.findAllNeedJudgeStockLand();
+        System.out.println(allNeedJudgeStockLand);
+        if (!allNeedJudgeStockLand.isEmpty()) {
+            for (StockLand stockLand : allNeedJudgeStockLand) {
+                try {
+                    autoJudge(stockLand);
+                } catch (ParseException e) {
+                    throw new RuntimeException(e);
+                } catch (ClientException e) {
+                    throw new RuntimeException(e);
+                } catch (InterruptedException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        }
+
+
+    }
+
+    private void autoJudge(StockLand stockLand) throws ParseException, ClientException, InterruptedException {
+        Approval latestApproval = approvalService.getLatestApproval(stockLand.getId(), Constant.DictionaryType.STOCKLAND);
+        // 最后一个审批超过5天的 开始自动审批
+        Boolean overTime = DateUtil.isOverTime(latestApproval.getCreate_time(), 5);
+        if (!overTime) return;
+        log.info("开始自动审批单据, apply_no: " + stockLand.getApply_no());
+        String nextchecker = latestApproval.getNextchecker();
+        if (!StringUtils.isEmpty(nextchecker)) {
+            List<String> checkers = new ArrayList<>(Arrays.asList(nextchecker.split(",")));
+            // 审批到最后一个人的时候,需要判断下一个审批人是到哪里?
+            if (!checkers.isEmpty()) {
+                Iterator<String> checkersIterator = checkers.iterator();
+                while (checkersIterator.hasNext()) {
+                    String currentChecker = checkersIterator.next();
+                    checkersIterator.remove();
+                    if (checkers.isEmpty()) {
+                        //下一审核人到“协调工作组”,
+                        String nextChecker = stockLandService.findGroupName(Constant.XTGZXZ);
+                        // 最后一个人了,下一个审批人的选择
+                        if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.JYLCHQ)) {
+                            // 简易流程会签,后面是简易流程汇总
+                            //当最后一个人审核后,将该单据的状态设为“简易流程汇总”
+                            log.info("开始自动审批单据, apply_no: " + stockLand.getApply_no() + ",currentChecker: " + currentChecker +" 自动置为简易流程汇总");
+
+                            stockLand.setApprove_status(Constant.LandApproveStatus.JYLCHZ);
+                            stockLandService.save(stockLand);
+                            stockLandService.autoSaveApproval(stockLand.getId(),
+                                    "超时自动审批通过",
+                                    currentChecker,
+                                    nextChecker,
+                                    latestApproval.getAfter_approvalstatus(),
+                                    Constant.LandApproveStatus.JYLCHZ,
+                                    Constant.OperType.SUBMIT_COMMENT,
+                                    latestApproval.getApproval_round());
+
+                        } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.COMPLIANCE_AUDIT)) {
+                            // 合规行审查,后面是合规性审查汇总
+                            //当最后一个人审核后,将该单据的状态设为“后面是合规性审查汇总”
+                            log.info("开始自动审批单据, apply_no: " + stockLand.getApply_no() + ",currentChecker: " + currentChecker+ "自动置为合规性审查汇总");
+                            stockLand.setApprove_status(Constant.LandApproveStatus.HGXSCTG);
+                            stockLandService.save(stockLand);
+                            stockLandService.autoSaveApproval(stockLand.getId(),
+                                    "超时自动审批通过",
+                                    currentChecker,
+                                    nextChecker,
+                                    latestApproval.getAfter_approvalstatus(),
+                                    Constant.LandApproveStatus.HGXSCTG,
+                                    Constant.OperType.SUBMIT_COMMENT,
+                                    latestApproval.getApproval_round());
+                        }
+
+                        // 发送短信
+                        // 获取申请单的创建人,并获取该创建人的公司
+                        Integer userid = stockLand.getCreate_by();
+                        CompanyInfoDto company = companyService.findByUserId(userid);
+
+                        Map<String, String> params = new HashMap<>();
+                        params.put("company_name", company.getCompany_name());
+
+                        String tempCode = Constant.SMS_TemplateCode.STOCKLAND_HGXSCTG;
+
+                        for (String checkerId : nextChecker.split(",")) {
+                            User checker = userService.findById(Integer.valueOf(checkerId));
+                            AlibabaSMSUtil.sendSMS(
+                                    checker.getPhone(),
+                                    tempCode,
+                                    Constant.SINGNAMW,
+                                    JSONObject.toJSONString(params)
+                            );
+                        }
+                        // wangjiang@2022-10-09 20:54:48 发送给魏培培通知所有审查通过
+                        if (stockLandService.isNeedNoticeAfterDispatch(stockLand.getApply_type())) {
+                            AlibabaSMSUtil.sendSMS(
+                                    companyMasterPhone,
+                                    Constant.SMS_TemplateCode.STOCKLAND_JUDGE_FINISH_DISPATCH,
+                                    Constant.SINGNAMW,
+                                    JSONObject.toJSONString(params)
+                            );
+                        }
+
+                    } else {
+                        log.info("开始自动审批单据, apply_no: " + stockLand.getApply_no() + ",currentChecker: " + currentChecker+" 超时自动审批通过");
+                        stockLandService.autoSaveApproval(stockLand.getId(),
+                                    "超时自动审批通过",
+                                    currentChecker,
+                                    String.join(",", checkers) + ",",
+                                    stockLand.getApprove_status(),
+                                    stockLand.getApprove_status(),
+                                    Constant.OperType.SUBMIT_COMMENT,
+                                    latestApproval.getApproval_round());
+                    }
+
+                }
+            }
+        }
+    }
+
+}

+ 27 - 0
src/main/resources/mapper/company/StockLandDao.xml

@@ -437,6 +437,24 @@ order by a.create_time desc
 		</if>
 	</select>
 
+	<select id="findAllNeedJudgeStockLand" resultType="platform.modules.company.entity.StockLand">
+		SELECT
+		sla.*, GROUP_CONCAT(ap.ID)  as approvalIds
+		FROM
+		c_stock_land_apply sla
+		LEFT JOIN z_approval ap on ap.APPLY_ID  = sla.id  and ap.DEL_FLAG = 0
+		WHERE
+		sla.del_flag = '0'
+		<if test="null != approvalStatus and approvalStatus.size >0">
+			AND approve_status IN
+			<foreach collection="approvalStatus" index="index" item="item" open="(" separator="," close=")">
+				#{item}
+			</foreach>
+		</if>
+		GROUP BY sla.ID
+		ORDER BY sla.id DESC
+	</select>
+
 	<!-- 所有存量用地数据 -->
 	<select id="findListByStreetId" resultType="platform.modules.company.dto.StockLandStatistic">
 		SELECT
@@ -523,4 +541,13 @@ WHERE
 	VALUES (#{applyid}, '存量用地', '企业服务处',     '2',                    '14',                    140,        '',         '做简易流程处理',        1,                CONCAT_WS( " ", CURRENT_DATE, CURRENT_TIME ),       140,         CONCAT_WS( " ", CURRENT_DATE, CURRENT_TIME ),            NULL,       NULL,       0,                   0,           NULL,       NULL,        '通过',     '通过',       null,            '张磊',         "sql",            null,       NULL)
 	,(#{applyid}, '存量用地',     '企业服务处',         '14',                      '80',                    140,         '',        '审核通过',             1,             CONCAT_WS( " ", CURRENT_DATE, CURRENT_TIME ), '140',     CONCAT_WS( " ", CURRENT_DATE, CURRENT_TIME ),       NULL,       NULL,               0,             0,                NULL,        NULL,     NULL,     '通过',       null,              '张磊',       "sql",          NULL,            NULL)
 	</insert>
+
+	<update id="saveStatus">
+		UPDATE c_stock_land_apply
+		SET approve_status = #{stockLand.approve_status},
+			update_by = 0,
+			update_name = "sql",
+			update_time = CONCAT_WS( " ", CURRENT_DATE, CURRENT_TIME )
+		WHERE id = #{stockLand.id}
+    </update>
 </mapper>

+ 138 - 1
src/test/java/platform/modules/test/StockLandTest.java

@@ -1,20 +1,37 @@
 package platform.modules.test;
 
+import com.alibaba.fastjson.JSONObject;
+import com.aliyuncs.exceptions.ClientException;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 import platform.RootApplication;
+import platform.common.Constant;
+import platform.common.util.AlibabaSMSUtil;
+import platform.common.util.DateUtil;
+import platform.common.util.StringUtils;
+import platform.modules.api.dto.CompanyInfoDto;
+import platform.modules.build.service.CompanyService;
+import platform.modules.company.entity.StockLand;
+import platform.modules.company.service.StockLandService;
 import platform.modules.government.dto.GovIndustrialLandSupplyProjectNumDto;
 import platform.modules.government.entity.Street;
+import platform.modules.government.entity.User;
+import platform.modules.government.service.Company;
 import platform.modules.government.service.GovStatisticsService;
 import platform.modules.government.service.StreetService;
+import platform.modules.government.service.UserService;
+import platform.modules.sys.entity.Approval;
 import platform.modules.sys.entity.Group;
+import platform.modules.sys.service.ApprovalService;
 import platform.modules.sys.service.GroupService;
 
-import java.util.List;
+import java.text.ParseException;
+import java.util.*;
 
 @SpringBootTest(classes = {RootApplication.class})
 @RunWith(SpringRunner.class)
@@ -24,10 +41,130 @@ public class StockLandTest {
     @Autowired
     private GroupService groupService;
 
+    @Autowired
+    private StockLandService stockLandService;
+
+    @Autowired
+    private ApprovalService approvalService;
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private CompanyService companyService;
+
+    // 默认wei.pp的电话号码
+    @Value("${company-master-phone:18362602202}")
+    private String companyMasterPhone;
 
     @Test
     public void getStreet() {
         Group group = groupService.findByName("工业用地简易流程审核组", null);
         System.out.println(group);
     }
+
+    @Test
+    public void findAllNeedJudgeStockLand() throws ClientException, InterruptedException, ParseException {
+        List<StockLand> allNeedJudgeStockLand = stockLandService.findAllNeedJudgeStockLand();
+        System.out.println(allNeedJudgeStockLand);
+        if (!allNeedJudgeStockLand.isEmpty()) {
+            for (StockLand stockLand : allNeedJudgeStockLand) {
+                Approval latestApproval = approvalService.getLatestApproval(stockLand.getId(), Constant.DictionaryType.STOCKLAND);
+                // 最后一个审批超过5天的 开始自动审批
+                Boolean overTime = DateUtil.isOverTime(latestApproval.getCreate_time(), 5);
+                if (!overTime) continue;
+                // 测试代码
+                if (!Objects.equals(stockLand.getApply_no(), "20230821102242")) {
+                    continue;
+                }
+
+                String nextchecker = latestApproval.getNextchecker();
+                if (!StringUtils.isEmpty(nextchecker)) {
+                    List<String> checkers = new ArrayList<>(Arrays.asList(nextchecker.split(",")));
+                    // 审批到最后一个人的时候,需要判断下一个审批人是到哪里?
+                    if (!checkers.isEmpty()) {
+                        Iterator<String> checkersIterator = checkers.iterator();
+                        while (checkersIterator.hasNext()) {
+                            String currentChecker = checkersIterator.next();
+                            checkersIterator.remove();
+                            if (checkers.isEmpty()) {
+                                //下一审核人到“协调工作组”,
+                                String nextChecker = stockLandService.findGroupName(Constant.XTGZXZ);
+                                // 最后一个人了,下一个审批人的选择
+                                if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.JYLCHQ)) {
+                                    // 简易流程会签,后面是简易流程汇总
+                                    //当最后一个人审核后,将该单据的状态设为“简易流程汇总”
+                                    stockLand.setApprove_status(Constant.LandApproveStatus.JYLCHZ);
+                                    stockLandService.save(stockLand);
+                                    stockLandService.autoSaveApproval(stockLand.getId(),
+                                            "超时自动审批通过",
+                                            currentChecker,
+                                            nextChecker,
+                                            latestApproval.getAfter_approvalstatus(),
+                                            Constant.LandApproveStatus.JYLCHZ,
+                                            Constant.OperType.SUBMIT_COMMENT,
+                                            latestApproval.getApproval_round());
+
+                                } else if (Objects.equals(stockLand.getApprove_status(), Constant.LandApproveStatus.COMPLIANCE_AUDIT)) {
+                                    // 合规行审查,后面是合规性审查汇总
+                                    //当最后一个人审核后,将该单据的状态设为“合规性审查汇总”
+                                    stockLand.setApprove_status(Constant.LandApproveStatus.HGXSCTG);
+                                    stockLandService.saveStatus(stockLand);
+                                    stockLandService.autoSaveApproval(stockLand.getId(),
+                                            "超时自动审批通过",
+                                            currentChecker,
+                                            nextChecker,
+                                            latestApproval.getAfter_approvalstatus(),
+                                            Constant.LandApproveStatus.HGXSCTG,
+                                            Constant.OperType.SUBMIT_COMMENT,
+                                            latestApproval.getApproval_round());
+                                }
+
+                                // 发送短信
+                                // 获取申请单的创建人,并获取该创建人的公司
+                                Integer userid = stockLand.getCreate_by();
+                                CompanyInfoDto company = companyService.findByUserId(userid);
+
+                                Map<String, String> params = new HashMap<>();
+                                params.put("company_name", company.getCompany_name());
+
+                                String tempCode = Constant.SMS_TemplateCode.STOCKLAND_HGXSCTG;
+
+                                for (String checkerId : nextChecker.split(",")) {
+                                    User checker = userService.findById(Integer.valueOf(checkerId));
+                                    AlibabaSMSUtil.sendSMS(
+                                            checker.getPhone(),
+                                            tempCode,
+                                            Constant.SINGNAMW,
+                                            JSONObject.toJSONString(params)
+                                    );
+                                }
+                                // wangjiang@2022-10-09 20:54:48 发送给魏培培通知所有审查通过
+                                if (stockLandService.isNeedNoticeAfterDispatch(stockLand.getApply_type())) {
+                                    AlibabaSMSUtil.sendSMS(
+                                            companyMasterPhone,
+                                            Constant.SMS_TemplateCode.STOCKLAND_JUDGE_FINISH_DISPATCH,
+                                            Constant.SINGNAMW,
+                                            JSONObject.toJSONString(params)
+                                    );
+                                }
+
+                            } else {
+                                stockLandService.autoSaveApproval(stockLand.getId(),
+                                        "超时自动审批通过",
+                                        currentChecker,
+                                        String.join(",", checkers) + ",",
+                                        stockLand.getApprove_status(),
+                                        stockLand.getApprove_status(),
+                                        Constant.OperType.SUBMIT_COMMENT,
+                                        latestApproval.getApproval_round());
+                            }
+
+                        }
+                    }
+                }
+            }
+        }
+
+    }
 }