|
|
@@ -3992,6 +3992,214 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
|
|
|
baseMapper.updateById(auditProecess);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void salesPlan(AuditProecess auditProecess) {
|
|
|
+ //查看最新操作记录,防止重复提交
|
|
|
+ AuditProecess proecessTemp = baseMapper.selectById(auditProecess.getId());
|
|
|
+ if (proecessTemp == null) {
|
|
|
+ throw new SecurityException("未查到此审批记录,禁止操作");
|
|
|
+ }
|
|
|
+ if ("A".equals(proecessTemp.getAuditStatus()) || "B".equals(proecessTemp.getAuditStatus())) {
|
|
|
+ throw new SecurityException("当前记录已经完成审批,禁止重复操作");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (auditProecess.getAuditStatus() == null || !"S".equals(auditProecess.getAuditStatus())) {
|
|
|
+ throw new SecurityException("审批状态非待审,禁止操作");
|
|
|
+ }
|
|
|
+ //信息
|
|
|
+ Message sendMessage = new Message();
|
|
|
+ sendMessage.setParameter(String.valueOf(auditProecess.getBillId()));
|
|
|
+ sendMessage.setUserName(AuthUtil.getUserName());
|
|
|
+ sendMessage.setUserId(AuthUtil.getUserId());
|
|
|
+ sendMessage.setToUserId(auditProecess.getSendUserId());
|
|
|
+ sendMessage.setToUserName(auditProecess.getSendName());
|
|
|
+ sendMessage.setMessageType(1);
|
|
|
+ sendMessage.setTenantId(AuthUtil.getTenantId());
|
|
|
+ sendMessage.setCreateUser(AuthUtil.getUserId());
|
|
|
+ sendMessage.setCreateTime(new Date());
|
|
|
+ sendMessage.setUrl(auditProecess.getUrl());
|
|
|
+ sendMessage.setPageLabel(auditProecess.getPageLabel());
|
|
|
+ sendMessage.setPageStatus(auditProecess.getPageStatus());
|
|
|
+
|
|
|
+ //用户操作 1.通过 2.驳回
|
|
|
+ Integer operate = auditProecess.getOperate();
|
|
|
+ //查看当前审批是否为最后一级
|
|
|
+ String iffinalItem = auditProecess.getIffinalItem();
|
|
|
+ //审批人
|
|
|
+ auditProecess.setAuditUserId(String.valueOf(AuthUtil.getUserId()));
|
|
|
+ //审批时间
|
|
|
+ auditProecess.setAuditOpTime(new Date());
|
|
|
+ //不是最后一级
|
|
|
+ if ("F".equals(iffinalItem)) {
|
|
|
+
|
|
|
+ //通过
|
|
|
+ if (operate == 1) {
|
|
|
+ //如果是第一级, 则修改状态为审批中
|
|
|
+ if (auditProecess.getLevelId() == 1) {
|
|
|
+ Order order = new Order();
|
|
|
+ order.setId(auditProecess.getSrcBillId());
|
|
|
+ order.setUpdateTime(new Date());
|
|
|
+ order.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ order.setStatus(7);
|
|
|
+ R sumbit = orderDescClient.updateOrder(order);
|
|
|
+ if (!sumbit.isSuccess()) {
|
|
|
+ throw new SecurityException("审批开始修改审核状态失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ auditProecess.setAuditStatus("A");
|
|
|
+ //查询下一级,开启待审
|
|
|
+ LambdaQueryWrapper<AuditProecess> auditProecessLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ auditProecessLambdaQueryWrapper
|
|
|
+ .eq(AuditProecess::getBatchNo, auditProecess.getBatchNo())
|
|
|
+ .eq(AuditProecess::getSrcBillId, auditProecess.getSrcBillId())
|
|
|
+ .eq(AuditProecess::getIsDelete, 0)
|
|
|
+ .eq(AuditProecess::getActId, auditProecess.getActId())
|
|
|
+ .eq(AuditProecess::getBillId, auditProecess.getBillId())
|
|
|
+ .eq(AuditProecess::getBillNo, auditProecess.getBillNo())
|
|
|
+ .eq(AuditProecess::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(AuditProecess::getLevelId, auditProecess.getLevelId() + 1);
|
|
|
+ Integer count = baseMapper.selectCount(auditProecessLambdaQueryWrapper);
|
|
|
+ if (count != null && count > 1) {
|
|
|
+ throw new SecurityException("审核失败,获取下一级信息失败");
|
|
|
+ }
|
|
|
+ AuditProecess proecess = baseMapper.selectOne(auditProecessLambdaQueryWrapper);
|
|
|
+ if (proecess == null) {
|
|
|
+ throw new SecurityException("审批通过=>获取下一级信息失败");
|
|
|
+ }
|
|
|
+ proecess.setAuditStatus("S");
|
|
|
+ baseMapper.updateById(proecess);
|
|
|
+
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
|
|
|
+ String corpName = null;
|
|
|
+ if (proecessTemp.getCorpId() != null) {
|
|
|
+ R<CorpsDesc> corpMessage = iCorpsDescClient.getCorpMessage(proecessTemp.getCorpId());
|
|
|
+ if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
+ corpName = corpMessage.getData().getCname();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String repairDate = null;
|
|
|
+ if (proecessTemp.getBillId() != null) {
|
|
|
+ Repair repair = repairClient.getRepairById(proecessTemp.getBillId());
|
|
|
+ if (repair != null) {
|
|
|
+ repairDate = simpleDateFormat.format(repair.getCreateTime());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Message message = new Message();
|
|
|
+ message.setParameter(String.valueOf(auditProecess.getBillId()));
|
|
|
+ message.setUserName(AuthUtil.getUserName());
|
|
|
+ message.setUserId(AuthUtil.getUserId());
|
|
|
+ message.setMessageType(1);
|
|
|
+ message.setTenantId(AuthUtil.getTenantId());
|
|
|
+
|
|
|
+ //判断模板类型
|
|
|
+ if ("采购订单审批".equals(proecessTemp.getProcessType())) {
|
|
|
+ message.setMessageBody("您有采购订单审批,客户名:" + corpName + "," + "单号:" +
|
|
|
+ "" + proecessTemp.getBillNo() + "," + "订单日期:" + repairDate + ",请审核。"
|
|
|
+ + "提交人:" + proecessTemp.getSendName() + " " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime())
|
|
|
+ );
|
|
|
+ } else if ("销售订单审批".equals(proecessTemp.getProcessType())) {
|
|
|
+ message.setMessageBody("您有销售订单审批,客户名:" + corpName + "," + "单号:" +
|
|
|
+ "" + proecessTemp.getBillNo() + "," + "订单日期:" + repairDate + ",请审核。"
|
|
|
+ + "提交人:" + proecessTemp.getSendName() + " " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime())
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ message.setCreateUser(AuthUtil.getUserId());
|
|
|
+ message.setUrl("/approveData/index");
|
|
|
+ message.setCreateTime(new Date());
|
|
|
+
|
|
|
+ // 消息批量通知下一级
|
|
|
+ sendMsgToGroup(message, proecess.getAuditUserId());
|
|
|
+ }
|
|
|
+ //不通过
|
|
|
+ else if (operate == 2) {
|
|
|
+ auditProecess.setAuditStatus("B");
|
|
|
+ Order order = new Order();
|
|
|
+ order.setId(auditProecess.getSrcBillId());
|
|
|
+ order.setUpdateTime(new Date());
|
|
|
+ order.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ order.setStatus(8);
|
|
|
+ R sumbit = orderDescClient.updateOrder(order);
|
|
|
+ if (!sumbit.isSuccess()) {
|
|
|
+ throw new SecurityException("审批开始修改审核状态失败");
|
|
|
+ }
|
|
|
+ if ("采购订单审批".equals(proecessTemp.getProcessType())) {
|
|
|
+ sendMessage.setMessageBody("您的采购订单审批未通过" + ",单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
|
|
|
+ } else if ("销售订单审批".equals(proecessTemp.getProcessType())) {
|
|
|
+ sendMessage.setMessageBody("您的销售订单审批未通过" + ",单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
|
|
|
+ }
|
|
|
+
|
|
|
+ R save = messageClient.save(sendMessage);
|
|
|
+ if (!save.isSuccess()) {
|
|
|
+ throw new SecurityException("发送消息失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ //是最后一级
|
|
|
+ else if ("T".equals(iffinalItem)) {
|
|
|
+ //通过
|
|
|
+ if (operate == 1) {
|
|
|
+ //todo 调用feign直接通过
|
|
|
+ auditProecess.setAuditStatus("A");
|
|
|
+ Order order = new Order();
|
|
|
+ order.setId(auditProecess.getSrcBillId());
|
|
|
+ order.setUpdateTime(new Date());
|
|
|
+ order.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ order.setStatus(6);
|
|
|
+ order.setSpecial("1");
|
|
|
+ R sumbit = orderDescClient.updateOrder(order);
|
|
|
+ if (!sumbit.isSuccess()) {
|
|
|
+ throw new SecurityException(sumbit.getMsg());
|
|
|
+ }
|
|
|
+ if ("采购订单审批".equals(proecessTemp.getProcessType())) {
|
|
|
+ sendMessage.setMessageBody("您的采购订单审批已通过" + ",单号:" + proecessTemp.getBillNo() + ",请继续操作");
|
|
|
+ } else if ("销售订单审批".equals(proecessTemp.getProcessType())) {
|
|
|
+ sendMessage.setMessageBody("您的销售订单审批已通过" + ",单号:" + proecessTemp.getBillNo() + ",请继续操作");
|
|
|
+ }
|
|
|
+
|
|
|
+ R save = messageClient.save(sendMessage);
|
|
|
+ if (!save.isSuccess()) {
|
|
|
+ throw new SecurityException("发送消息失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //不通过
|
|
|
+ else if (operate == 2) {
|
|
|
+ //todo 调用feign取消
|
|
|
+ auditProecess.setAuditStatus("B");
|
|
|
+ Order order = new Order();
|
|
|
+ order.setId(auditProecess.getSrcBillId());
|
|
|
+ order.setUpdateTime(new Date());
|
|
|
+ order.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ order.setStatus(8);
|
|
|
+ R sumbit = orderDescClient.updateOrder(order);
|
|
|
+ if (!sumbit.isSuccess()) {
|
|
|
+ throw new SecurityException("修改审核状态失败");
|
|
|
+ }
|
|
|
+ if ("销售订单审批".equals(proecessTemp.getProcessType())) {
|
|
|
+ sendMessage.setMessageBody("您的销售订单审批未通过" + ",单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
|
|
|
+ } else if ("采购订单审批".equals(proecessTemp.getProcessType())) {
|
|
|
+ sendMessage.setMessageBody("您的采购订单审批未通过" + ",单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
|
|
|
+ }
|
|
|
+
|
|
|
+ R save = messageClient.save(sendMessage);
|
|
|
+ if (!save.isSuccess()) {
|
|
|
+ throw new SecurityException("发送消息失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new SecurityException("审批异常,请联系管理员");
|
|
|
+ }
|
|
|
+
|
|
|
+ cleanMsg(proecessTemp.getAuditUserId(), AuthUtil.getUserId(), proecessTemp.getSrcBillId());
|
|
|
+
|
|
|
+ //保存操作记录
|
|
|
+ auditProecess.setAuditMsg(auditProecess.getAuditMsg());
|
|
|
+ auditProecess.setAuditItem(new Date());
|
|
|
+ baseMapper.updateById(auditProecess);
|
|
|
+ }
|
|
|
+
|
|
|
private void sendMsgToGroup(Message message, String group) {
|
|
|
List<String> userList = Arrays.asList(group.split(","));
|
|
|
userList.forEach(user -> {
|