From b48de0e35c54bd4715f8de2b86bac5a539c27275 Mon Sep 17 00:00:00 2001 From: ZQN <364596817@qq.com> Date: 星期六, 22 六月 2024 16:23:44 +0800 Subject: [PATCH] 更换手机,发送短信放开 --- project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java | 304 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 276 insertions(+), 28 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 0468779..c470d09 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,27 +5,35 @@ 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.enums.OrderPre; import com.project.common.exception.base.BaseException; +import com.project.common.sms.YPSmsApi; +import com.project.common.utils.DateUtils; +import com.project.common.utils.JsonUtils; import com.project.common.utils.SecurityUtils; import com.project.common.utils.StringUtils; -import com.project.enforce.domain.EnforceOrder; -import com.project.enforce.domain.bo.editBo.EnforceOrderBo; +import com.project.enforce.domain.*; +import com.project.enforce.domain.bo.editBo.*; import com.project.enforce.domain.bo.queryBo.EnforceOrderQueryBo; +import com.project.enforce.domain.bo.queryBo.OrderCheckedQueryBo; +import com.project.enforce.domain.vo.EnforceEvaluateVo; import com.project.enforce.domain.vo.EnforceOrderVo; +import com.project.enforce.domain.vo.OrderNodeVo; import com.project.enforce.mapper.EnforceOrderMapper; -import com.project.enforce.service.IEnforceOrderService; +import com.project.enforce.service.*; 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.ArrayList; import java.util.Collection; import java.util.List; -import java.util.stream.Collectors; /** * 鎵ф硶鍗昐ervice涓氬姟灞傚鐞� @@ -36,15 +44,29 @@ @RequiredArgsConstructor(onConstructor_ = @Autowired) public class EnforceOrderServiceImpl extends ServiceImpl<EnforceOrderMapper, EnforceOrder> implements IEnforceOrderService { + private final ISysUserService userService; private final ISysDeptService deptService; - + private final ISysOrderNoService orderNoService; + private final IEnforcePeerService peerService; + private final IEnforceCheckLogService checkLogService; + private final IEnforceComplaintLogService complaintLogService; + private final IEnforceEvaluateLogService evaluateLogService; @Override//鍒楄〃鏌ヨ - @DataScope(deptAlias = "apply_dept_id", userAlias = "apply_user_id") + @DataScope(deptAlias = "apply_dept_id", userAlias = "apply_id") public List<EnforceOrderVo> queryList(EnforceOrderQueryBo bo) { QueryWrapper<EnforceOrder> qw = getQw(bo); - qw.apply(bo.getParams().get("dataScope") != null, bo.getParams().get("dataScope").toString());//鏁版嵁鏉冮檺鎺у埗 + qw.apply(StringUtils.isNotEmpty(bo.getParams().get("dataScope").toString()), bo.getParams().get("dataScope").toString());//鏁版嵁鏉冮檺鎺у埗 + List<EnforceOrder> list = this.list(qw); + return Convert.toList(EnforceOrderVo.class , list); + } + + @Override//鎵ф硶涓婃姤鍒楄〃 + @DataScope(deptAlias = "execute_dept_id", userAlias = "execute_id") + public List<EnforceOrderVo> getExecuteList(EnforceOrderQueryBo bo) { + QueryWrapper<EnforceOrder> qw = getQw(bo); + qw.apply(StringUtils.isNotEmpty(bo.getParams().get("dataScope").toString()), bo.getParams().get("dataScope").toString());//鏁版嵁鏉冮檺鎺у埗 List<EnforceOrder> list = this.list(qw); return Convert.toList(EnforceOrderVo.class , list); } @@ -53,31 +75,55 @@ 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.setCheckIds(loginUser.getPhonenumber()); + List<Long> deptIds = deptService.getApplyDeptIdsByLoginUserId(loginUser.getUserId()); + if (StringUtils.isNotEmpty(deptIds)){ + bo.setApplyDeptIds(deptIds); + } else { + bo.setApplyDeptIds(null); } - - bo.setCheckDeptId(deptService.getCheckDeptIdByLoginDeptId(loginUser.getDeptId())); - - bo.setApplyDeptIds(deptService.getApplyDeptIdsByLoginUserId(loginUser.getUserId())); - return this.baseMapper.selectCheckList(bo); + } + + @Override + public List<EnforceOrderVo> queryCheckedList(OrderCheckedQueryBo bo) + { + bo.setUserId(SecurityUtils.getUserId()); + return this.baseMapper.selectCheckedList(bo); + } + + @Override//淇℃伅鍏紡鍒楄〃 + public List<EnforceOrderVo> showList() + { + List<EnforceOrder> list = this.list(lq() + .eq(EnforceOrder::getIsShow, 1) + .eq(EnforceOrder::getOrderStatus, 4) + ); + return Convert.toList(EnforceOrderVo.class, list); } @Override//id鏌ヨ public EnforceOrderVo queryById(Long orderId) { EnforceOrder db = this.baseMapper.selectById(orderId); - return Convert.convert(EnforceOrderVo.class , db); + EnforceOrderVo vo = Convert.convert(EnforceOrderVo.class, db); + List<EnforcePeer> peers = peerService.list(peerService.lq().eq(EnforcePeer::getOrderId, orderId).eq(EnforcePeer::getPeerType,2)); + vo.setPeers(peers); + if (db.getIsEva()==1){ + EnforceEvaluateLog one = evaluateLogService.getOne(evaluateLogService.lq().eq(EnforceEvaluateLog::getOrderId, orderId)); + if (one!=null){ + String questionStatic = one.getQuestionStatic(); + if (StringUtils.isNotEmpty(questionStatic)){ + try { + EnforceEvaluateVo evaluateVo = JsonUtils.jsonToPojo(questionStatic, EnforceEvaluateVo.class); + vo.setEvaluateVo(evaluateVo); + } catch (Exception e) { + throw new BaseException("璇勪环闂埜瑙f瀽寮傚父锛�"); + } + } + } + } + return vo; } @@ -86,8 +132,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(0,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//淇敼 @@ -109,15 +180,161 @@ return this.removeByIds(ids); } + @Override + public List<String> getCheckPhones(Integer checkLevel, Long applyDeptId) + { + return getCheckPhones(checkLevel, applyDeptId, 0); + } + + @Override + public List<OrderNodeVo> orderNodeList(Long orderId) + { + List<OrderNodeVo> vos = new ArrayList<>(); + EnforceOrder order = this.getById(orderId); + List<EnforceCheckLog> checkLogs = checkLogService.list(checkLogService.lq() + .eq(EnforceCheckLog::getOrderId, orderId).orderByAsc(EnforceCheckLog::getCheckTime) + ); + if (order.getApplyTime()!=null){ + vos.add(new OrderNodeVo("鎻愪氦鐢宠",order.getApplyUser(),order.getApplyTime(), null)); + } + if (StringUtils.isNotEmpty(checkLogs)){ + for (EnforceCheckLog checkLog : checkLogs) { + if (checkLog.getCheckStatus()>0){ + vos.add(new OrderNodeVo("瀹℃壒閫氳繃",checkLog.getCheckUser(),checkLog.getCheckTime(), null)); + } else { + vos.add(new OrderNodeVo("瀹℃壒鎷掔粷",checkLog.getCheckUser(),checkLog.getCheckTime(), checkLog.getCheckReason())); + } + } + } + if (order.getInTime()!=null){ + vos.add(new OrderNodeVo("鎵爜鍏ヤ紒",order.getExecuteUser(),order.getInTime(), null)); + } + if (order.getExecuteTime()!=null){ + vos.add(new OrderNodeVo("缁撴灉涓婃姤",order.getExecuteUser(),order.getExecuteTime(), null)); + } + + return vos; + } + + @Override//鎵爜缁撴灉 + public List<EnforceOrderVo> getScanList(String companyCode) + { + Long userId = SecurityUtils.getUserId(); + return this.baseMapper.selectScanList(companyCode, userId); + } + + @Override//纭鎵爜鎵ф硶 + @Transactional + public Boolean doScanOrder(Long orderId) + { + EnforceOrder order = this.getById(orderId); + order.setOrderStatus(3); + SysUser user = SecurityUtils.getLoginUser().getUser(); + order.setExecuteId(user.getUserId()); + order.setExecuteUser(user.getNickName()); + order.setExecutePhone(user.getRecommendPhone()); + order.setExecuteDeptId(user.getDeptId()); + order.setExecuteDeptName(deptService.getDeptAllName(user.getDeptId())); + order.setInTime(DateUtils.getNowDate()); + return this.updateById(order); + } + + @Override//涓婃姤缁撴灉 + @Transactional + public Boolean doResultOrder(OrderResultBo resultBo) + { + if (resultBo.getRegionStatus()==null){ + throw new BaseException("璇峰~鍐欐墽娉曠粨鏋�"); + } + if (StringUtils.isEmpty(resultBo.getRegionReason())){ + throw new BaseException("璇峰~鍐欐墽娉曠粨鏋滆鏄�"); + } + + return this.update(lu() + .set(resultBo.getRegionStatus()!=null, EnforceOrder::getRegionStatus, resultBo.getRegionStatus()) + .set(StringUtils.isNotEmpty(resultBo.getRegionReason()), EnforceOrder::getRegionReason, resultBo.getRegionReason()) + .set(StringUtils.isNotEmpty(resultBo.getRegionImgs()), EnforceOrder::getRegionImgs, resultBo.getRegionImgs()) + .set(StringUtils.isNotEmpty(resultBo.getRegionVideos()), EnforceOrder::getRegionVideos, resultBo.getRegionVideos()) + .set( EnforceOrder::getOrderStatus, 4) + .set( EnforceOrder::getExecuteTime, DateUtils.getNowDate()) + ); + } + + @Override//鎵ф硶鍗曟姇璇� + @Transactional + public Boolean orderComplaint(OrderComplaintBo bo) + { + if (bo.getOrderId()==null){ + throw new BaseException("璇烽�夋嫨瑕佹姇璇夌殑鎵ф硶鍗曪紒"); + } + if (StringUtils.isEmpty(bo.getComplaintType())){ + throw new BaseException("璇烽�夋嫨瑕佹姇璇夌被鍨嬶紒"); + } + if (StringUtils.isEmpty(bo.getComplaintReason())){ + throw new BaseException("璇峰~鍐欐姇璇夊唴瀹癸紒"); + } + EnforceOrder order = this.getById(bo.getOrderId()); + //娣诲姞鎶曡瘔璁板綍 + EnforceComplaintLogBo complaintLogBo = Convert.convert(EnforceComplaintLogBo.class, order); + complaintLogBo.setComplaintType(bo.getComplaintType()); + complaintLogBo.setComplaintReason(bo.getComplaintReason()); + Boolean addLog = complaintLogService.insertByBo(complaintLogBo); + if (addLog){ + return this.update(lu() + .set(EnforceOrder::getIsComplaint,1) + .set(EnforceOrder::getComplaintType,bo.getComplaintType()) + .set(EnforceOrder::getComplaintReason,bo.getComplaintReason()) + .eq(EnforceOrder::getOrderId,bo.getOrderId()) + ); + } + return false; + } + + @Override//鎵ф硶鍗曟姇璇夎妭鐐� + public List<OrderNodeVo> orderComplaintNodeList(Long orderId) + { + EnforceComplaintLog log = complaintLogService.getOne(complaintLogService.lq().eq(EnforceComplaintLog::getOrderId, orderId)); + if (log==null){ + return null; + } + return complaintLogService.orderNodeList(log.getId()); + } + //------------------------------------------------------------------------------------- + + + /** + * 鍙戦�佸鎵圭煭淇� + * @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())); + entity.setApplyTime(DateUtils.getNowDate()); } + if (StringUtils.isEmpty(entity.getApplyDeptName()) && entity.getApplyDeptId()!=null){ + entity.setApplyDeptName(deptService.getDeptAllName(entity.getApplyDeptId())); + } + if (StringUtils.isEmpty(entity.getExecuteDeptName()) && entity.getExecuteDeptId()!=null){ + entity.setExecuteDeptName(deptService.getDeptAllName(entity.getExecuteDeptId())); + } + if (StringUtils.isEmpty(entity.getCheckDeptName()) && entity.getCheckDeptId()!=null){ + entity.setCheckDeptName(deptService.getDeptAllName(entity.getCheckDeptId())); + } + } //鑾峰彇鏌ヨ鍙傛暟 @@ -134,7 +351,8 @@ qw.eq(StringUtils.isNotEmpty(bo.getCompanyAddress()), "company_address", bo.getCompanyAddress()); qw.eq(StringUtils.isNotEmpty(bo.getRegionCode()), "region_code", bo.getRegionCode()); qw.like(StringUtils.isNotEmpty(bo.getRegionName()), "region_name", bo.getRegionName()); - qw.eq(StringUtils.isNotEmpty(bo.getEnforceReason()), "enforce_reason", bo.getEnforceReason()); + qw.like(StringUtils.isNotEmpty(bo.getEnforceReason()), "enforce_reason", bo.getEnforceReason()); + qw.like(StringUtils.isNotEmpty(bo.getEnforceContent()), "enforce_content", bo.getEnforceContent()); qw.eq(StringUtils.isNotEmpty(bo.getEnforceType()), "enforce_type", bo.getEnforceType()); qw.eq(bo.getApplyId() != null, "apply_id", bo.getApplyId()); qw.eq(StringUtils.isNotEmpty(bo.getApplyUser()), "apply_user", bo.getApplyUser()); @@ -142,6 +360,8 @@ qw.eq(bo.getApplyDeptId() != null, "apply_dept_id", bo.getApplyDeptId()); 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()); @@ -174,4 +394,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.selectDeptById(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