From 3467fa64f4be6efc9b742913419e7c3a501c541b Mon Sep 17 00:00:00 2001 From: ZQN <364596817@qq.com> Date: 星期四, 20 六月 2024 16:52:21 +0800 Subject: [PATCH] 云片短信对接,审批流程优化 --- project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java | 127 ++++++++++++++++++++++++++++++++---------- 1 files changed, 96 insertions(+), 31 deletions(-) diff --git a/project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java b/project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java index db43b7e..fce5771 100644 --- a/project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java +++ b/project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java @@ -5,28 +5,30 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.project.common.annotation.DataScope; -import com.project.common.constant.CheckLevelCodeConstants; -import com.project.common.core.domain.entity.SysRole; import com.project.common.core.domain.entity.SysUser; -import com.project.common.exception.base.BaseException; +import com.project.common.enums.OrderPre; +import com.project.common.sms.YPSmsApi; import com.project.common.utils.SecurityUtils; import com.project.common.utils.StringUtils; -import com.project.common.vo.KeyVal; import com.project.enforce.domain.EnforceOrder; +import com.project.enforce.domain.EnforcePeer; import com.project.enforce.domain.bo.editBo.EnforceOrderBo; import com.project.enforce.domain.bo.queryBo.EnforceOrderQueryBo; import com.project.enforce.domain.vo.EnforceOrderVo; import com.project.enforce.mapper.EnforceOrderMapper; import com.project.enforce.service.IEnforceOrderService; +import com.project.enforce.service.IEnforcePeerService; import com.project.system.service.ISysDeptService; +import com.project.system.service.ISysOrderNoService; +import com.project.system.service.ISysUserService; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Collection; import java.util.List; -import java.util.stream.Collectors; /** * 鎵ф硶鍗昐ervice涓氬姟灞傚鐞� @@ -37,9 +39,10 @@ @RequiredArgsConstructor(onConstructor_ = @Autowired) public class EnforceOrderServiceImpl extends ServiceImpl<EnforceOrderMapper, EnforceOrder> implements IEnforceOrderService { + private final ISysUserService userService; private final ISysDeptService deptService; - private final EnforceOrderMapper orderMapper; - + private final ISysOrderNoService orderNoService; + private final IEnforcePeerService peerService; @Override//鍒楄〃鏌ヨ @DataScope(deptAlias = "apply_dept_id", userAlias = "apply_user_id") @@ -55,22 +58,8 @@ public List<EnforceOrderVo> queryCheckList(EnforceOrderQueryBo bo) { SysUser loginUser = SecurityUtils.getLoginUser().getUser(); - if (bo.getIsCheckQuery()!=null && bo.getIsCheckQuery()==1){ - List<String> roleKeys = loginUser.getRoles().stream().map(SysRole::getRoleKey).collect(Collectors.toList()); - if (roleKeys.contains(CheckLevelCodeConstants.CHECK_LEVEL_ONE) && roleKeys.contains(CheckLevelCodeConstants.CHECK_LEVEL_TWO)){ - bo.setCheckLevel(null); - } else if (roleKeys.contains(CheckLevelCodeConstants.CHECK_LEVEL_ONE)){ - bo.setCheckLevel(0); - } else if (roleKeys.contains(CheckLevelCodeConstants.CHECK_LEVEL_TWO)) { - bo.setCheckLevel(1); - } else { - throw new BaseException("鎮ㄦ病鏈夊鎵规潈闄愶紝璇烽噸璇曪紒"); - } - } - - bo.setCheckDeptId(deptService.getCheckDeptIdByLoginDeptId(loginUser.getDeptId())); + bo.setCheckIds(loginUser.getPhonenumber()); bo.setApplyDeptIds(deptService.getApplyDeptIdsByLoginUserId(loginUser.getUserId())); - return this.baseMapper.selectCheckList(bo); } @@ -94,8 +83,33 @@ public Boolean insertByBo(EnforceOrderBo bo) { EnforceOrder add = Convert.convert(EnforceOrder.class, bo); + add.setCheckLevel(0); validEntityBeforeSave(add); - return this.save(add); + List<String> phones = getCheckPhones(add.getCheckLevel(), add.getApplyDeptId()); + if (StringUtils.isNotEmpty(phones)){ + String checkPhones = StringUtils.join(phones, ","); + add.setCheckIds(checkPhones); + } + this.save(add); + bo.getPeers().add(new EnforcePeer() + .setPeerType(1) + .setPeerId(add.getApplyId()) + .setPeerUser(add.getApplyUser()) + .setPeerPhone(add.getApplyPhone()) + .setPeerDeptId(add.getApplyDeptId()) + .setPeerDeptName(add.getApplyDeptName()) + ); + //澶勭悊鎵ф硶浜哄憳淇℃伅 + for (EnforcePeer peer : bo.getPeers()) + { + peer.setOrderId(add.getOrderId()); + peer.setPeerDeptName(deptService.getDeptAllName(peer.getPeerDeptId())); + } + boolean savePeers = peerService.saveOrUpdateBatch(bo.getPeers()); + if (savePeers && StringUtils.isNotEmpty(phones)) { + sendApplyMsg(phones, add.getApplyUser()); + } + return savePeers; } @Override//淇敼 @@ -117,26 +131,48 @@ return this.removeByIds(ids); } - @Override//鏈堝害鍒嗗竷 - public List<KeyVal> getMonthCount(Long deptId) { - return orderMapper.getMonthCount(deptId); - } - - @Override//閮ㄩ棬鍒嗗竷 - public List<KeyVal> getDeptCount(String yearMonth) + @Override + public List<String> getCheckPhones(Integer checkLevel, Long applyDeptId) { - return orderMapper.getDeptCount(yearMonth); + return getCheckPhones(checkLevel, applyDeptId, 0); } //------------------------------------------------------------------------------------- + + /** + * 鍙戦�佸鎵圭煭淇� + * @param phones 鎵嬫満鍙� + * @param applyUser 鐢宠浜� + */ + @Async + public void sendApplyMsg(List<String> phones, String applyUser) + { + String applyMsg = StringUtils.format(StringUtils.format(YPSmsApi.APPLY_TMP, applyUser)); + phones.forEach(phone->{ + YPSmsApi.sendSms(phone, applyMsg) ; + }); + } + //淇濆瓨鍓嶆牎楠� private void validEntityBeforeSave(EnforceOrder entity) { if (entity.getOrderId()==null){ + String orderNo = orderNoService.getOrderNo(OrderPre.ZFD.getIndex()); + entity.setOrderNo(orderNo); entity.setCheckDeptId(deptService.getCheckDeptIdByLoginDeptId(entity.getApplyDeptId())); } + if (StringUtils.isEmpty(entity.getApplyDeptName())){ + entity.setApplyDeptName(deptService.getDeptAllName(entity.getApplyDeptId())); + } + if (StringUtils.isEmpty(entity.getExecuteDeptName())){ + entity.setExecuteDeptName(deptService.getDeptAllName(entity.getExecuteDeptId())); + } + if (StringUtils.isEmpty(entity.getCheckDeptName())){ + entity.setCheckDeptName(deptService.getDeptAllName(entity.getCheckDeptId())); + } + } //鑾峰彇鏌ヨ鍙傛暟 @@ -162,6 +198,7 @@ qw.like(StringUtils.isNotEmpty(bo.getApplyDeptName()), "apply_dept_name", bo.getApplyDeptName()); qw.eq(bo.getApplyTime() != null, "apply_time", bo.getApplyTime()); qw.eq(bo.getPlanTime() != null, "plan_time", bo.getPlanTime()); + qw.eq(bo.getInTime() != null, "in_time", bo.getInTime()); qw.eq(bo.getUserNum() != null, "user_num", bo.getUserNum()); qw.eq(bo.getWarnStatus() != null, "warn_status", bo.getWarnStatus()); qw.eq(StringUtils.isNotEmpty(bo.getWarnReason()), "warn_reason", bo.getWarnReason()); @@ -194,4 +231,32 @@ } return qw; } + + + /** + * 鑾峰彇瀹℃壒浜篿d + * @param checkLevel 瀹℃壒绾у埆锛氶粯璁�0 + * @param deptId 鐢宠閮ㄩ棬id + */ + private List<String> getCheckPhones(Integer checkLevel, Long deptId, int current) + { + if (checkLevel==3){ + if (current==1){ + return null; + } + checkLevel = 0; + deptId = deptService.getById(deptId).getParentId(); + current++; + getCheckPhones(checkLevel, deptId, current); + } + checkLevel++; + String checkKey = "check_enforce_"; + List<String> phones = userService.getPhonesByRoleKey(checkKey + checkLevel, deptId); + if (StringUtils.isNotEmpty(phones)){ + return phones; + } + return getCheckPhones(checkLevel, deptId, current); + } + + } -- Gitblit v1.9.1