diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
new file mode 100644
index 0000000..32f67c9
--- /dev/null
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.controller.workbench;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 审批通过通知消息 前端控制器
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+@RestController
+@RequestMapping("/workbench/approvalMessage")
+public class WorkbenchApprovalMessageController {
+
+}
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
new file mode 100644
index 0000000..32f67c9
--- /dev/null
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.controller.workbench;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 审批通过通知消息 前端控制器
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+@RestController
+@RequestMapping("/workbench/approvalMessage")
+public class WorkbenchApprovalMessageController {
+
+}
diff --git a/casic-metering-api/src/main/resources/config/application.yml b/casic-metering-api/src/main/resources/config/application.yml
index 0374632..1542cb6 100644
--- a/casic-metering-api/src/main/resources/config/application.yml
+++ b/casic-metering-api/src/main/resources/config/application.yml
@@ -120,4 +120,4 @@
#作者
author: wangpeng
#待生成对象表名
- table-name: workbench_message
+ table-name: workbench_approval_message
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
new file mode 100644
index 0000000..32f67c9
--- /dev/null
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.controller.workbench;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 审批通过通知消息 前端控制器
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+@RestController
+@RequestMapping("/workbench/approvalMessage")
+public class WorkbenchApprovalMessageController {
+
+}
diff --git a/casic-metering-api/src/main/resources/config/application.yml b/casic-metering-api/src/main/resources/config/application.yml
index 0374632..1542cb6 100644
--- a/casic-metering-api/src/main/resources/config/application.yml
+++ b/casic-metering-api/src/main/resources/config/application.yml
@@ -120,4 +120,4 @@
#作者
author: wangpeng
#待生成对象表名
- table-name: workbench_message
+ table-name: workbench_approval_message
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 02da89a..76c1ee7 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -56,8 +56,8 @@
COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"),
CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"),
NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"),
- AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败");
-
+ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"),
+ LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员");
private Integer code;
private String message;
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
new file mode 100644
index 0000000..32f67c9
--- /dev/null
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.controller.workbench;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 审批通过通知消息 前端控制器
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+@RestController
+@RequestMapping("/workbench/approvalMessage")
+public class WorkbenchApprovalMessageController {
+
+}
diff --git a/casic-metering-api/src/main/resources/config/application.yml b/casic-metering-api/src/main/resources/config/application.yml
index 0374632..1542cb6 100644
--- a/casic-metering-api/src/main/resources/config/application.yml
+++ b/casic-metering-api/src/main/resources/config/application.yml
@@ -120,4 +120,4 @@
#作者
author: wangpeng
#待生成对象表名
- table-name: workbench_message
+ table-name: workbench_approval_message
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 02da89a..76c1ee7 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -56,8 +56,8 @@
COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"),
CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"),
NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"),
- AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败");
-
+ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"),
+ LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员");
private Integer code;
private String message;
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
index 26a4e2c..e63ac86 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
@@ -2,6 +2,7 @@
import com.alibaba.excel.util.DateUtils;
import cn.hutool.core.lang.Assert;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.casic.missiles.enums.ApplyFromIdEnum;
@@ -16,12 +17,17 @@
import com.casic.missiles.mapper.equipment.EquipmentStateChangeLogMapper;
import com.casic.missiles.mapper.system.SystemFlowFormMapper;
import com.casic.missiles.model.business.BusinessCertificateReport;
+import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper;
import com.casic.missiles.model.equipment.EquipmentApply;
import com.casic.missiles.model.equipment.EquipmentApplyEquipment;
import com.casic.missiles.model.equipment.EquipmentFixedAssets;
import com.casic.missiles.model.equipment.EquipmentStateChangeLog;
import com.casic.missiles.model.system.SystemFlowForm;
+import com.casic.missiles.model.workbench.WorkbenchApprovalMessage;
+import com.casic.missiles.modular.system.dao.UserMapper;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.utils.SpringContextUtil;
+import com.casic.missiles.utils.WebSocket;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.delegate.DelegateExecution;
@@ -29,7 +35,6 @@
import org.flowable.engine.repository.ProcessDefinition;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.ObjectUtils;
import java.util.Date;
import java.util.List;
@@ -41,6 +46,7 @@
public class ProcessUpdateStateListener implements ExecutionListener {
@Override
+ @Transactional
public void notify(DelegateExecution execution) {
RepositoryService repositoryService = SpringContextUtil.getBean(RepositoryService.class);
SystemFlowFormMapper flowFormMapper = SpringContextUtil.getBean(SystemFlowFormMapper.class);
@@ -90,6 +96,9 @@
updateCertificateState(Long.valueOf(id));
break;
}
+
+ //审批通过,通知发起人
+ sendMessageAndSocket(execution, systemFlowForm);
}
private void updateEquipmentApplyState(String id, String state) {
@@ -118,41 +127,73 @@
UpdateWrapper logUpdateWrapper = new UpdateWrapper<>();
// 修改状态变更记录结束时间
logUpdateWrapper.in("equipment_id", equipmentIds).isNull("end_date").set("end_date", DateUtils.format(new Date()));
- stateChangeLogMapper.update(null, logUpdateWrapper);
+ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
+ }
+ ;
// 获取当前申请的信息
EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id);
// 新增状态变更记录
for (EquipmentApplyEquipment equipment : equipmentApplyEquipments) {
EquipmentStateChangeLog stateChangeLog = new EquipmentStateChangeLog(Long.parseLong(id), Long.parseLong(equipment.getEquipmentId()), state, DateUtils.format(new Date()), null, Long.parseLong(equipmentApply.getApplyPerson()));
- stateChangeLogMapper.insert(stateChangeLog);
+ if (stateChangeLogMapper.insert(stateChangeLog) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
+ }
}
- if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ } else {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
}
- private void updateStandardState (String id, String state){
- MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class);
- UpdateWrapper updateWrapper = new UpdateWrapper<>();
- updateWrapper.in("id", id).set("manager_state", state);
- if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ private void updateStandardState(String id, String state) {
+ MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class);
+ UpdateWrapper updateWrapper = new UpdateWrapper<>();
+ updateWrapper.in("id", id).set("manager_state", state);
+ if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
+ }
- private void updateCertificateState (Long id){
- Assert.isFalse(Objects.isNull(id), () -> {
- throw new BusinessException(BusinessExceptionEnum.ID_NULL);
- });
- BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class);
- BusinessCertificateReport certificateReport = new BusinessCertificateReport();
- certificateReport.setId(id);
- certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中
- certificateReport.setPrintStatus("1"); //打印状态可打印
- int row = certificateReportMapper.updateById(certificateReport);
- if (row <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ private void updateCertificateState(Long id) {
+ Assert.isFalse(Objects.isNull(id), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class);
+ BusinessCertificateReport certificateReport = new BusinessCertificateReport();
+ certificateReport.setId(id);
+ certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中
+ certificateReport.setPrintStatus("1"); //打印状态可打印
+ int row = certificateReportMapper.updateById(certificateReport);
+ if (row <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
+ }
+
+ private void sendMessageAndSocket(DelegateExecution execution, SystemFlowForm systemFlowForm) {
+ JSONObject jsonObject = JSONObject.parseObject(systemFlowForm.getFlowDef());
+ JSONObject workFlowDef = jsonObject.getJSONObject("workFlowDef");
+ Integer noticeStarter = workFlowDef.getInteger("noticeStarter");
+ if (1 == noticeStarter) {
+ Long rootId = Long.valueOf(String.valueOf(execution.getVariable("root")));
+ String formName = workFlowDef.getString("formName");
+ String formId = systemFlowForm.getFormId();
+ //总工作台中需要展示所有业务的用户待审批的列表(查询每个业务的待审批进行组合)
+ //每个业务和前端定一个type(用formId即可,前提要保证流程定义和formId为一对一关系),用于前端页面跳转
+ WorkbenchApprovalMessageMapper approvalMessageMapper = SpringContextUtil.getBean(WorkbenchApprovalMessageMapper.class);
+ UserMapper userMapper = SpringContextUtil.getBean(UserMapper.class);
+ User user = userMapper.selectById(rootId);
+ WorkbenchApprovalMessage approvalMessage = new WorkbenchApprovalMessage();
+ approvalMessage.setNoticeId(rootId);
+ approvalMessage.setNoticeDeptId(user.getDeptId());
+ approvalMessage.setMessageTitle(null);
+ approvalMessage.setMessageContent(formName);
+ approvalMessage.setFormId(formId);
+ if (approvalMessageMapper.insert(approvalMessage) < 0) {
+ log.error("审批通过,通知发起人失败,approvalMessage:{}", approvalMessage.toString());
+ }
+ //websocket消息推送
+ WebSocket webSocket = SpringContextUtil.getBean(WebSocket.class);
+ webSocket.sendOneMessage(String.valueOf(rootId), JSONObject.toJSONString(approvalMessage));
+ }
+ }
}
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
new file mode 100644
index 0000000..32f67c9
--- /dev/null
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.controller.workbench;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 审批通过通知消息 前端控制器
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+@RestController
+@RequestMapping("/workbench/approvalMessage")
+public class WorkbenchApprovalMessageController {
+
+}
diff --git a/casic-metering-api/src/main/resources/config/application.yml b/casic-metering-api/src/main/resources/config/application.yml
index 0374632..1542cb6 100644
--- a/casic-metering-api/src/main/resources/config/application.yml
+++ b/casic-metering-api/src/main/resources/config/application.yml
@@ -120,4 +120,4 @@
#作者
author: wangpeng
#待生成对象表名
- table-name: workbench_message
+ table-name: workbench_approval_message
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 02da89a..76c1ee7 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -56,8 +56,8 @@
COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"),
CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"),
NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"),
- AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败");
-
+ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"),
+ LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员");
private Integer code;
private String message;
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
index 26a4e2c..e63ac86 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
@@ -2,6 +2,7 @@
import com.alibaba.excel.util.DateUtils;
import cn.hutool.core.lang.Assert;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.casic.missiles.enums.ApplyFromIdEnum;
@@ -16,12 +17,17 @@
import com.casic.missiles.mapper.equipment.EquipmentStateChangeLogMapper;
import com.casic.missiles.mapper.system.SystemFlowFormMapper;
import com.casic.missiles.model.business.BusinessCertificateReport;
+import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper;
import com.casic.missiles.model.equipment.EquipmentApply;
import com.casic.missiles.model.equipment.EquipmentApplyEquipment;
import com.casic.missiles.model.equipment.EquipmentFixedAssets;
import com.casic.missiles.model.equipment.EquipmentStateChangeLog;
import com.casic.missiles.model.system.SystemFlowForm;
+import com.casic.missiles.model.workbench.WorkbenchApprovalMessage;
+import com.casic.missiles.modular.system.dao.UserMapper;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.utils.SpringContextUtil;
+import com.casic.missiles.utils.WebSocket;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.delegate.DelegateExecution;
@@ -29,7 +35,6 @@
import org.flowable.engine.repository.ProcessDefinition;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.ObjectUtils;
import java.util.Date;
import java.util.List;
@@ -41,6 +46,7 @@
public class ProcessUpdateStateListener implements ExecutionListener {
@Override
+ @Transactional
public void notify(DelegateExecution execution) {
RepositoryService repositoryService = SpringContextUtil.getBean(RepositoryService.class);
SystemFlowFormMapper flowFormMapper = SpringContextUtil.getBean(SystemFlowFormMapper.class);
@@ -90,6 +96,9 @@
updateCertificateState(Long.valueOf(id));
break;
}
+
+ //审批通过,通知发起人
+ sendMessageAndSocket(execution, systemFlowForm);
}
private void updateEquipmentApplyState(String id, String state) {
@@ -118,41 +127,73 @@
UpdateWrapper logUpdateWrapper = new UpdateWrapper<>();
// 修改状态变更记录结束时间
logUpdateWrapper.in("equipment_id", equipmentIds).isNull("end_date").set("end_date", DateUtils.format(new Date()));
- stateChangeLogMapper.update(null, logUpdateWrapper);
+ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
+ }
+ ;
// 获取当前申请的信息
EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id);
// 新增状态变更记录
for (EquipmentApplyEquipment equipment : equipmentApplyEquipments) {
EquipmentStateChangeLog stateChangeLog = new EquipmentStateChangeLog(Long.parseLong(id), Long.parseLong(equipment.getEquipmentId()), state, DateUtils.format(new Date()), null, Long.parseLong(equipmentApply.getApplyPerson()));
- stateChangeLogMapper.insert(stateChangeLog);
+ if (stateChangeLogMapper.insert(stateChangeLog) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
+ }
}
- if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ } else {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
}
- private void updateStandardState (String id, String state){
- MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class);
- UpdateWrapper updateWrapper = new UpdateWrapper<>();
- updateWrapper.in("id", id).set("manager_state", state);
- if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ private void updateStandardState(String id, String state) {
+ MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class);
+ UpdateWrapper updateWrapper = new UpdateWrapper<>();
+ updateWrapper.in("id", id).set("manager_state", state);
+ if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
+ }
- private void updateCertificateState (Long id){
- Assert.isFalse(Objects.isNull(id), () -> {
- throw new BusinessException(BusinessExceptionEnum.ID_NULL);
- });
- BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class);
- BusinessCertificateReport certificateReport = new BusinessCertificateReport();
- certificateReport.setId(id);
- certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中
- certificateReport.setPrintStatus("1"); //打印状态可打印
- int row = certificateReportMapper.updateById(certificateReport);
- if (row <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ private void updateCertificateState(Long id) {
+ Assert.isFalse(Objects.isNull(id), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class);
+ BusinessCertificateReport certificateReport = new BusinessCertificateReport();
+ certificateReport.setId(id);
+ certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中
+ certificateReport.setPrintStatus("1"); //打印状态可打印
+ int row = certificateReportMapper.updateById(certificateReport);
+ if (row <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
+ }
+
+ private void sendMessageAndSocket(DelegateExecution execution, SystemFlowForm systemFlowForm) {
+ JSONObject jsonObject = JSONObject.parseObject(systemFlowForm.getFlowDef());
+ JSONObject workFlowDef = jsonObject.getJSONObject("workFlowDef");
+ Integer noticeStarter = workFlowDef.getInteger("noticeStarter");
+ if (1 == noticeStarter) {
+ Long rootId = Long.valueOf(String.valueOf(execution.getVariable("root")));
+ String formName = workFlowDef.getString("formName");
+ String formId = systemFlowForm.getFormId();
+ //总工作台中需要展示所有业务的用户待审批的列表(查询每个业务的待审批进行组合)
+ //每个业务和前端定一个type(用formId即可,前提要保证流程定义和formId为一对一关系),用于前端页面跳转
+ WorkbenchApprovalMessageMapper approvalMessageMapper = SpringContextUtil.getBean(WorkbenchApprovalMessageMapper.class);
+ UserMapper userMapper = SpringContextUtil.getBean(UserMapper.class);
+ User user = userMapper.selectById(rootId);
+ WorkbenchApprovalMessage approvalMessage = new WorkbenchApprovalMessage();
+ approvalMessage.setNoticeId(rootId);
+ approvalMessage.setNoticeDeptId(user.getDeptId());
+ approvalMessage.setMessageTitle(null);
+ approvalMessage.setMessageContent(formName);
+ approvalMessage.setFormId(formId);
+ if (approvalMessageMapper.insert(approvalMessage) < 0) {
+ log.error("审批通过,通知发起人失败,approvalMessage:{}", approvalMessage.toString());
+ }
+ //websocket消息推送
+ WebSocket webSocket = SpringContextUtil.getBean(WebSocket.class);
+ webSocket.sendOneMessage(String.valueOf(rootId), JSONObject.toJSONString(approvalMessage));
+ }
+ }
}
diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/workbench/WorkbenchApprovalMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/workbench/WorkbenchApprovalMessageMapper.java
new file mode 100644
index 0000000..dc6fc8b
--- /dev/null
+++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/workbench/WorkbenchApprovalMessageMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper.workbench;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.workbench.WorkbenchApprovalMessage;
+
+/**
+ *
+ * 审批通过通知消息 Mapper 接口
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+public interface WorkbenchApprovalMessageMapper extends BaseMapper {
+
+}
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
new file mode 100644
index 0000000..32f67c9
--- /dev/null
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.controller.workbench;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 审批通过通知消息 前端控制器
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+@RestController
+@RequestMapping("/workbench/approvalMessage")
+public class WorkbenchApprovalMessageController {
+
+}
diff --git a/casic-metering-api/src/main/resources/config/application.yml b/casic-metering-api/src/main/resources/config/application.yml
index 0374632..1542cb6 100644
--- a/casic-metering-api/src/main/resources/config/application.yml
+++ b/casic-metering-api/src/main/resources/config/application.yml
@@ -120,4 +120,4 @@
#作者
author: wangpeng
#待生成对象表名
- table-name: workbench_message
+ table-name: workbench_approval_message
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 02da89a..76c1ee7 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -56,8 +56,8 @@
COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"),
CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"),
NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"),
- AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败");
-
+ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"),
+ LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员");
private Integer code;
private String message;
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
index 26a4e2c..e63ac86 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
@@ -2,6 +2,7 @@
import com.alibaba.excel.util.DateUtils;
import cn.hutool.core.lang.Assert;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.casic.missiles.enums.ApplyFromIdEnum;
@@ -16,12 +17,17 @@
import com.casic.missiles.mapper.equipment.EquipmentStateChangeLogMapper;
import com.casic.missiles.mapper.system.SystemFlowFormMapper;
import com.casic.missiles.model.business.BusinessCertificateReport;
+import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper;
import com.casic.missiles.model.equipment.EquipmentApply;
import com.casic.missiles.model.equipment.EquipmentApplyEquipment;
import com.casic.missiles.model.equipment.EquipmentFixedAssets;
import com.casic.missiles.model.equipment.EquipmentStateChangeLog;
import com.casic.missiles.model.system.SystemFlowForm;
+import com.casic.missiles.model.workbench.WorkbenchApprovalMessage;
+import com.casic.missiles.modular.system.dao.UserMapper;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.utils.SpringContextUtil;
+import com.casic.missiles.utils.WebSocket;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.delegate.DelegateExecution;
@@ -29,7 +35,6 @@
import org.flowable.engine.repository.ProcessDefinition;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.ObjectUtils;
import java.util.Date;
import java.util.List;
@@ -41,6 +46,7 @@
public class ProcessUpdateStateListener implements ExecutionListener {
@Override
+ @Transactional
public void notify(DelegateExecution execution) {
RepositoryService repositoryService = SpringContextUtil.getBean(RepositoryService.class);
SystemFlowFormMapper flowFormMapper = SpringContextUtil.getBean(SystemFlowFormMapper.class);
@@ -90,6 +96,9 @@
updateCertificateState(Long.valueOf(id));
break;
}
+
+ //审批通过,通知发起人
+ sendMessageAndSocket(execution, systemFlowForm);
}
private void updateEquipmentApplyState(String id, String state) {
@@ -118,41 +127,73 @@
UpdateWrapper logUpdateWrapper = new UpdateWrapper<>();
// 修改状态变更记录结束时间
logUpdateWrapper.in("equipment_id", equipmentIds).isNull("end_date").set("end_date", DateUtils.format(new Date()));
- stateChangeLogMapper.update(null, logUpdateWrapper);
+ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
+ }
+ ;
// 获取当前申请的信息
EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id);
// 新增状态变更记录
for (EquipmentApplyEquipment equipment : equipmentApplyEquipments) {
EquipmentStateChangeLog stateChangeLog = new EquipmentStateChangeLog(Long.parseLong(id), Long.parseLong(equipment.getEquipmentId()), state, DateUtils.format(new Date()), null, Long.parseLong(equipmentApply.getApplyPerson()));
- stateChangeLogMapper.insert(stateChangeLog);
+ if (stateChangeLogMapper.insert(stateChangeLog) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
+ }
}
- if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ } else {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
}
- private void updateStandardState (String id, String state){
- MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class);
- UpdateWrapper updateWrapper = new UpdateWrapper<>();
- updateWrapper.in("id", id).set("manager_state", state);
- if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ private void updateStandardState(String id, String state) {
+ MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class);
+ UpdateWrapper updateWrapper = new UpdateWrapper<>();
+ updateWrapper.in("id", id).set("manager_state", state);
+ if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
+ }
- private void updateCertificateState (Long id){
- Assert.isFalse(Objects.isNull(id), () -> {
- throw new BusinessException(BusinessExceptionEnum.ID_NULL);
- });
- BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class);
- BusinessCertificateReport certificateReport = new BusinessCertificateReport();
- certificateReport.setId(id);
- certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中
- certificateReport.setPrintStatus("1"); //打印状态可打印
- int row = certificateReportMapper.updateById(certificateReport);
- if (row <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ private void updateCertificateState(Long id) {
+ Assert.isFalse(Objects.isNull(id), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class);
+ BusinessCertificateReport certificateReport = new BusinessCertificateReport();
+ certificateReport.setId(id);
+ certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中
+ certificateReport.setPrintStatus("1"); //打印状态可打印
+ int row = certificateReportMapper.updateById(certificateReport);
+ if (row <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
+ }
+
+ private void sendMessageAndSocket(DelegateExecution execution, SystemFlowForm systemFlowForm) {
+ JSONObject jsonObject = JSONObject.parseObject(systemFlowForm.getFlowDef());
+ JSONObject workFlowDef = jsonObject.getJSONObject("workFlowDef");
+ Integer noticeStarter = workFlowDef.getInteger("noticeStarter");
+ if (1 == noticeStarter) {
+ Long rootId = Long.valueOf(String.valueOf(execution.getVariable("root")));
+ String formName = workFlowDef.getString("formName");
+ String formId = systemFlowForm.getFormId();
+ //总工作台中需要展示所有业务的用户待审批的列表(查询每个业务的待审批进行组合)
+ //每个业务和前端定一个type(用formId即可,前提要保证流程定义和formId为一对一关系),用于前端页面跳转
+ WorkbenchApprovalMessageMapper approvalMessageMapper = SpringContextUtil.getBean(WorkbenchApprovalMessageMapper.class);
+ UserMapper userMapper = SpringContextUtil.getBean(UserMapper.class);
+ User user = userMapper.selectById(rootId);
+ WorkbenchApprovalMessage approvalMessage = new WorkbenchApprovalMessage();
+ approvalMessage.setNoticeId(rootId);
+ approvalMessage.setNoticeDeptId(user.getDeptId());
+ approvalMessage.setMessageTitle(null);
+ approvalMessage.setMessageContent(formName);
+ approvalMessage.setFormId(formId);
+ if (approvalMessageMapper.insert(approvalMessage) < 0) {
+ log.error("审批通过,通知发起人失败,approvalMessage:{}", approvalMessage.toString());
+ }
+ //websocket消息推送
+ WebSocket webSocket = SpringContextUtil.getBean(WebSocket.class);
+ webSocket.sendOneMessage(String.valueOf(rootId), JSONObject.toJSONString(approvalMessage));
+ }
+ }
}
diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/workbench/WorkbenchApprovalMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/workbench/WorkbenchApprovalMessageMapper.java
new file mode 100644
index 0000000..dc6fc8b
--- /dev/null
+++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/workbench/WorkbenchApprovalMessageMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper.workbench;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.workbench.WorkbenchApprovalMessage;
+
+/**
+ *
+ * 审批通过通知消息 Mapper 接口
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+public interface WorkbenchApprovalMessageMapper extends BaseMapper {
+
+}
diff --git a/casic-metering-dao/src/main/resources/mapper/workbench/WorkbenchApprovalMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/workbench/WorkbenchApprovalMessageMapper.xml
new file mode 100644
index 0000000..a31eede
--- /dev/null
+++ b/casic-metering-dao/src/main/resources/mapper/workbench/WorkbenchApprovalMessageMapper.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, notice_id, notice_dept_id, message_title, message_content, form_id, status, create_time, update_time
+
+
+
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
new file mode 100644
index 0000000..32f67c9
--- /dev/null
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.controller.workbench;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 审批通过通知消息 前端控制器
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+@RestController
+@RequestMapping("/workbench/approvalMessage")
+public class WorkbenchApprovalMessageController {
+
+}
diff --git a/casic-metering-api/src/main/resources/config/application.yml b/casic-metering-api/src/main/resources/config/application.yml
index 0374632..1542cb6 100644
--- a/casic-metering-api/src/main/resources/config/application.yml
+++ b/casic-metering-api/src/main/resources/config/application.yml
@@ -120,4 +120,4 @@
#作者
author: wangpeng
#待生成对象表名
- table-name: workbench_message
+ table-name: workbench_approval_message
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 02da89a..76c1ee7 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -56,8 +56,8 @@
COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"),
CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"),
NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"),
- AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败");
-
+ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"),
+ LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员");
private Integer code;
private String message;
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
index 26a4e2c..e63ac86 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
@@ -2,6 +2,7 @@
import com.alibaba.excel.util.DateUtils;
import cn.hutool.core.lang.Assert;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.casic.missiles.enums.ApplyFromIdEnum;
@@ -16,12 +17,17 @@
import com.casic.missiles.mapper.equipment.EquipmentStateChangeLogMapper;
import com.casic.missiles.mapper.system.SystemFlowFormMapper;
import com.casic.missiles.model.business.BusinessCertificateReport;
+import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper;
import com.casic.missiles.model.equipment.EquipmentApply;
import com.casic.missiles.model.equipment.EquipmentApplyEquipment;
import com.casic.missiles.model.equipment.EquipmentFixedAssets;
import com.casic.missiles.model.equipment.EquipmentStateChangeLog;
import com.casic.missiles.model.system.SystemFlowForm;
+import com.casic.missiles.model.workbench.WorkbenchApprovalMessage;
+import com.casic.missiles.modular.system.dao.UserMapper;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.utils.SpringContextUtil;
+import com.casic.missiles.utils.WebSocket;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.delegate.DelegateExecution;
@@ -29,7 +35,6 @@
import org.flowable.engine.repository.ProcessDefinition;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.ObjectUtils;
import java.util.Date;
import java.util.List;
@@ -41,6 +46,7 @@
public class ProcessUpdateStateListener implements ExecutionListener {
@Override
+ @Transactional
public void notify(DelegateExecution execution) {
RepositoryService repositoryService = SpringContextUtil.getBean(RepositoryService.class);
SystemFlowFormMapper flowFormMapper = SpringContextUtil.getBean(SystemFlowFormMapper.class);
@@ -90,6 +96,9 @@
updateCertificateState(Long.valueOf(id));
break;
}
+
+ //审批通过,通知发起人
+ sendMessageAndSocket(execution, systemFlowForm);
}
private void updateEquipmentApplyState(String id, String state) {
@@ -118,41 +127,73 @@
UpdateWrapper logUpdateWrapper = new UpdateWrapper<>();
// 修改状态变更记录结束时间
logUpdateWrapper.in("equipment_id", equipmentIds).isNull("end_date").set("end_date", DateUtils.format(new Date()));
- stateChangeLogMapper.update(null, logUpdateWrapper);
+ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
+ }
+ ;
// 获取当前申请的信息
EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id);
// 新增状态变更记录
for (EquipmentApplyEquipment equipment : equipmentApplyEquipments) {
EquipmentStateChangeLog stateChangeLog = new EquipmentStateChangeLog(Long.parseLong(id), Long.parseLong(equipment.getEquipmentId()), state, DateUtils.format(new Date()), null, Long.parseLong(equipmentApply.getApplyPerson()));
- stateChangeLogMapper.insert(stateChangeLog);
+ if (stateChangeLogMapper.insert(stateChangeLog) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
+ }
}
- if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ } else {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
}
- private void updateStandardState (String id, String state){
- MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class);
- UpdateWrapper updateWrapper = new UpdateWrapper<>();
- updateWrapper.in("id", id).set("manager_state", state);
- if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ private void updateStandardState(String id, String state) {
+ MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class);
+ UpdateWrapper updateWrapper = new UpdateWrapper<>();
+ updateWrapper.in("id", id).set("manager_state", state);
+ if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
+ }
- private void updateCertificateState (Long id){
- Assert.isFalse(Objects.isNull(id), () -> {
- throw new BusinessException(BusinessExceptionEnum.ID_NULL);
- });
- BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class);
- BusinessCertificateReport certificateReport = new BusinessCertificateReport();
- certificateReport.setId(id);
- certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中
- certificateReport.setPrintStatus("1"); //打印状态可打印
- int row = certificateReportMapper.updateById(certificateReport);
- if (row <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ private void updateCertificateState(Long id) {
+ Assert.isFalse(Objects.isNull(id), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class);
+ BusinessCertificateReport certificateReport = new BusinessCertificateReport();
+ certificateReport.setId(id);
+ certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中
+ certificateReport.setPrintStatus("1"); //打印状态可打印
+ int row = certificateReportMapper.updateById(certificateReport);
+ if (row <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
+ }
+
+ private void sendMessageAndSocket(DelegateExecution execution, SystemFlowForm systemFlowForm) {
+ JSONObject jsonObject = JSONObject.parseObject(systemFlowForm.getFlowDef());
+ JSONObject workFlowDef = jsonObject.getJSONObject("workFlowDef");
+ Integer noticeStarter = workFlowDef.getInteger("noticeStarter");
+ if (1 == noticeStarter) {
+ Long rootId = Long.valueOf(String.valueOf(execution.getVariable("root")));
+ String formName = workFlowDef.getString("formName");
+ String formId = systemFlowForm.getFormId();
+ //总工作台中需要展示所有业务的用户待审批的列表(查询每个业务的待审批进行组合)
+ //每个业务和前端定一个type(用formId即可,前提要保证流程定义和formId为一对一关系),用于前端页面跳转
+ WorkbenchApprovalMessageMapper approvalMessageMapper = SpringContextUtil.getBean(WorkbenchApprovalMessageMapper.class);
+ UserMapper userMapper = SpringContextUtil.getBean(UserMapper.class);
+ User user = userMapper.selectById(rootId);
+ WorkbenchApprovalMessage approvalMessage = new WorkbenchApprovalMessage();
+ approvalMessage.setNoticeId(rootId);
+ approvalMessage.setNoticeDeptId(user.getDeptId());
+ approvalMessage.setMessageTitle(null);
+ approvalMessage.setMessageContent(formName);
+ approvalMessage.setFormId(formId);
+ if (approvalMessageMapper.insert(approvalMessage) < 0) {
+ log.error("审批通过,通知发起人失败,approvalMessage:{}", approvalMessage.toString());
+ }
+ //websocket消息推送
+ WebSocket webSocket = SpringContextUtil.getBean(WebSocket.class);
+ webSocket.sendOneMessage(String.valueOf(rootId), JSONObject.toJSONString(approvalMessage));
+ }
+ }
}
diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/workbench/WorkbenchApprovalMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/workbench/WorkbenchApprovalMessageMapper.java
new file mode 100644
index 0000000..dc6fc8b
--- /dev/null
+++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/workbench/WorkbenchApprovalMessageMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper.workbench;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.workbench.WorkbenchApprovalMessage;
+
+/**
+ *
+ * 审批通过通知消息 Mapper 接口
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+public interface WorkbenchApprovalMessageMapper extends BaseMapper {
+
+}
diff --git a/casic-metering-dao/src/main/resources/mapper/workbench/WorkbenchApprovalMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/workbench/WorkbenchApprovalMessageMapper.xml
new file mode 100644
index 0000000..a31eede
--- /dev/null
+++ b/casic-metering-dao/src/main/resources/mapper/workbench/WorkbenchApprovalMessageMapper.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, notice_id, notice_dept_id, message_title, message_content, form_id, status, create_time, update_time
+
+
+
diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchApprovalMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchApprovalMessage.java
new file mode 100644
index 0000000..452feeb
--- /dev/null
+++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchApprovalMessage.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.model.workbench;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ * 审批通过通知消息
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+@Data
+@TableName("workbench_approval_message")
+public class WorkbenchApprovalMessage implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 通知的用户id
+ */
+ @TableField("notice_id")
+ private Long noticeId;
+
+ /**
+ * 通知的用户部门id
+ */
+ @TableField("notice_dept_id")
+ private Long noticeDeptId;
+
+ /**
+ * 消息主题(标题,冗余)
+ */
+ @TableField("message_title")
+ private String messageTitle;
+
+ /**
+ * 消息内容(表单名字)
+ */
+ @TableField("message_content")
+ private String messageContent;
+
+ /**
+ * 前端表单id(用于区分业务类型及页面跳转)
+ */
+ @TableField("form_id")
+ private String formId;
+
+ /**
+ * 1已读0未读
+ */
+ @TableField("status")
+ private Integer status;
+
+ /**
+ * 创建时间
+ */
+ @TableField("create_time")
+ private String createTime;
+
+ /**
+ * 更新时间
+ */
+ @TableField("update_time")
+ private String updateTime;
+
+
+}
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
new file mode 100644
index 0000000..32f67c9
--- /dev/null
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.controller.workbench;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 审批通过通知消息 前端控制器
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+@RestController
+@RequestMapping("/workbench/approvalMessage")
+public class WorkbenchApprovalMessageController {
+
+}
diff --git a/casic-metering-api/src/main/resources/config/application.yml b/casic-metering-api/src/main/resources/config/application.yml
index 0374632..1542cb6 100644
--- a/casic-metering-api/src/main/resources/config/application.yml
+++ b/casic-metering-api/src/main/resources/config/application.yml
@@ -120,4 +120,4 @@
#作者
author: wangpeng
#待生成对象表名
- table-name: workbench_message
+ table-name: workbench_approval_message
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 02da89a..76c1ee7 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -56,8 +56,8 @@
COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"),
CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"),
NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"),
- AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败");
-
+ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"),
+ LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员");
private Integer code;
private String message;
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
index 26a4e2c..e63ac86 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
@@ -2,6 +2,7 @@
import com.alibaba.excel.util.DateUtils;
import cn.hutool.core.lang.Assert;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.casic.missiles.enums.ApplyFromIdEnum;
@@ -16,12 +17,17 @@
import com.casic.missiles.mapper.equipment.EquipmentStateChangeLogMapper;
import com.casic.missiles.mapper.system.SystemFlowFormMapper;
import com.casic.missiles.model.business.BusinessCertificateReport;
+import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper;
import com.casic.missiles.model.equipment.EquipmentApply;
import com.casic.missiles.model.equipment.EquipmentApplyEquipment;
import com.casic.missiles.model.equipment.EquipmentFixedAssets;
import com.casic.missiles.model.equipment.EquipmentStateChangeLog;
import com.casic.missiles.model.system.SystemFlowForm;
+import com.casic.missiles.model.workbench.WorkbenchApprovalMessage;
+import com.casic.missiles.modular.system.dao.UserMapper;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.utils.SpringContextUtil;
+import com.casic.missiles.utils.WebSocket;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.delegate.DelegateExecution;
@@ -29,7 +35,6 @@
import org.flowable.engine.repository.ProcessDefinition;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.ObjectUtils;
import java.util.Date;
import java.util.List;
@@ -41,6 +46,7 @@
public class ProcessUpdateStateListener implements ExecutionListener {
@Override
+ @Transactional
public void notify(DelegateExecution execution) {
RepositoryService repositoryService = SpringContextUtil.getBean(RepositoryService.class);
SystemFlowFormMapper flowFormMapper = SpringContextUtil.getBean(SystemFlowFormMapper.class);
@@ -90,6 +96,9 @@
updateCertificateState(Long.valueOf(id));
break;
}
+
+ //审批通过,通知发起人
+ sendMessageAndSocket(execution, systemFlowForm);
}
private void updateEquipmentApplyState(String id, String state) {
@@ -118,41 +127,73 @@
UpdateWrapper logUpdateWrapper = new UpdateWrapper<>();
// 修改状态变更记录结束时间
logUpdateWrapper.in("equipment_id", equipmentIds).isNull("end_date").set("end_date", DateUtils.format(new Date()));
- stateChangeLogMapper.update(null, logUpdateWrapper);
+ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
+ }
+ ;
// 获取当前申请的信息
EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id);
// 新增状态变更记录
for (EquipmentApplyEquipment equipment : equipmentApplyEquipments) {
EquipmentStateChangeLog stateChangeLog = new EquipmentStateChangeLog(Long.parseLong(id), Long.parseLong(equipment.getEquipmentId()), state, DateUtils.format(new Date()), null, Long.parseLong(equipmentApply.getApplyPerson()));
- stateChangeLogMapper.insert(stateChangeLog);
+ if (stateChangeLogMapper.insert(stateChangeLog) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
+ }
}
- if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ } else {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
}
- private void updateStandardState (String id, String state){
- MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class);
- UpdateWrapper updateWrapper = new UpdateWrapper<>();
- updateWrapper.in("id", id).set("manager_state", state);
- if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ private void updateStandardState(String id, String state) {
+ MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class);
+ UpdateWrapper updateWrapper = new UpdateWrapper<>();
+ updateWrapper.in("id", id).set("manager_state", state);
+ if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
+ }
- private void updateCertificateState (Long id){
- Assert.isFalse(Objects.isNull(id), () -> {
- throw new BusinessException(BusinessExceptionEnum.ID_NULL);
- });
- BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class);
- BusinessCertificateReport certificateReport = new BusinessCertificateReport();
- certificateReport.setId(id);
- certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中
- certificateReport.setPrintStatus("1"); //打印状态可打印
- int row = certificateReportMapper.updateById(certificateReport);
- if (row <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ private void updateCertificateState(Long id) {
+ Assert.isFalse(Objects.isNull(id), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class);
+ BusinessCertificateReport certificateReport = new BusinessCertificateReport();
+ certificateReport.setId(id);
+ certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中
+ certificateReport.setPrintStatus("1"); //打印状态可打印
+ int row = certificateReportMapper.updateById(certificateReport);
+ if (row <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
+ }
+
+ private void sendMessageAndSocket(DelegateExecution execution, SystemFlowForm systemFlowForm) {
+ JSONObject jsonObject = JSONObject.parseObject(systemFlowForm.getFlowDef());
+ JSONObject workFlowDef = jsonObject.getJSONObject("workFlowDef");
+ Integer noticeStarter = workFlowDef.getInteger("noticeStarter");
+ if (1 == noticeStarter) {
+ Long rootId = Long.valueOf(String.valueOf(execution.getVariable("root")));
+ String formName = workFlowDef.getString("formName");
+ String formId = systemFlowForm.getFormId();
+ //总工作台中需要展示所有业务的用户待审批的列表(查询每个业务的待审批进行组合)
+ //每个业务和前端定一个type(用formId即可,前提要保证流程定义和formId为一对一关系),用于前端页面跳转
+ WorkbenchApprovalMessageMapper approvalMessageMapper = SpringContextUtil.getBean(WorkbenchApprovalMessageMapper.class);
+ UserMapper userMapper = SpringContextUtil.getBean(UserMapper.class);
+ User user = userMapper.selectById(rootId);
+ WorkbenchApprovalMessage approvalMessage = new WorkbenchApprovalMessage();
+ approvalMessage.setNoticeId(rootId);
+ approvalMessage.setNoticeDeptId(user.getDeptId());
+ approvalMessage.setMessageTitle(null);
+ approvalMessage.setMessageContent(formName);
+ approvalMessage.setFormId(formId);
+ if (approvalMessageMapper.insert(approvalMessage) < 0) {
+ log.error("审批通过,通知发起人失败,approvalMessage:{}", approvalMessage.toString());
+ }
+ //websocket消息推送
+ WebSocket webSocket = SpringContextUtil.getBean(WebSocket.class);
+ webSocket.sendOneMessage(String.valueOf(rootId), JSONObject.toJSONString(approvalMessage));
+ }
+ }
}
diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/workbench/WorkbenchApprovalMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/workbench/WorkbenchApprovalMessageMapper.java
new file mode 100644
index 0000000..dc6fc8b
--- /dev/null
+++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/workbench/WorkbenchApprovalMessageMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper.workbench;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.workbench.WorkbenchApprovalMessage;
+
+/**
+ *
+ * 审批通过通知消息 Mapper 接口
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+public interface WorkbenchApprovalMessageMapper extends BaseMapper {
+
+}
diff --git a/casic-metering-dao/src/main/resources/mapper/workbench/WorkbenchApprovalMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/workbench/WorkbenchApprovalMessageMapper.xml
new file mode 100644
index 0000000..a31eede
--- /dev/null
+++ b/casic-metering-dao/src/main/resources/mapper/workbench/WorkbenchApprovalMessageMapper.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, notice_id, notice_dept_id, message_title, message_content, form_id, status, create_time, update_time
+
+
+
diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchApprovalMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchApprovalMessage.java
new file mode 100644
index 0000000..452feeb
--- /dev/null
+++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchApprovalMessage.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.model.workbench;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ * 审批通过通知消息
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+@Data
+@TableName("workbench_approval_message")
+public class WorkbenchApprovalMessage implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 通知的用户id
+ */
+ @TableField("notice_id")
+ private Long noticeId;
+
+ /**
+ * 通知的用户部门id
+ */
+ @TableField("notice_dept_id")
+ private Long noticeDeptId;
+
+ /**
+ * 消息主题(标题,冗余)
+ */
+ @TableField("message_title")
+ private String messageTitle;
+
+ /**
+ * 消息内容(表单名字)
+ */
+ @TableField("message_content")
+ private String messageContent;
+
+ /**
+ * 前端表单id(用于区分业务类型及页面跳转)
+ */
+ @TableField("form_id")
+ private String formId;
+
+ /**
+ * 1已读0未读
+ */
+ @TableField("status")
+ private Integer status;
+
+ /**
+ * 创建时间
+ */
+ @TableField("create_time")
+ private String createTime;
+
+ /**
+ * 更新时间
+ */
+ @TableField("update_time")
+ private String updateTime;
+
+
+}
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java
index cf5144b..3bd316c 100644
--- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java
@@ -21,10 +21,12 @@
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.mapper.business.*;
import com.casic.missiles.mapper.meter.MeterOrganizeMapper;
+import com.casic.missiles.mapper.meter.MeterStaffMapper;
import com.casic.missiles.model.business.BusinessCertificateReport;
import com.casic.missiles.model.business.BusinessLabExecutiveInfo;
import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog;
import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo;
+import com.casic.missiles.model.meter.MeterStaff;
import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService;
import com.casic.missiles.service.business.IBusinessLabExecutiveTemplateInfoService;
import com.casic.missiles.utils.ConvertUtils;
@@ -67,6 +69,8 @@
private MeterOrganizeMapper organizeMapper;
@Autowired
private AbstractDictService dictService;
+ @Autowired
+ private MeterStaffMapper staffMapper;
@Override
public Page handOutListPage(Page page, SampleHandOutListRequest handOutListRequest) throws Exception{
@@ -277,7 +281,11 @@
Assert.isFalse(Objects.isNull(user), () -> {
throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED);
});
- Long userId = user.getId();
+ //登录用户id获取计量人员id,实验室检测信息中存储的是计量人员id
+ MeterStaff meterStaff = getMeterStaffInfo(user);
+ if(Objects.isNull(meterStaff)) throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_NOT_STAFF);
+ Long userId = meterStaff.getId();
+
String measureStatus = labExecutiveListRequest.getMeasureStatus();
Page resultPage = new Page<>();
switch (measureStatus) {
@@ -325,7 +333,11 @@
Assert.isFalse(Objects.isNull(user), () -> {
throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED);
});
- Long userId = user.getId();
+ //登录用户id获取计量人员id,实验室检测信息中存储的是计量人员id
+ MeterStaff meterStaff = getMeterStaffInfo(user);
+ if(Objects.isNull(meterStaff)) throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_NOT_STAFF);
+ Long userId = meterStaff.getId();
+
//查询扫描样品中为该用户待检测中的样品列表
List preList = labExecutiveInfoMapper.selectListForSampleOperate(requestList, userId, MeasureStatusEnum.TO_MEASURE);
if(CollectionUtils.isEmpty(preList)){
@@ -346,7 +358,11 @@
Assert.isFalse(Objects.isNull(user), () -> {
throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED);
});
- Long userId = user.getId();
+ //登录用户id获取计量人员id,实验室检测信息中存储的是计量人员id
+ MeterStaff meterStaff = getMeterStaffInfo(user);
+ if(Objects.isNull(meterStaff)) throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_NOT_STAFF);
+ Long userId = meterStaff.getId();
+
//查询扫描样品中为该用户检测中的样品列表
List preList = labExecutiveInfoMapper.selectListForSampleOperate(requestList, userId, MeasureStatusEnum.IN_MEASURE);
if(CollectionUtils.isEmpty(preList)){
@@ -453,7 +469,12 @@
Assert.isFalse(Objects.isNull(user), () -> {
throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED);
});
- if(request.getMeasurePersonId() != user.getId()){
+ //登录用户id获取计量人员id,实验室检测信息中存储的是计量人员id
+ MeterStaff meterStaff = getMeterStaffInfo(user);
+ if(Objects.isNull(meterStaff)) throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_NOT_STAFF);
+ Long userId = meterStaff.getId();
+
+ if(request.getMeasurePersonId() != userId){
throw new BusinessException(BusinessExceptionEnum.CANNOT_CHANGE_MEASURE_INFO);
}
BusinessLabExecutiveInfo executiveInfo = new BusinessLabExecutiveInfo();
@@ -489,7 +510,11 @@
Assert.isFalse(Objects.isNull(user), () -> {
throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED);
});
- Long userId = user.getId();
+ //登录用户id获取计量人员id,实验室检测信息中存储的是计量人员id
+ MeterStaff meterStaff = getMeterStaffInfo(user);
+ if(Objects.isNull(meterStaff)) throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_NOT_STAFF);
+ Long userId = meterStaff.getId();
+
//删除实验室检测列表中退回数据
int deleteFlag = labExecutiveInfoMapper.deleteById(request.getId());
//退回操作记录表中增加数据
@@ -534,6 +559,13 @@
return wrapper;
}
+ private MeterStaff getMeterStaffInfo(AuthUser user) {
+ String account = user.getAccount();
+ QueryWrapper wrapper = new QueryWrapper<>();
+ wrapper.eq("account", account);
+ return staffMapper.selectOne(wrapper);
+ }
+
private HandOutLabExecutiveDTO getHandOutLabExecutiveDTO(Long orderId, Long sampleId) {
List labExecutiveList = labExecutiveInfoMapper.selectListByInMeasureStatus(orderId, sampleId);
if (CollectionUtils.isEmpty(labExecutiveList)) {
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
new file mode 100644
index 0000000..32f67c9
--- /dev/null
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.controller.workbench;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 审批通过通知消息 前端控制器
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+@RestController
+@RequestMapping("/workbench/approvalMessage")
+public class WorkbenchApprovalMessageController {
+
+}
diff --git a/casic-metering-api/src/main/resources/config/application.yml b/casic-metering-api/src/main/resources/config/application.yml
index 0374632..1542cb6 100644
--- a/casic-metering-api/src/main/resources/config/application.yml
+++ b/casic-metering-api/src/main/resources/config/application.yml
@@ -120,4 +120,4 @@
#作者
author: wangpeng
#待生成对象表名
- table-name: workbench_message
+ table-name: workbench_approval_message
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 02da89a..76c1ee7 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -56,8 +56,8 @@
COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"),
CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"),
NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"),
- AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败");
-
+ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"),
+ LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员");
private Integer code;
private String message;
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
index 26a4e2c..e63ac86 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
@@ -2,6 +2,7 @@
import com.alibaba.excel.util.DateUtils;
import cn.hutool.core.lang.Assert;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.casic.missiles.enums.ApplyFromIdEnum;
@@ -16,12 +17,17 @@
import com.casic.missiles.mapper.equipment.EquipmentStateChangeLogMapper;
import com.casic.missiles.mapper.system.SystemFlowFormMapper;
import com.casic.missiles.model.business.BusinessCertificateReport;
+import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper;
import com.casic.missiles.model.equipment.EquipmentApply;
import com.casic.missiles.model.equipment.EquipmentApplyEquipment;
import com.casic.missiles.model.equipment.EquipmentFixedAssets;
import com.casic.missiles.model.equipment.EquipmentStateChangeLog;
import com.casic.missiles.model.system.SystemFlowForm;
+import com.casic.missiles.model.workbench.WorkbenchApprovalMessage;
+import com.casic.missiles.modular.system.dao.UserMapper;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.utils.SpringContextUtil;
+import com.casic.missiles.utils.WebSocket;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.delegate.DelegateExecution;
@@ -29,7 +35,6 @@
import org.flowable.engine.repository.ProcessDefinition;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.ObjectUtils;
import java.util.Date;
import java.util.List;
@@ -41,6 +46,7 @@
public class ProcessUpdateStateListener implements ExecutionListener {
@Override
+ @Transactional
public void notify(DelegateExecution execution) {
RepositoryService repositoryService = SpringContextUtil.getBean(RepositoryService.class);
SystemFlowFormMapper flowFormMapper = SpringContextUtil.getBean(SystemFlowFormMapper.class);
@@ -90,6 +96,9 @@
updateCertificateState(Long.valueOf(id));
break;
}
+
+ //审批通过,通知发起人
+ sendMessageAndSocket(execution, systemFlowForm);
}
private void updateEquipmentApplyState(String id, String state) {
@@ -118,41 +127,73 @@
UpdateWrapper logUpdateWrapper = new UpdateWrapper<>();
// 修改状态变更记录结束时间
logUpdateWrapper.in("equipment_id", equipmentIds).isNull("end_date").set("end_date", DateUtils.format(new Date()));
- stateChangeLogMapper.update(null, logUpdateWrapper);
+ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
+ }
+ ;
// 获取当前申请的信息
EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id);
// 新增状态变更记录
for (EquipmentApplyEquipment equipment : equipmentApplyEquipments) {
EquipmentStateChangeLog stateChangeLog = new EquipmentStateChangeLog(Long.parseLong(id), Long.parseLong(equipment.getEquipmentId()), state, DateUtils.format(new Date()), null, Long.parseLong(equipmentApply.getApplyPerson()));
- stateChangeLogMapper.insert(stateChangeLog);
+ if (stateChangeLogMapper.insert(stateChangeLog) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
+ }
}
- if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ } else {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
}
- private void updateStandardState (String id, String state){
- MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class);
- UpdateWrapper updateWrapper = new UpdateWrapper<>();
- updateWrapper.in("id", id).set("manager_state", state);
- if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ private void updateStandardState(String id, String state) {
+ MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class);
+ UpdateWrapper updateWrapper = new UpdateWrapper<>();
+ updateWrapper.in("id", id).set("manager_state", state);
+ if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
+ }
- private void updateCertificateState (Long id){
- Assert.isFalse(Objects.isNull(id), () -> {
- throw new BusinessException(BusinessExceptionEnum.ID_NULL);
- });
- BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class);
- BusinessCertificateReport certificateReport = new BusinessCertificateReport();
- certificateReport.setId(id);
- certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中
- certificateReport.setPrintStatus("1"); //打印状态可打印
- int row = certificateReportMapper.updateById(certificateReport);
- if (row <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ private void updateCertificateState(Long id) {
+ Assert.isFalse(Objects.isNull(id), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class);
+ BusinessCertificateReport certificateReport = new BusinessCertificateReport();
+ certificateReport.setId(id);
+ certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中
+ certificateReport.setPrintStatus("1"); //打印状态可打印
+ int row = certificateReportMapper.updateById(certificateReport);
+ if (row <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
+ }
+
+ private void sendMessageAndSocket(DelegateExecution execution, SystemFlowForm systemFlowForm) {
+ JSONObject jsonObject = JSONObject.parseObject(systemFlowForm.getFlowDef());
+ JSONObject workFlowDef = jsonObject.getJSONObject("workFlowDef");
+ Integer noticeStarter = workFlowDef.getInteger("noticeStarter");
+ if (1 == noticeStarter) {
+ Long rootId = Long.valueOf(String.valueOf(execution.getVariable("root")));
+ String formName = workFlowDef.getString("formName");
+ String formId = systemFlowForm.getFormId();
+ //总工作台中需要展示所有业务的用户待审批的列表(查询每个业务的待审批进行组合)
+ //每个业务和前端定一个type(用formId即可,前提要保证流程定义和formId为一对一关系),用于前端页面跳转
+ WorkbenchApprovalMessageMapper approvalMessageMapper = SpringContextUtil.getBean(WorkbenchApprovalMessageMapper.class);
+ UserMapper userMapper = SpringContextUtil.getBean(UserMapper.class);
+ User user = userMapper.selectById(rootId);
+ WorkbenchApprovalMessage approvalMessage = new WorkbenchApprovalMessage();
+ approvalMessage.setNoticeId(rootId);
+ approvalMessage.setNoticeDeptId(user.getDeptId());
+ approvalMessage.setMessageTitle(null);
+ approvalMessage.setMessageContent(formName);
+ approvalMessage.setFormId(formId);
+ if (approvalMessageMapper.insert(approvalMessage) < 0) {
+ log.error("审批通过,通知发起人失败,approvalMessage:{}", approvalMessage.toString());
+ }
+ //websocket消息推送
+ WebSocket webSocket = SpringContextUtil.getBean(WebSocket.class);
+ webSocket.sendOneMessage(String.valueOf(rootId), JSONObject.toJSONString(approvalMessage));
+ }
+ }
}
diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/workbench/WorkbenchApprovalMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/workbench/WorkbenchApprovalMessageMapper.java
new file mode 100644
index 0000000..dc6fc8b
--- /dev/null
+++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/workbench/WorkbenchApprovalMessageMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper.workbench;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.workbench.WorkbenchApprovalMessage;
+
+/**
+ *
+ * 审批通过通知消息 Mapper 接口
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+public interface WorkbenchApprovalMessageMapper extends BaseMapper {
+
+}
diff --git a/casic-metering-dao/src/main/resources/mapper/workbench/WorkbenchApprovalMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/workbench/WorkbenchApprovalMessageMapper.xml
new file mode 100644
index 0000000..a31eede
--- /dev/null
+++ b/casic-metering-dao/src/main/resources/mapper/workbench/WorkbenchApprovalMessageMapper.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, notice_id, notice_dept_id, message_title, message_content, form_id, status, create_time, update_time
+
+
+
diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchApprovalMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchApprovalMessage.java
new file mode 100644
index 0000000..452feeb
--- /dev/null
+++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchApprovalMessage.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.model.workbench;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ * 审批通过通知消息
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+@Data
+@TableName("workbench_approval_message")
+public class WorkbenchApprovalMessage implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 通知的用户id
+ */
+ @TableField("notice_id")
+ private Long noticeId;
+
+ /**
+ * 通知的用户部门id
+ */
+ @TableField("notice_dept_id")
+ private Long noticeDeptId;
+
+ /**
+ * 消息主题(标题,冗余)
+ */
+ @TableField("message_title")
+ private String messageTitle;
+
+ /**
+ * 消息内容(表单名字)
+ */
+ @TableField("message_content")
+ private String messageContent;
+
+ /**
+ * 前端表单id(用于区分业务类型及页面跳转)
+ */
+ @TableField("form_id")
+ private String formId;
+
+ /**
+ * 1已读0未读
+ */
+ @TableField("status")
+ private Integer status;
+
+ /**
+ * 创建时间
+ */
+ @TableField("create_time")
+ private String createTime;
+
+ /**
+ * 更新时间
+ */
+ @TableField("update_time")
+ private String updateTime;
+
+
+}
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java
index cf5144b..3bd316c 100644
--- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java
@@ -21,10 +21,12 @@
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.mapper.business.*;
import com.casic.missiles.mapper.meter.MeterOrganizeMapper;
+import com.casic.missiles.mapper.meter.MeterStaffMapper;
import com.casic.missiles.model.business.BusinessCertificateReport;
import com.casic.missiles.model.business.BusinessLabExecutiveInfo;
import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog;
import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo;
+import com.casic.missiles.model.meter.MeterStaff;
import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService;
import com.casic.missiles.service.business.IBusinessLabExecutiveTemplateInfoService;
import com.casic.missiles.utils.ConvertUtils;
@@ -67,6 +69,8 @@
private MeterOrganizeMapper organizeMapper;
@Autowired
private AbstractDictService dictService;
+ @Autowired
+ private MeterStaffMapper staffMapper;
@Override
public Page handOutListPage(Page page, SampleHandOutListRequest handOutListRequest) throws Exception{
@@ -277,7 +281,11 @@
Assert.isFalse(Objects.isNull(user), () -> {
throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED);
});
- Long userId = user.getId();
+ //登录用户id获取计量人员id,实验室检测信息中存储的是计量人员id
+ MeterStaff meterStaff = getMeterStaffInfo(user);
+ if(Objects.isNull(meterStaff)) throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_NOT_STAFF);
+ Long userId = meterStaff.getId();
+
String measureStatus = labExecutiveListRequest.getMeasureStatus();
Page resultPage = new Page<>();
switch (measureStatus) {
@@ -325,7 +333,11 @@
Assert.isFalse(Objects.isNull(user), () -> {
throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED);
});
- Long userId = user.getId();
+ //登录用户id获取计量人员id,实验室检测信息中存储的是计量人员id
+ MeterStaff meterStaff = getMeterStaffInfo(user);
+ if(Objects.isNull(meterStaff)) throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_NOT_STAFF);
+ Long userId = meterStaff.getId();
+
//查询扫描样品中为该用户待检测中的样品列表
List preList = labExecutiveInfoMapper.selectListForSampleOperate(requestList, userId, MeasureStatusEnum.TO_MEASURE);
if(CollectionUtils.isEmpty(preList)){
@@ -346,7 +358,11 @@
Assert.isFalse(Objects.isNull(user), () -> {
throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED);
});
- Long userId = user.getId();
+ //登录用户id获取计量人员id,实验室检测信息中存储的是计量人员id
+ MeterStaff meterStaff = getMeterStaffInfo(user);
+ if(Objects.isNull(meterStaff)) throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_NOT_STAFF);
+ Long userId = meterStaff.getId();
+
//查询扫描样品中为该用户检测中的样品列表
List preList = labExecutiveInfoMapper.selectListForSampleOperate(requestList, userId, MeasureStatusEnum.IN_MEASURE);
if(CollectionUtils.isEmpty(preList)){
@@ -453,7 +469,12 @@
Assert.isFalse(Objects.isNull(user), () -> {
throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED);
});
- if(request.getMeasurePersonId() != user.getId()){
+ //登录用户id获取计量人员id,实验室检测信息中存储的是计量人员id
+ MeterStaff meterStaff = getMeterStaffInfo(user);
+ if(Objects.isNull(meterStaff)) throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_NOT_STAFF);
+ Long userId = meterStaff.getId();
+
+ if(request.getMeasurePersonId() != userId){
throw new BusinessException(BusinessExceptionEnum.CANNOT_CHANGE_MEASURE_INFO);
}
BusinessLabExecutiveInfo executiveInfo = new BusinessLabExecutiveInfo();
@@ -489,7 +510,11 @@
Assert.isFalse(Objects.isNull(user), () -> {
throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED);
});
- Long userId = user.getId();
+ //登录用户id获取计量人员id,实验室检测信息中存储的是计量人员id
+ MeterStaff meterStaff = getMeterStaffInfo(user);
+ if(Objects.isNull(meterStaff)) throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_NOT_STAFF);
+ Long userId = meterStaff.getId();
+
//删除实验室检测列表中退回数据
int deleteFlag = labExecutiveInfoMapper.deleteById(request.getId());
//退回操作记录表中增加数据
@@ -534,6 +559,13 @@
return wrapper;
}
+ private MeterStaff getMeterStaffInfo(AuthUser user) {
+ String account = user.getAccount();
+ QueryWrapper wrapper = new QueryWrapper<>();
+ wrapper.eq("account", account);
+ return staffMapper.selectOne(wrapper);
+ }
+
private HandOutLabExecutiveDTO getHandOutLabExecutiveDTO(Long orderId, Long sampleId) {
List labExecutiveList = labExecutiveInfoMapper.selectListByInMeasureStatus(orderId, sampleId);
if (CollectionUtils.isEmpty(labExecutiveList)) {
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchApprovalMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchApprovalMessageServiceImpl.java
new file mode 100644
index 0000000..8d07e18
--- /dev/null
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchApprovalMessageServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.service.Impl.workbench;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper;
+import com.casic.missiles.model.workbench.WorkbenchApprovalMessage;
+import com.casic.missiles.service.workbench.IWorkbenchApprovalMessageService;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 审批通过通知消息 服务实现类
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+@Service
+public class WorkbenchApprovalMessageServiceImpl extends ServiceImpl implements IWorkbenchApprovalMessageService {
+
+}
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
new file mode 100644
index 0000000..32f67c9
--- /dev/null
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/workbench/WorkbenchApprovalMessageController.java
@@ -0,0 +1,18 @@
+package com.casic.missiles.controller.workbench;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *
+ * 审批通过通知消息 前端控制器
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+@RestController
+@RequestMapping("/workbench/approvalMessage")
+public class WorkbenchApprovalMessageController {
+
+}
diff --git a/casic-metering-api/src/main/resources/config/application.yml b/casic-metering-api/src/main/resources/config/application.yml
index 0374632..1542cb6 100644
--- a/casic-metering-api/src/main/resources/config/application.yml
+++ b/casic-metering-api/src/main/resources/config/application.yml
@@ -120,4 +120,4 @@
#作者
author: wangpeng
#待生成对象表名
- table-name: workbench_message
+ table-name: workbench_approval_message
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
index 02da89a..76c1ee7 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java
@@ -56,8 +56,8 @@
COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"),
CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"),
NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"),
- AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败");
-
+ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"),
+ LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员");
private Integer code;
private String message;
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
index 26a4e2c..e63ac86 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/ProcessUpdateStateListener.java
@@ -2,6 +2,7 @@
import com.alibaba.excel.util.DateUtils;
import cn.hutool.core.lang.Assert;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.casic.missiles.enums.ApplyFromIdEnum;
@@ -16,12 +17,17 @@
import com.casic.missiles.mapper.equipment.EquipmentStateChangeLogMapper;
import com.casic.missiles.mapper.system.SystemFlowFormMapper;
import com.casic.missiles.model.business.BusinessCertificateReport;
+import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper;
import com.casic.missiles.model.equipment.EquipmentApply;
import com.casic.missiles.model.equipment.EquipmentApplyEquipment;
import com.casic.missiles.model.equipment.EquipmentFixedAssets;
import com.casic.missiles.model.equipment.EquipmentStateChangeLog;
import com.casic.missiles.model.system.SystemFlowForm;
+import com.casic.missiles.model.workbench.WorkbenchApprovalMessage;
+import com.casic.missiles.modular.system.dao.UserMapper;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.utils.SpringContextUtil;
+import com.casic.missiles.utils.WebSocket;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.delegate.DelegateExecution;
@@ -29,7 +35,6 @@
import org.flowable.engine.repository.ProcessDefinition;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.ObjectUtils;
import java.util.Date;
import java.util.List;
@@ -41,6 +46,7 @@
public class ProcessUpdateStateListener implements ExecutionListener {
@Override
+ @Transactional
public void notify(DelegateExecution execution) {
RepositoryService repositoryService = SpringContextUtil.getBean(RepositoryService.class);
SystemFlowFormMapper flowFormMapper = SpringContextUtil.getBean(SystemFlowFormMapper.class);
@@ -90,6 +96,9 @@
updateCertificateState(Long.valueOf(id));
break;
}
+
+ //审批通过,通知发起人
+ sendMessageAndSocket(execution, systemFlowForm);
}
private void updateEquipmentApplyState(String id, String state) {
@@ -118,41 +127,73 @@
UpdateWrapper logUpdateWrapper = new UpdateWrapper<>();
// 修改状态变更记录结束时间
logUpdateWrapper.in("equipment_id", equipmentIds).isNull("end_date").set("end_date", DateUtils.format(new Date()));
- stateChangeLogMapper.update(null, logUpdateWrapper);
+ if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
+ }
+ ;
// 获取当前申请的信息
EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id);
// 新增状态变更记录
for (EquipmentApplyEquipment equipment : equipmentApplyEquipments) {
EquipmentStateChangeLog stateChangeLog = new EquipmentStateChangeLog(Long.parseLong(id), Long.parseLong(equipment.getEquipmentId()), state, DateUtils.format(new Date()), null, Long.parseLong(equipmentApply.getApplyPerson()));
- stateChangeLogMapper.insert(stateChangeLog);
+ if (stateChangeLogMapper.insert(stateChangeLog) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
+ }
}
- if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ } else {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
}
- private void updateStandardState (String id, String state){
- MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class);
- UpdateWrapper updateWrapper = new UpdateWrapper<>();
- updateWrapper.in("id", id).set("manager_state", state);
- if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ private void updateStandardState(String id, String state) {
+ MeterFixedAssetsMapper meterFixedAssetsMapper = SpringContextUtil.getBean(MeterFixedAssetsMapper.class);
+ UpdateWrapper updateWrapper = new UpdateWrapper<>();
+ updateWrapper.in("id", id).set("manager_state", state);
+ if (meterFixedAssetsMapper.update(null, updateWrapper) <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
+ }
- private void updateCertificateState (Long id){
- Assert.isFalse(Objects.isNull(id), () -> {
- throw new BusinessException(BusinessExceptionEnum.ID_NULL);
- });
- BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class);
- BusinessCertificateReport certificateReport = new BusinessCertificateReport();
- certificateReport.setId(id);
- certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中
- certificateReport.setPrintStatus("1"); //打印状态可打印
- int row = certificateReportMapper.updateById(certificateReport);
- if (row <= 0) {
- throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
- }
+ private void updateCertificateState(Long id) {
+ Assert.isFalse(Objects.isNull(id), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class);
+ BusinessCertificateReport certificateReport = new BusinessCertificateReport();
+ certificateReport.setId(id);
+ certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); //审批状态为审批中
+ certificateReport.setPrintStatus("1"); //打印状态可打印
+ int row = certificateReportMapper.updateById(certificateReport);
+ if (row <= 0) {
+ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
+ }
+
+ private void sendMessageAndSocket(DelegateExecution execution, SystemFlowForm systemFlowForm) {
+ JSONObject jsonObject = JSONObject.parseObject(systemFlowForm.getFlowDef());
+ JSONObject workFlowDef = jsonObject.getJSONObject("workFlowDef");
+ Integer noticeStarter = workFlowDef.getInteger("noticeStarter");
+ if (1 == noticeStarter) {
+ Long rootId = Long.valueOf(String.valueOf(execution.getVariable("root")));
+ String formName = workFlowDef.getString("formName");
+ String formId = systemFlowForm.getFormId();
+ //总工作台中需要展示所有业务的用户待审批的列表(查询每个业务的待审批进行组合)
+ //每个业务和前端定一个type(用formId即可,前提要保证流程定义和formId为一对一关系),用于前端页面跳转
+ WorkbenchApprovalMessageMapper approvalMessageMapper = SpringContextUtil.getBean(WorkbenchApprovalMessageMapper.class);
+ UserMapper userMapper = SpringContextUtil.getBean(UserMapper.class);
+ User user = userMapper.selectById(rootId);
+ WorkbenchApprovalMessage approvalMessage = new WorkbenchApprovalMessage();
+ approvalMessage.setNoticeId(rootId);
+ approvalMessage.setNoticeDeptId(user.getDeptId());
+ approvalMessage.setMessageTitle(null);
+ approvalMessage.setMessageContent(formName);
+ approvalMessage.setFormId(formId);
+ if (approvalMessageMapper.insert(approvalMessage) < 0) {
+ log.error("审批通过,通知发起人失败,approvalMessage:{}", approvalMessage.toString());
+ }
+ //websocket消息推送
+ WebSocket webSocket = SpringContextUtil.getBean(WebSocket.class);
+ webSocket.sendOneMessage(String.valueOf(rootId), JSONObject.toJSONString(approvalMessage));
+ }
+ }
}
diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/workbench/WorkbenchApprovalMessageMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/workbench/WorkbenchApprovalMessageMapper.java
new file mode 100644
index 0000000..dc6fc8b
--- /dev/null
+++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/workbench/WorkbenchApprovalMessageMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.mapper.workbench;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.missiles.model.workbench.WorkbenchApprovalMessage;
+
+/**
+ *
+ * 审批通过通知消息 Mapper 接口
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+public interface WorkbenchApprovalMessageMapper extends BaseMapper {
+
+}
diff --git a/casic-metering-dao/src/main/resources/mapper/workbench/WorkbenchApprovalMessageMapper.xml b/casic-metering-dao/src/main/resources/mapper/workbench/WorkbenchApprovalMessageMapper.xml
new file mode 100644
index 0000000..a31eede
--- /dev/null
+++ b/casic-metering-dao/src/main/resources/mapper/workbench/WorkbenchApprovalMessageMapper.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ id, notice_id, notice_dept_id, message_title, message_content, form_id, status, create_time, update_time
+
+
+
diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchApprovalMessage.java b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchApprovalMessage.java
new file mode 100644
index 0000000..452feeb
--- /dev/null
+++ b/casic-metering-model/src/main/java/com/casic/missiles/model/workbench/WorkbenchApprovalMessage.java
@@ -0,0 +1,76 @@
+package com.casic.missiles.model.workbench;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ *
+ * 审批通过通知消息
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+@Data
+@TableName("workbench_approval_message")
+public class WorkbenchApprovalMessage implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 通知的用户id
+ */
+ @TableField("notice_id")
+ private Long noticeId;
+
+ /**
+ * 通知的用户部门id
+ */
+ @TableField("notice_dept_id")
+ private Long noticeDeptId;
+
+ /**
+ * 消息主题(标题,冗余)
+ */
+ @TableField("message_title")
+ private String messageTitle;
+
+ /**
+ * 消息内容(表单名字)
+ */
+ @TableField("message_content")
+ private String messageContent;
+
+ /**
+ * 前端表单id(用于区分业务类型及页面跳转)
+ */
+ @TableField("form_id")
+ private String formId;
+
+ /**
+ * 1已读0未读
+ */
+ @TableField("status")
+ private Integer status;
+
+ /**
+ * 创建时间
+ */
+ @TableField("create_time")
+ private String createTime;
+
+ /**
+ * 更新时间
+ */
+ @TableField("update_time")
+ private String updateTime;
+
+
+}
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java
index cf5144b..3bd316c 100644
--- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java
@@ -21,10 +21,12 @@
import com.casic.missiles.exception.BusinessException;
import com.casic.missiles.mapper.business.*;
import com.casic.missiles.mapper.meter.MeterOrganizeMapper;
+import com.casic.missiles.mapper.meter.MeterStaffMapper;
import com.casic.missiles.model.business.BusinessCertificateReport;
import com.casic.missiles.model.business.BusinessLabExecutiveInfo;
import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog;
import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo;
+import com.casic.missiles.model.meter.MeterStaff;
import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService;
import com.casic.missiles.service.business.IBusinessLabExecutiveTemplateInfoService;
import com.casic.missiles.utils.ConvertUtils;
@@ -67,6 +69,8 @@
private MeterOrganizeMapper organizeMapper;
@Autowired
private AbstractDictService dictService;
+ @Autowired
+ private MeterStaffMapper staffMapper;
@Override
public Page handOutListPage(Page page, SampleHandOutListRequest handOutListRequest) throws Exception{
@@ -277,7 +281,11 @@
Assert.isFalse(Objects.isNull(user), () -> {
throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED);
});
- Long userId = user.getId();
+ //登录用户id获取计量人员id,实验室检测信息中存储的是计量人员id
+ MeterStaff meterStaff = getMeterStaffInfo(user);
+ if(Objects.isNull(meterStaff)) throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_NOT_STAFF);
+ Long userId = meterStaff.getId();
+
String measureStatus = labExecutiveListRequest.getMeasureStatus();
Page resultPage = new Page<>();
switch (measureStatus) {
@@ -325,7 +333,11 @@
Assert.isFalse(Objects.isNull(user), () -> {
throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED);
});
- Long userId = user.getId();
+ //登录用户id获取计量人员id,实验室检测信息中存储的是计量人员id
+ MeterStaff meterStaff = getMeterStaffInfo(user);
+ if(Objects.isNull(meterStaff)) throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_NOT_STAFF);
+ Long userId = meterStaff.getId();
+
//查询扫描样品中为该用户待检测中的样品列表
List preList = labExecutiveInfoMapper.selectListForSampleOperate(requestList, userId, MeasureStatusEnum.TO_MEASURE);
if(CollectionUtils.isEmpty(preList)){
@@ -346,7 +358,11 @@
Assert.isFalse(Objects.isNull(user), () -> {
throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED);
});
- Long userId = user.getId();
+ //登录用户id获取计量人员id,实验室检测信息中存储的是计量人员id
+ MeterStaff meterStaff = getMeterStaffInfo(user);
+ if(Objects.isNull(meterStaff)) throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_NOT_STAFF);
+ Long userId = meterStaff.getId();
+
//查询扫描样品中为该用户检测中的样品列表
List preList = labExecutiveInfoMapper.selectListForSampleOperate(requestList, userId, MeasureStatusEnum.IN_MEASURE);
if(CollectionUtils.isEmpty(preList)){
@@ -453,7 +469,12 @@
Assert.isFalse(Objects.isNull(user), () -> {
throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED);
});
- if(request.getMeasurePersonId() != user.getId()){
+ //登录用户id获取计量人员id,实验室检测信息中存储的是计量人员id
+ MeterStaff meterStaff = getMeterStaffInfo(user);
+ if(Objects.isNull(meterStaff)) throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_NOT_STAFF);
+ Long userId = meterStaff.getId();
+
+ if(request.getMeasurePersonId() != userId){
throw new BusinessException(BusinessExceptionEnum.CANNOT_CHANGE_MEASURE_INFO);
}
BusinessLabExecutiveInfo executiveInfo = new BusinessLabExecutiveInfo();
@@ -489,7 +510,11 @@
Assert.isFalse(Objects.isNull(user), () -> {
throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED);
});
- Long userId = user.getId();
+ //登录用户id获取计量人员id,实验室检测信息中存储的是计量人员id
+ MeterStaff meterStaff = getMeterStaffInfo(user);
+ if(Objects.isNull(meterStaff)) throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_NOT_STAFF);
+ Long userId = meterStaff.getId();
+
//删除实验室检测列表中退回数据
int deleteFlag = labExecutiveInfoMapper.deleteById(request.getId());
//退回操作记录表中增加数据
@@ -534,6 +559,13 @@
return wrapper;
}
+ private MeterStaff getMeterStaffInfo(AuthUser user) {
+ String account = user.getAccount();
+ QueryWrapper wrapper = new QueryWrapper<>();
+ wrapper.eq("account", account);
+ return staffMapper.selectOne(wrapper);
+ }
+
private HandOutLabExecutiveDTO getHandOutLabExecutiveDTO(Long orderId, Long sampleId) {
List labExecutiveList = labExecutiveInfoMapper.selectListByInMeasureStatus(orderId, sampleId);
if (CollectionUtils.isEmpty(labExecutiveList)) {
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchApprovalMessageServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchApprovalMessageServiceImpl.java
new file mode 100644
index 0000000..8d07e18
--- /dev/null
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/workbench/WorkbenchApprovalMessageServiceImpl.java
@@ -0,0 +1,20 @@
+package com.casic.missiles.service.Impl.workbench;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.casic.missiles.mapper.workbench.WorkbenchApprovalMessageMapper;
+import com.casic.missiles.model.workbench.WorkbenchApprovalMessage;
+import com.casic.missiles.service.workbench.IWorkbenchApprovalMessageService;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 审批通过通知消息 服务实现类
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+@Service
+public class WorkbenchApprovalMessageServiceImpl extends ServiceImpl implements IWorkbenchApprovalMessageService {
+
+}
diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/workbench/IWorkbenchApprovalMessageService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/workbench/IWorkbenchApprovalMessageService.java
new file mode 100644
index 0000000..611cad0
--- /dev/null
+++ b/casic-metering-service/src/main/java/com/casic/missiles/service/workbench/IWorkbenchApprovalMessageService.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.service.workbench;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.casic.missiles.model.workbench.WorkbenchApprovalMessage;
+
+/**
+ *
+ * 审批通过通知消息 服务类
+ *
+ *
+ * @author wangpeng
+ * @since 2023-02-24
+ */
+public interface IWorkbenchApprovalMessageService extends IService {
+
+}