list) {
+ for (WorkbenchRemindMessage message : list) {
+ Session session = sessionPool.get(String.valueOf(message.getRemindId()));
+ if (session != null) {
+ try {
+ session.getAsyncRemote().sendText(JSONObject.toJSONString(message));
+ } catch (Exception e) {
+ log.error("【websocket消息】列表消息发送异常");
+ e.printStackTrace();
+ }
+ }
+ }
+ }
}
diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java
index 499ba5c..add1f9e 100644
--- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java
+++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java
@@ -8,6 +8,7 @@
import org.apache.ibatis.annotations.Param;
import java.util.List;
+import org.apache.ibatis.annotations.Select;
/**
*
@@ -23,4 +24,7 @@
+ @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report")
+ Long selectMaxCode();
+
}
diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java
index 4c32561..564ad43 100644
--- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java
+++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java
@@ -8,6 +8,7 @@
import com.casic.missiles.dto.meter.MeterStaffRequest;
import com.casic.missiles.model.meter.MeterCertificate;
import com.casic.missiles.model.meter.MeterCertificateExpireMessage;
+import com.casic.missiles.model.workbench.WorkbenchRemindMessage;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -18,7 +19,7 @@
List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest);
- List queryReminderList();
+ List queryReminderList();
void addCertificateList(@Param("list")List list);
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java
index e2a7f92..4b19dcd 100644
--- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java
@@ -1,18 +1,207 @@
package com.casic.missiles.controller.business;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.core.page.PageInfoBT;
+import com.casic.missiles.dto.*;
+import com.casic.missiles.dto.flowable.ApprovalDeleteRequest;
+import com.casic.missiles.dto.meter.*;
+import com.casic.missiles.enums.BusinessExceptionEnum;
+import com.casic.missiles.enums.ExportEnum;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.model.business.BusinessCertificateReport;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.meter.MeterTraceSupplier;
+import com.casic.missiles.service.business.IBusinessCertificateReportService;
+import com.casic.missiles.service.meter.IMeterTraceSupplierService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+import java.util.Objects;
/**
*
* 业务管理-证书报告 前端控制器
*
*
- * @author wangpeng
+ * @author zt
* @since 2023-02-02
*/
@RestController
+@Api(tags = "证书报告模块")
@RequestMapping("/business/certificateReport")
-public class BusinessCertificateReportController {
+public class BusinessCertificateReportController extends ExportController {
+ @Resource
+ private IBusinessCertificateReportService certificateReportService;
+ @Autowired
+ private IMeterTraceSupplierService traceSupplierService;
+ @ApiOperation("证书报告列表(分页)")
+ @PostMapping("/listPage")
+ @ResponseBody
+ public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) {
+ if (bindingResult.hasErrors()) {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ Page page = PageFactory.defaultPage();
+ return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request)));
+ }
+ @ApiOperation("证书报告列表")
+ @PostMapping("/list")
+ @ResponseBody
+ public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) {
+ if (bindingResult.hasErrors()) {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return ReturnUtil.success(traceSupplierService.list(request));
+ }
+
+ @ApiOperation("证书报告导出")
+ @PostMapping("/listExport")
+ @ResponseBody
+ public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException {
+ if (bindingResult.hasErrors()) {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ List list;
+ if (!CollectionUtils.isEmpty(request.getIds())) {
+ list = traceSupplierService.listByIds(request.getIds());
+ } else {
+ list = traceSupplierService.list(request);
+ }
+ super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName());
+ }
+
+ @ApiOperation("证书报告保存(保存至草稿箱)")
+ @PostMapping("/save")
+ @ResponseBody
+ public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) {
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport));
+ }
+
+ /**
+ * 草稿箱文件编辑
+ */
+ @ApiOperation("草稿箱文件更新")
+ @PostMapping("/draftUpdate")
+ @ResponseBody
+ public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) {
+ Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return traceSupplierService.draftUpdate(traceSupplier);
+ }
+
+ @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)")
+ @PostMapping("/submit")
+ @ResponseBody
+ public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) {
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return traceSupplierService.submitTraceSupplier(request);
+ }
+
+ @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)")
+ @PostMapping("/update")
+ @ResponseBody
+ public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) {
+ Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return traceSupplierService.updateTraceSupplier(traceSupplier);
+ }
+
+ @ApiOperation("证书报告删除")
+ @PostMapping("/delete")
+ @ResponseBody
+ public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) {
+ Assert.isFalse(Objects.isNull(idDTO.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return traceSupplierService.deleteTraceSupplier(idDTO.getId());
+ }
+
+ @ApiOperation("证书报告批量删除")
+ @PostMapping("/batchDelete")
+ @ResponseBody
+ public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) {
+ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds());
+ }
+
+ @ApiOperation("证书报告详情")
+ @PostMapping("/detail")
+ @ResponseBody
+ public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) {
+ Assert.isFalse(Objects.isNull(idDTO.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId()));
+ }
+
+ @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口")
+ @PostMapping("/approval/listPage")
+ @ResponseBody
+ public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) {
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ Page page = PageFactory.defaultPage();
+ List responseList = traceSupplierService.approvalListPage(page, request);
+ page.setRecords(responseList);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ /**
+ * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除)
+ * 前端控制按钮权限
+ */
+ @ApiOperation("审批操作-删除")
+ @PostMapping("/approval/operate/delete")
+ @ResponseBody
+ public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) {
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return traceSupplierService.approvalDelete(request);
+ }
+
+ /**
+ * 审批操作-编辑
+ * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点
+ */
+ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)")
+ @PostMapping("/failUpdate")
+ @ResponseBody
+ public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) {
+ Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ if (bindingResult.hasErrors()) {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return traceSupplierService.failUpdate(traceSupplier);
+ }
}
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java
index fa5fdee..f126f11 100644
--- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java
@@ -11,7 +11,6 @@
import com.casic.missiles.dto.business.originRecord.OriginRecordRequest;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.exception.BusinessException;
-import com.casic.missiles.model.business.BusinessEnvironmentRecord;
import com.casic.missiles.model.business.BusinessOriginalRecord;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
import com.casic.missiles.service.business.IBusinessOriginalRecordService;
@@ -99,10 +98,10 @@
businessOriginalRecordService.originExport(request, response);
}
- @ApiOperation("获取设备")
- @PostMapping("/getEquipments")
- public void getEquipments() {
-// businessEnvironmentRecordService.environmentExport(request, response);
- }
+// @ApiOperation("获取设备")
+// @PostMapping("/getEquipments")
+// public void getEquipments() {
+//// businessEnvironmentRecordService.environmentExport(request, response);
+// }
}
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java
index 15d09ae..b24b193 100644
--- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java
@@ -12,6 +12,7 @@
import com.casic.missiles.listeners.CommonExcelListener;
import com.casic.missiles.model.meter.MeterCertificate;
import com.casic.missiles.model.meter.MeterCertificateExpireMessage;
+import com.casic.missiles.model.workbench.WorkbenchRemindMessage;
import com.casic.missiles.service.meter.MeterCertificateService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -107,9 +108,9 @@
@ApiOperation("消息列表查询")
@PostMapping("/queryMessageList")
@ResponseBody
- public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) {
- Page page = PageFactory.defaultPage();
- Page list = meterCertificateService.queryMessageList(page,request);
+ public ReturnDTO queryMessageList() {
+ Page page = PageFactory.defaultPage();
+ Page list = meterCertificateService.queryMessageList(page);
return ReturnUtil.success(list);
}
@@ -133,7 +134,7 @@
return meterCertificateService.expirationReminder(idDto);
}
- @Scheduled(cron = "0 0 0 * * ?")
+ //@Scheduled(cron = "0 0 0 * * ?")
private void regularExpirationReminder() {
meterCertificateService.regularExpirationReminder();
}
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 76c1ee7..af43c35 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
@@ -38,6 +38,7 @@
DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"),
PARAM_INVALID(2500, "参数不合法"),
LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"),
+ NOT_FOUND_USER_INFO(2402, "未找到用户信息"),
STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"),
STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"),
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java
index 9152600..c6c36c7 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java
@@ -7,7 +7,7 @@
public enum ExamResultEnum {
QUALIFIED("1", "合格"),
- NOT_QUALIFIED("2", "不合格");
+ NOT_QUALIFIED("2", "不及格");
private String code;
private String value;
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java
new file mode 100644
index 0000000..f84fb2f
--- /dev/null
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.enums;
+
+/**
+ * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀
+ * 无线电
+ * 光学
+ * 时间频率
+ * 电磁学
+ * 几何量
+ * 热学
+ * 力学
+ * 环境试验
+ * 电磁兼容
+ * 医疗器械
+ * 理化分析
+ * 电力系统
+ * @Author: zt
+ * @Date: 2023/2/18 14:40
+ */
+public enum MonitorCodeEnum {
+ WIRELESS("1", "RIM"),
+ OPTICS("2", "TOE"),
+ TIME_FREQUENCY("3", "TTF"),
+ EMC("4", "DMS"),
+ GEOMETRY("5", "JHL"),
+ HEAT("6", "RXZ"),
+ DYNAMICS("7", "LXZ"),
+ ENVIRONMENT_TEST("8", "TET"),
+ DCJR("9", "EMC"),
+ YLQX("10", "DCJ"),
+ LHFX("11", "LHF"),
+ DLXT("12", "DLX");
+
+ private String code;
+ private String value;
+
+ MonitorCodeEnum(String code, String value) {
+ this.code = code;
+ this.value = value;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public String getValue() {
+ return value;
+ }
+}
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 e63ac86..fc2ae98 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
@@ -55,6 +55,7 @@
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.eq("pro_def_id", processDefinition.getKey());
wrapper.eq("is_del", 0);
+ // 查出流程定义信息
SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper);
String id = execution.getProcessInstanceBusinessKey();
switch (systemFlowForm.getFormId()) {
@@ -103,7 +104,6 @@
private void updateEquipmentApplyState(String id, String state) {
EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class);
-
UpdateWrapper updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", id).set("process_result", state);
if (equipmentApplyMapper.update(null, updateWrapper) <= 0) {
@@ -120,6 +120,7 @@
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.eq("apply_id", id);
List equipmentApplyEquipments = equipmentMapper.selectList(wrapper);
+ // 获取设备idList
List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList());
UpdateWrapper updateWrapper = new UpdateWrapper<>();
updateWrapper.in("id", equipmentIds).set("manager_state", state);
@@ -130,7 +131,6 @@
if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) {
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
- ;
// 获取当前申请的信息
EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id);
// 新增状态变更记录
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java
index f61a7ff..02cd838 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java
@@ -1,5 +1,7 @@
package com.casic.missiles.utils;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.model.workbench.WorkbenchRemindMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -96,4 +98,18 @@
}
}
+ // 向不同用户发送不同消息
+ public void sendMessage(List list) {
+ for (WorkbenchRemindMessage message : list) {
+ Session session = sessionPool.get(String.valueOf(message.getRemindId()));
+ if (session != null) {
+ try {
+ session.getAsyncRemote().sendText(JSONObject.toJSONString(message));
+ } catch (Exception e) {
+ log.error("【websocket消息】列表消息发送异常");
+ e.printStackTrace();
+ }
+ }
+ }
+ }
}
diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java
index 499ba5c..add1f9e 100644
--- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java
+++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java
@@ -8,6 +8,7 @@
import org.apache.ibatis.annotations.Param;
import java.util.List;
+import org.apache.ibatis.annotations.Select;
/**
*
@@ -23,4 +24,7 @@
+ @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report")
+ Long selectMaxCode();
+
}
diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java
index 4c32561..564ad43 100644
--- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java
+++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java
@@ -8,6 +8,7 @@
import com.casic.missiles.dto.meter.MeterStaffRequest;
import com.casic.missiles.model.meter.MeterCertificate;
import com.casic.missiles.model.meter.MeterCertificateExpireMessage;
+import com.casic.missiles.model.workbench.WorkbenchRemindMessage;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -18,7 +19,7 @@
List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest);
- List queryReminderList();
+ List queryReminderList();
void addCertificateList(@Param("list")List list);
diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml
index 3f2b326..b4d8744 100644
--- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml
+++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml
@@ -7,7 +7,7 @@
-
+
@@ -24,13 +24,13 @@
-
+
bor.*
-
+
SELECT
- t1.id as certificate_id,
- t1.staff_id,
- t1.certificate_no,
- t1.certificate_name,
- t1.valid_date,
- t2.account as staff_no
+ su.ID AS remind_id,
+ mc.id AS business_id,
+ mc.certificate_no AS business_code,
+ mc.certificate_name AS message_content
FROM
- meter_certificate AS t1
- LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day)
+ meter_certificate AS mc
+ LEFT JOIN meter_staff ms ON mc.staff_id = ms.id
+ LEFT JOIN sys_user su ON ms.account = su.ACCOUNT
+ WHERE
+ DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB(
+ curdate(),
+ INTERVAL - 30 DAY)
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java
index e2a7f92..4b19dcd 100644
--- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java
@@ -1,18 +1,207 @@
package com.casic.missiles.controller.business;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.core.page.PageInfoBT;
+import com.casic.missiles.dto.*;
+import com.casic.missiles.dto.flowable.ApprovalDeleteRequest;
+import com.casic.missiles.dto.meter.*;
+import com.casic.missiles.enums.BusinessExceptionEnum;
+import com.casic.missiles.enums.ExportEnum;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.model.business.BusinessCertificateReport;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.meter.MeterTraceSupplier;
+import com.casic.missiles.service.business.IBusinessCertificateReportService;
+import com.casic.missiles.service.meter.IMeterTraceSupplierService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+import java.util.Objects;
/**
*
* 业务管理-证书报告 前端控制器
*
*
- * @author wangpeng
+ * @author zt
* @since 2023-02-02
*/
@RestController
+@Api(tags = "证书报告模块")
@RequestMapping("/business/certificateReport")
-public class BusinessCertificateReportController {
+public class BusinessCertificateReportController extends ExportController {
+ @Resource
+ private IBusinessCertificateReportService certificateReportService;
+ @Autowired
+ private IMeterTraceSupplierService traceSupplierService;
+ @ApiOperation("证书报告列表(分页)")
+ @PostMapping("/listPage")
+ @ResponseBody
+ public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) {
+ if (bindingResult.hasErrors()) {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ Page page = PageFactory.defaultPage();
+ return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request)));
+ }
+ @ApiOperation("证书报告列表")
+ @PostMapping("/list")
+ @ResponseBody
+ public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) {
+ if (bindingResult.hasErrors()) {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return ReturnUtil.success(traceSupplierService.list(request));
+ }
+
+ @ApiOperation("证书报告导出")
+ @PostMapping("/listExport")
+ @ResponseBody
+ public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException {
+ if (bindingResult.hasErrors()) {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ List list;
+ if (!CollectionUtils.isEmpty(request.getIds())) {
+ list = traceSupplierService.listByIds(request.getIds());
+ } else {
+ list = traceSupplierService.list(request);
+ }
+ super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName());
+ }
+
+ @ApiOperation("证书报告保存(保存至草稿箱)")
+ @PostMapping("/save")
+ @ResponseBody
+ public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) {
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport));
+ }
+
+ /**
+ * 草稿箱文件编辑
+ */
+ @ApiOperation("草稿箱文件更新")
+ @PostMapping("/draftUpdate")
+ @ResponseBody
+ public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) {
+ Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return traceSupplierService.draftUpdate(traceSupplier);
+ }
+
+ @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)")
+ @PostMapping("/submit")
+ @ResponseBody
+ public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) {
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return traceSupplierService.submitTraceSupplier(request);
+ }
+
+ @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)")
+ @PostMapping("/update")
+ @ResponseBody
+ public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) {
+ Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return traceSupplierService.updateTraceSupplier(traceSupplier);
+ }
+
+ @ApiOperation("证书报告删除")
+ @PostMapping("/delete")
+ @ResponseBody
+ public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) {
+ Assert.isFalse(Objects.isNull(idDTO.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return traceSupplierService.deleteTraceSupplier(idDTO.getId());
+ }
+
+ @ApiOperation("证书报告批量删除")
+ @PostMapping("/batchDelete")
+ @ResponseBody
+ public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) {
+ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds());
+ }
+
+ @ApiOperation("证书报告详情")
+ @PostMapping("/detail")
+ @ResponseBody
+ public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) {
+ Assert.isFalse(Objects.isNull(idDTO.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId()));
+ }
+
+ @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口")
+ @PostMapping("/approval/listPage")
+ @ResponseBody
+ public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) {
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ Page page = PageFactory.defaultPage();
+ List responseList = traceSupplierService.approvalListPage(page, request);
+ page.setRecords(responseList);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ /**
+ * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除)
+ * 前端控制按钮权限
+ */
+ @ApiOperation("审批操作-删除")
+ @PostMapping("/approval/operate/delete")
+ @ResponseBody
+ public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) {
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return traceSupplierService.approvalDelete(request);
+ }
+
+ /**
+ * 审批操作-编辑
+ * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点
+ */
+ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)")
+ @PostMapping("/failUpdate")
+ @ResponseBody
+ public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) {
+ Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ if (bindingResult.hasErrors()) {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return traceSupplierService.failUpdate(traceSupplier);
+ }
}
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java
index fa5fdee..f126f11 100644
--- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java
@@ -11,7 +11,6 @@
import com.casic.missiles.dto.business.originRecord.OriginRecordRequest;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.exception.BusinessException;
-import com.casic.missiles.model.business.BusinessEnvironmentRecord;
import com.casic.missiles.model.business.BusinessOriginalRecord;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
import com.casic.missiles.service.business.IBusinessOriginalRecordService;
@@ -99,10 +98,10 @@
businessOriginalRecordService.originExport(request, response);
}
- @ApiOperation("获取设备")
- @PostMapping("/getEquipments")
- public void getEquipments() {
-// businessEnvironmentRecordService.environmentExport(request, response);
- }
+// @ApiOperation("获取设备")
+// @PostMapping("/getEquipments")
+// public void getEquipments() {
+//// businessEnvironmentRecordService.environmentExport(request, response);
+// }
}
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java
index 15d09ae..b24b193 100644
--- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java
@@ -12,6 +12,7 @@
import com.casic.missiles.listeners.CommonExcelListener;
import com.casic.missiles.model.meter.MeterCertificate;
import com.casic.missiles.model.meter.MeterCertificateExpireMessage;
+import com.casic.missiles.model.workbench.WorkbenchRemindMessage;
import com.casic.missiles.service.meter.MeterCertificateService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -107,9 +108,9 @@
@ApiOperation("消息列表查询")
@PostMapping("/queryMessageList")
@ResponseBody
- public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) {
- Page page = PageFactory.defaultPage();
- Page list = meterCertificateService.queryMessageList(page,request);
+ public ReturnDTO queryMessageList() {
+ Page page = PageFactory.defaultPage();
+ Page list = meterCertificateService.queryMessageList(page);
return ReturnUtil.success(list);
}
@@ -133,7 +134,7 @@
return meterCertificateService.expirationReminder(idDto);
}
- @Scheduled(cron = "0 0 0 * * ?")
+ //@Scheduled(cron = "0 0 0 * * ?")
private void regularExpirationReminder() {
meterCertificateService.regularExpirationReminder();
}
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 76c1ee7..af43c35 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
@@ -38,6 +38,7 @@
DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"),
PARAM_INVALID(2500, "参数不合法"),
LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"),
+ NOT_FOUND_USER_INFO(2402, "未找到用户信息"),
STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"),
STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"),
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java
index 9152600..c6c36c7 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java
@@ -7,7 +7,7 @@
public enum ExamResultEnum {
QUALIFIED("1", "合格"),
- NOT_QUALIFIED("2", "不合格");
+ NOT_QUALIFIED("2", "不及格");
private String code;
private String value;
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java
new file mode 100644
index 0000000..f84fb2f
--- /dev/null
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.enums;
+
+/**
+ * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀
+ * 无线电
+ * 光学
+ * 时间频率
+ * 电磁学
+ * 几何量
+ * 热学
+ * 力学
+ * 环境试验
+ * 电磁兼容
+ * 医疗器械
+ * 理化分析
+ * 电力系统
+ * @Author: zt
+ * @Date: 2023/2/18 14:40
+ */
+public enum MonitorCodeEnum {
+ WIRELESS("1", "RIM"),
+ OPTICS("2", "TOE"),
+ TIME_FREQUENCY("3", "TTF"),
+ EMC("4", "DMS"),
+ GEOMETRY("5", "JHL"),
+ HEAT("6", "RXZ"),
+ DYNAMICS("7", "LXZ"),
+ ENVIRONMENT_TEST("8", "TET"),
+ DCJR("9", "EMC"),
+ YLQX("10", "DCJ"),
+ LHFX("11", "LHF"),
+ DLXT("12", "DLX");
+
+ private String code;
+ private String value;
+
+ MonitorCodeEnum(String code, String value) {
+ this.code = code;
+ this.value = value;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public String getValue() {
+ return value;
+ }
+}
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 e63ac86..fc2ae98 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
@@ -55,6 +55,7 @@
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.eq("pro_def_id", processDefinition.getKey());
wrapper.eq("is_del", 0);
+ // 查出流程定义信息
SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper);
String id = execution.getProcessInstanceBusinessKey();
switch (systemFlowForm.getFormId()) {
@@ -103,7 +104,6 @@
private void updateEquipmentApplyState(String id, String state) {
EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class);
-
UpdateWrapper updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", id).set("process_result", state);
if (equipmentApplyMapper.update(null, updateWrapper) <= 0) {
@@ -120,6 +120,7 @@
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.eq("apply_id", id);
List equipmentApplyEquipments = equipmentMapper.selectList(wrapper);
+ // 获取设备idList
List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList());
UpdateWrapper updateWrapper = new UpdateWrapper<>();
updateWrapper.in("id", equipmentIds).set("manager_state", state);
@@ -130,7 +131,6 @@
if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) {
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
- ;
// 获取当前申请的信息
EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id);
// 新增状态变更记录
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java
index f61a7ff..02cd838 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java
@@ -1,5 +1,7 @@
package com.casic.missiles.utils;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.model.workbench.WorkbenchRemindMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -96,4 +98,18 @@
}
}
+ // 向不同用户发送不同消息
+ public void sendMessage(List list) {
+ for (WorkbenchRemindMessage message : list) {
+ Session session = sessionPool.get(String.valueOf(message.getRemindId()));
+ if (session != null) {
+ try {
+ session.getAsyncRemote().sendText(JSONObject.toJSONString(message));
+ } catch (Exception e) {
+ log.error("【websocket消息】列表消息发送异常");
+ e.printStackTrace();
+ }
+ }
+ }
+ }
}
diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java
index 499ba5c..add1f9e 100644
--- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java
+++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java
@@ -8,6 +8,7 @@
import org.apache.ibatis.annotations.Param;
import java.util.List;
+import org.apache.ibatis.annotations.Select;
/**
*
@@ -23,4 +24,7 @@
+ @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report")
+ Long selectMaxCode();
+
}
diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java
index 4c32561..564ad43 100644
--- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java
+++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java
@@ -8,6 +8,7 @@
import com.casic.missiles.dto.meter.MeterStaffRequest;
import com.casic.missiles.model.meter.MeterCertificate;
import com.casic.missiles.model.meter.MeterCertificateExpireMessage;
+import com.casic.missiles.model.workbench.WorkbenchRemindMessage;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -18,7 +19,7 @@
List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest);
- List queryReminderList();
+ List queryReminderList();
void addCertificateList(@Param("list")List list);
diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml
index 3f2b326..b4d8744 100644
--- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml
+++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml
@@ -7,7 +7,7 @@
-
+
@@ -24,13 +24,13 @@
-
+
bor.*
SELECT
-
+
FROM business_original_record bor
LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id
WHERE bor.is_del =0
@@ -38,7 +38,7 @@
and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%')
- and cs.sample_no like concat('%', #{request.sampleN}, '%')
+ and cs.sample_no like concat('%', #{request.sampleNo}, '%')
and cs.sample_name like concat('%', #{request.sampleName}, '%')
@@ -49,8 +49,8 @@
and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%')
-
- and bor.measure_category = #{request.calibrationCategory}
+
+ and bor.measure_category = #{request.measureCategory}
and bor.create_user = #{request.createUser}
@@ -61,13 +61,15 @@
SELECT
- ,
- cs.sample_no AS sampleNo,
- cs.sample_name AS sampleName,
- cs.sample_model AS samplemModel,
- cs.manufacturing_no AS manufacturingNo
+ ,
+ cs.sample_no AS sampleNo,
+ cs.sample_name AS sampleName,
+ cs.sample_model AS sampleModel,
+ cs.manufacturing_no AS manufacturingNo,
+ su.name AS createUserName
FROM business_original_record bor
LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id
+ LEFT JOIN sys_user su ON su.id = bor.create_user
WHERE bor.is_del =0
and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%')
@@ -84,12 +86,19 @@
and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%')
-
- and bor.measure_category = #{request.calibrationCategory}
+
+ and bor.measure_category = #{request.measureCategory}
and bor.create_user = #{request.createUser}
+
+
+ AND bor.id IN
+
+ #{item}
+
+
ORDER BY bor.create_time DESC
diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml
index 135544e..7aaf965 100644
--- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml
+++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml
@@ -75,17 +75,20 @@
-
+
SELECT
- t1.id as certificate_id,
- t1.staff_id,
- t1.certificate_no,
- t1.certificate_name,
- t1.valid_date,
- t2.account as staff_no
+ su.ID AS remind_id,
+ mc.id AS business_id,
+ mc.certificate_no AS business_code,
+ mc.certificate_name AS message_content
FROM
- meter_certificate AS t1
- LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day)
+ meter_certificate AS mc
+ LEFT JOIN meter_staff ms ON mc.staff_id = ms.id
+ LEFT JOIN sys_user su ON ms.account = su.ACCOUNT
+ WHERE
+ DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB(
+ curdate(),
+ INTERVAL - 30 DAY)
diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java
index ef67b01..232e467 100644
--- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java
+++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java
@@ -12,6 +12,9 @@
import static com.xxl.job.core.biz.model.ReturnT.SUCCESS;
+/**
+ * 证书到期提醒
+ */
@Slf4j
@Component
@RequiredArgsConstructor
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java
index e2a7f92..4b19dcd 100644
--- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java
@@ -1,18 +1,207 @@
package com.casic.missiles.controller.business;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.core.page.PageInfoBT;
+import com.casic.missiles.dto.*;
+import com.casic.missiles.dto.flowable.ApprovalDeleteRequest;
+import com.casic.missiles.dto.meter.*;
+import com.casic.missiles.enums.BusinessExceptionEnum;
+import com.casic.missiles.enums.ExportEnum;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.model.business.BusinessCertificateReport;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.meter.MeterTraceSupplier;
+import com.casic.missiles.service.business.IBusinessCertificateReportService;
+import com.casic.missiles.service.meter.IMeterTraceSupplierService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+import java.util.Objects;
/**
*
* 业务管理-证书报告 前端控制器
*
*
- * @author wangpeng
+ * @author zt
* @since 2023-02-02
*/
@RestController
+@Api(tags = "证书报告模块")
@RequestMapping("/business/certificateReport")
-public class BusinessCertificateReportController {
+public class BusinessCertificateReportController extends ExportController {
+ @Resource
+ private IBusinessCertificateReportService certificateReportService;
+ @Autowired
+ private IMeterTraceSupplierService traceSupplierService;
+ @ApiOperation("证书报告列表(分页)")
+ @PostMapping("/listPage")
+ @ResponseBody
+ public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) {
+ if (bindingResult.hasErrors()) {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ Page page = PageFactory.defaultPage();
+ return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request)));
+ }
+ @ApiOperation("证书报告列表")
+ @PostMapping("/list")
+ @ResponseBody
+ public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) {
+ if (bindingResult.hasErrors()) {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return ReturnUtil.success(traceSupplierService.list(request));
+ }
+
+ @ApiOperation("证书报告导出")
+ @PostMapping("/listExport")
+ @ResponseBody
+ public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException {
+ if (bindingResult.hasErrors()) {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ List list;
+ if (!CollectionUtils.isEmpty(request.getIds())) {
+ list = traceSupplierService.listByIds(request.getIds());
+ } else {
+ list = traceSupplierService.list(request);
+ }
+ super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName());
+ }
+
+ @ApiOperation("证书报告保存(保存至草稿箱)")
+ @PostMapping("/save")
+ @ResponseBody
+ public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) {
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport));
+ }
+
+ /**
+ * 草稿箱文件编辑
+ */
+ @ApiOperation("草稿箱文件更新")
+ @PostMapping("/draftUpdate")
+ @ResponseBody
+ public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) {
+ Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return traceSupplierService.draftUpdate(traceSupplier);
+ }
+
+ @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)")
+ @PostMapping("/submit")
+ @ResponseBody
+ public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) {
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return traceSupplierService.submitTraceSupplier(request);
+ }
+
+ @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)")
+ @PostMapping("/update")
+ @ResponseBody
+ public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) {
+ Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return traceSupplierService.updateTraceSupplier(traceSupplier);
+ }
+
+ @ApiOperation("证书报告删除")
+ @PostMapping("/delete")
+ @ResponseBody
+ public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) {
+ Assert.isFalse(Objects.isNull(idDTO.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return traceSupplierService.deleteTraceSupplier(idDTO.getId());
+ }
+
+ @ApiOperation("证书报告批量删除")
+ @PostMapping("/batchDelete")
+ @ResponseBody
+ public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) {
+ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds());
+ }
+
+ @ApiOperation("证书报告详情")
+ @PostMapping("/detail")
+ @ResponseBody
+ public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) {
+ Assert.isFalse(Objects.isNull(idDTO.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId()));
+ }
+
+ @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口")
+ @PostMapping("/approval/listPage")
+ @ResponseBody
+ public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) {
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ Page page = PageFactory.defaultPage();
+ List responseList = traceSupplierService.approvalListPage(page, request);
+ page.setRecords(responseList);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ /**
+ * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除)
+ * 前端控制按钮权限
+ */
+ @ApiOperation("审批操作-删除")
+ @PostMapping("/approval/operate/delete")
+ @ResponseBody
+ public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) {
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return traceSupplierService.approvalDelete(request);
+ }
+
+ /**
+ * 审批操作-编辑
+ * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点
+ */
+ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)")
+ @PostMapping("/failUpdate")
+ @ResponseBody
+ public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) {
+ Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ if (bindingResult.hasErrors()) {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return traceSupplierService.failUpdate(traceSupplier);
+ }
}
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java
index fa5fdee..f126f11 100644
--- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java
@@ -11,7 +11,6 @@
import com.casic.missiles.dto.business.originRecord.OriginRecordRequest;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.exception.BusinessException;
-import com.casic.missiles.model.business.BusinessEnvironmentRecord;
import com.casic.missiles.model.business.BusinessOriginalRecord;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
import com.casic.missiles.service.business.IBusinessOriginalRecordService;
@@ -99,10 +98,10 @@
businessOriginalRecordService.originExport(request, response);
}
- @ApiOperation("获取设备")
- @PostMapping("/getEquipments")
- public void getEquipments() {
-// businessEnvironmentRecordService.environmentExport(request, response);
- }
+// @ApiOperation("获取设备")
+// @PostMapping("/getEquipments")
+// public void getEquipments() {
+//// businessEnvironmentRecordService.environmentExport(request, response);
+// }
}
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java
index 15d09ae..b24b193 100644
--- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java
@@ -12,6 +12,7 @@
import com.casic.missiles.listeners.CommonExcelListener;
import com.casic.missiles.model.meter.MeterCertificate;
import com.casic.missiles.model.meter.MeterCertificateExpireMessage;
+import com.casic.missiles.model.workbench.WorkbenchRemindMessage;
import com.casic.missiles.service.meter.MeterCertificateService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -107,9 +108,9 @@
@ApiOperation("消息列表查询")
@PostMapping("/queryMessageList")
@ResponseBody
- public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) {
- Page page = PageFactory.defaultPage();
- Page list = meterCertificateService.queryMessageList(page,request);
+ public ReturnDTO queryMessageList() {
+ Page page = PageFactory.defaultPage();
+ Page list = meterCertificateService.queryMessageList(page);
return ReturnUtil.success(list);
}
@@ -133,7 +134,7 @@
return meterCertificateService.expirationReminder(idDto);
}
- @Scheduled(cron = "0 0 0 * * ?")
+ //@Scheduled(cron = "0 0 0 * * ?")
private void regularExpirationReminder() {
meterCertificateService.regularExpirationReminder();
}
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 76c1ee7..af43c35 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
@@ -38,6 +38,7 @@
DUPLICATE_MANUFACTURE_NUMBER(2401, "出厂编号重复"),
PARAM_INVALID(2500, "参数不合法"),
LOGIN_USER_ACQUIRE_FAILED(2402, "无法获取登录者用户信息,请尝试重新登录再进行操作"),
+ NOT_FOUND_USER_INFO(2402, "未找到用户信息"),
STANDARD_EQUIPMENT_ID_EXIST(2402, "标准装置不存在"),
STANDARD_EQUIPMENT_USER_ID_EXIST(2402, "标准装置-计量人员不存在"),
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java
index 9152600..c6c36c7 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExamResultEnum.java
@@ -7,7 +7,7 @@
public enum ExamResultEnum {
QUALIFIED("1", "合格"),
- NOT_QUALIFIED("2", "不合格");
+ NOT_QUALIFIED("2", "不及格");
private String code;
private String value;
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java
new file mode 100644
index 0000000..f84fb2f
--- /dev/null
+++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MonitorCodeEnum.java
@@ -0,0 +1,49 @@
+package com.casic.missiles.enums;
+
+/**
+ * @Description: 检测/校准参数代码枚举类 用于生成证书报告前缀
+ * 无线电
+ * 光学
+ * 时间频率
+ * 电磁学
+ * 几何量
+ * 热学
+ * 力学
+ * 环境试验
+ * 电磁兼容
+ * 医疗器械
+ * 理化分析
+ * 电力系统
+ * @Author: zt
+ * @Date: 2023/2/18 14:40
+ */
+public enum MonitorCodeEnum {
+ WIRELESS("1", "RIM"),
+ OPTICS("2", "TOE"),
+ TIME_FREQUENCY("3", "TTF"),
+ EMC("4", "DMS"),
+ GEOMETRY("5", "JHL"),
+ HEAT("6", "RXZ"),
+ DYNAMICS("7", "LXZ"),
+ ENVIRONMENT_TEST("8", "TET"),
+ DCJR("9", "EMC"),
+ YLQX("10", "DCJ"),
+ LHFX("11", "LHF"),
+ DLXT("12", "DLX");
+
+ private String code;
+ private String value;
+
+ MonitorCodeEnum(String code, String value) {
+ this.code = code;
+ this.value = value;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public String getValue() {
+ return value;
+ }
+}
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 e63ac86..fc2ae98 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
@@ -55,6 +55,7 @@
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.eq("pro_def_id", processDefinition.getKey());
wrapper.eq("is_del", 0);
+ // 查出流程定义信息
SystemFlowForm systemFlowForm = flowFormMapper.selectOne(wrapper);
String id = execution.getProcessInstanceBusinessKey();
switch (systemFlowForm.getFormId()) {
@@ -103,7 +104,6 @@
private void updateEquipmentApplyState(String id, String state) {
EquipmentApplyMapper equipmentApplyMapper = SpringContextUtil.getBean(EquipmentApplyMapper.class);
-
UpdateWrapper updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", id).set("process_result", state);
if (equipmentApplyMapper.update(null, updateWrapper) <= 0) {
@@ -120,6 +120,7 @@
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.eq("apply_id", id);
List equipmentApplyEquipments = equipmentMapper.selectList(wrapper);
+ // 获取设备idList
List equipmentIds = equipmentApplyEquipments.stream().map(EquipmentApplyEquipment::getEquipmentId).collect(Collectors.toList());
UpdateWrapper updateWrapper = new UpdateWrapper<>();
updateWrapper.in("id", equipmentIds).set("manager_state", state);
@@ -130,7 +131,6 @@
if (stateChangeLogMapper.update(null, logUpdateWrapper) <= 0) {
throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED);
}
- ;
// 获取当前申请的信息
EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id);
// 新增状态变更记录
diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java
index f61a7ff..02cd838 100644
--- a/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java
+++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/WebSocket.java
@@ -1,5 +1,7 @@
package com.casic.missiles.utils;
+import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.model.workbench.WorkbenchRemindMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -96,4 +98,18 @@
}
}
+ // 向不同用户发送不同消息
+ public void sendMessage(List list) {
+ for (WorkbenchRemindMessage message : list) {
+ Session session = sessionPool.get(String.valueOf(message.getRemindId()));
+ if (session != null) {
+ try {
+ session.getAsyncRemote().sendText(JSONObject.toJSONString(message));
+ } catch (Exception e) {
+ log.error("【websocket消息】列表消息发送异常");
+ e.printStackTrace();
+ }
+ }
+ }
+ }
}
diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java
index 499ba5c..add1f9e 100644
--- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java
+++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java
@@ -8,6 +8,7 @@
import org.apache.ibatis.annotations.Param;
import java.util.List;
+import org.apache.ibatis.annotations.Select;
/**
*
@@ -23,4 +24,7 @@
+ @Select("SELECT IFNULL(max(RIGHT(certificate_report_code, 12)), 0) from business_certificate_report")
+ Long selectMaxCode();
+
}
diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java
index 4c32561..564ad43 100644
--- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java
+++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterCertificateMapper.java
@@ -8,6 +8,7 @@
import com.casic.missiles.dto.meter.MeterStaffRequest;
import com.casic.missiles.model.meter.MeterCertificate;
import com.casic.missiles.model.meter.MeterCertificateExpireMessage;
+import com.casic.missiles.model.workbench.WorkbenchRemindMessage;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -18,7 +19,7 @@
List queryCertificateList(@Param("request")MeterStaffRequest meterStaffRequest);
- List queryReminderList();
+ List queryReminderList();
void addCertificateList(@Param("list")List list);
diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml
index 3f2b326..b4d8744 100644
--- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml
+++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOriginalRecordMapper.xml
@@ -7,7 +7,7 @@
-
+
@@ -24,13 +24,13 @@
-
+
bor.*
SELECT
-
+
FROM business_original_record bor
LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id
WHERE bor.is_del =0
@@ -38,7 +38,7 @@
and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%')
- and cs.sample_no like concat('%', #{request.sampleN}, '%')
+ and cs.sample_no like concat('%', #{request.sampleNo}, '%')
and cs.sample_name like concat('%', #{request.sampleName}, '%')
@@ -49,8 +49,8 @@
and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%')
-
- and bor.measure_category = #{request.calibrationCategory}
+
+ and bor.measure_category = #{request.measureCategory}
and bor.create_user = #{request.createUser}
@@ -61,13 +61,15 @@
SELECT
- ,
- cs.sample_no AS sampleNo,
- cs.sample_name AS sampleName,
- cs.sample_model AS samplemModel,
- cs.manufacturing_no AS manufacturingNo
+ ,
+ cs.sample_no AS sampleNo,
+ cs.sample_name AS sampleName,
+ cs.sample_model AS sampleModel,
+ cs.manufacturing_no AS manufacturingNo,
+ su.name AS createUserName
FROM business_original_record bor
LEFT JOIN customer_sample_info cs ON bor.sample_id = cs.id
+ LEFT JOIN sys_user su ON su.id = bor.create_user
WHERE bor.is_del =0
and bor.original_record_code like concat('%', #{request.originalRecordCode}, '%')
@@ -84,12 +86,19 @@
and cs.manufacturing_no like concat('%', #{request.manufacturingNo}, '%')
-
- and bor.measure_category = #{request.calibrationCategory}
+
+ and bor.measure_category = #{request.measureCategory}
and bor.create_user = #{request.createUser}
+
+
+ AND bor.id IN
+
+ #{item}
+
+
ORDER BY bor.create_time DESC
diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml
index 135544e..7aaf965 100644
--- a/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml
+++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterCertificateMapper.xml
@@ -75,17 +75,20 @@
-
+
SELECT
- t1.id as certificate_id,
- t1.staff_id,
- t1.certificate_no,
- t1.certificate_name,
- t1.valid_date,
- t2.account as staff_no
+ su.ID AS remind_id,
+ mc.id AS business_id,
+ mc.certificate_no AS business_code,
+ mc.certificate_name AS message_content
FROM
- meter_certificate AS t1
- LEFT JOIN meter_staff t2 ON t1.staff_id = t2.id where DATE_FORMAT(t1.valid_date,'%Y-%m-%d') = DATE_SUB(curdate(),INTERVAL -30 day)
+ meter_certificate AS mc
+ LEFT JOIN meter_staff ms ON mc.staff_id = ms.id
+ LEFT JOIN sys_user su ON ms.account = su.ACCOUNT
+ WHERE
+ DATE_FORMAT( mc.valid_date, '%Y-%m-%d' ) = DATE_SUB(
+ curdate(),
+ INTERVAL - 30 DAY)
diff --git a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java
index ef67b01..232e467 100644
--- a/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java
+++ b/casic-metering-job/src/main/java/com/casic/missiles/job/handler/RegularExpirationReminder.java
@@ -12,6 +12,9 @@
import static com.xxl.job.core.biz.model.ReturnT.SUCCESS;
+/**
+ * 证书到期提醒
+ */
@Slf4j
@Component
@RequiredArgsConstructor
diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java
index 6b7ddc9..db821a7 100644
--- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java
+++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/environment/EnvironmentListRequest.java
@@ -4,6 +4,8 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.util.List;
+
@Data
@ApiModel
public class EnvironmentListRequest {
@@ -19,4 +21,8 @@
@ApiModelProperty(value = "结束时间", dataType = "String")
private String endTime;
+
+ @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List")
+ private List ids;
+
}
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java
index e2a7f92..4b19dcd 100644
--- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessCertificateReportController.java
@@ -1,18 +1,207 @@
package com.casic.missiles.controller.business;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.casic.missiles.core.base.controller.ExportController;
+import com.casic.missiles.core.page.PageFactory;
+import com.casic.missiles.core.page.PageInfoBT;
+import com.casic.missiles.dto.*;
+import com.casic.missiles.dto.flowable.ApprovalDeleteRequest;
+import com.casic.missiles.dto.meter.*;
+import com.casic.missiles.enums.BusinessExceptionEnum;
+import com.casic.missiles.enums.ExportEnum;
+import com.casic.missiles.exception.BusinessException;
+import com.casic.missiles.model.business.BusinessCertificateReport;
+import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
+import com.casic.missiles.model.meter.MeterTraceSupplier;
+import com.casic.missiles.service.business.IBusinessCertificateReportService;
+import com.casic.missiles.service.meter.IMeterTraceSupplierService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+import java.util.Objects;
/**
*
* 业务管理-证书报告 前端控制器
*
*
- * @author wangpeng
+ * @author zt
* @since 2023-02-02
*/
@RestController
+@Api(tags = "证书报告模块")
@RequestMapping("/business/certificateReport")
-public class BusinessCertificateReportController {
+public class BusinessCertificateReportController extends ExportController {
+ @Resource
+ private IBusinessCertificateReportService certificateReportService;
+ @Autowired
+ private IMeterTraceSupplierService traceSupplierService;
+ @ApiOperation("证书报告列表(分页)")
+ @PostMapping("/listPage")
+ @ResponseBody
+ public ReturnDTO> supplierListPage(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) {
+ if (bindingResult.hasErrors()) {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ Page page = PageFactory.defaultPage();
+ return ReturnUtil.success(super.packForBT(traceSupplierService.listPage(page, request)));
+ }
+ @ApiOperation("证书报告列表")
+ @PostMapping("/list")
+ @ResponseBody
+ public ReturnDTO> supplierList(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) {
+ if (bindingResult.hasErrors()) {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return ReturnUtil.success(traceSupplierService.list(request));
+ }
+
+ @ApiOperation("证书报告导出")
+ @PostMapping("/listExport")
+ @ResponseBody
+ public void export(@RequestBody @Valid TraceSupplierListRequest request, BindingResult bindingResult) throws IOException {
+ if (bindingResult.hasErrors()) {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ List list;
+ if (!CollectionUtils.isEmpty(request.getIds())) {
+ list = traceSupplierService.listByIds(request.getIds());
+ } else {
+ list = traceSupplierService.list(request);
+ }
+ super.exportExcel(MeterTraceSupplier.class, list, ExportEnum.TRACE_SUPPLIER_EXPORT.getSheetName());
+ }
+
+ @ApiOperation("证书报告保存(保存至草稿箱)")
+ @PostMapping("/save")
+ @ResponseBody
+ public ReturnDTO save(@RequestBody @Valid BusinessCertificateReport certificateReport, BindingResult bindingResult) {
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return ReturnUtil.success(certificateReportService.saveCertificateReport(certificateReport));
+ }
+
+ /**
+ * 草稿箱文件编辑
+ */
+ @ApiOperation("草稿箱文件更新")
+ @PostMapping("/draftUpdate")
+ @ResponseBody
+ public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) {
+ Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return traceSupplierService.draftUpdate(traceSupplier);
+ }
+
+ @ApiOperation("证书报告提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)")
+ @PostMapping("/submit")
+ @ResponseBody
+ public ReturnDTO traceSupplierSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) {
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return traceSupplierService.submitTraceSupplier(request);
+ }
+
+ @ApiOperation("证书报告更新(审批通过后还能更新??暂时保留。。)")
+ @PostMapping("/update")
+ @ResponseBody
+ public ReturnDTO supplierUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) {
+ Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ Assert.isFalse(bindingResult.hasErrors(), () -> {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ });
+ return traceSupplierService.updateTraceSupplier(traceSupplier);
+ }
+
+ @ApiOperation("证书报告删除")
+ @PostMapping("/delete")
+ @ResponseBody
+ public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) {
+ Assert.isFalse(Objects.isNull(idDTO.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return traceSupplierService.deleteTraceSupplier(idDTO.getId());
+ }
+
+ @ApiOperation("证书报告批量删除")
+ @PostMapping("/batchDelete")
+ @ResponseBody
+ public ReturnDTO supplierBatchDelete(@RequestBody @Valid IdsDTO idsDTO) {
+ Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return traceSupplierService.deleteBatchTraceSupplier(idsDTO.getIds());
+ }
+
+ @ApiOperation("证书报告详情")
+ @PostMapping("/detail")
+ @ResponseBody
+ public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) {
+ Assert.isFalse(Objects.isNull(idDTO.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ return ReturnUtil.success(certificateReportService.certificateReportDetail(idDTO.getId()));
+ }
+
+ @ApiOperation("证书报告审批列表及详情中基础信息(分页),底部的人员信息等可用证书报告详情接口")
+ @PostMapping("/approval/listPage")
+ @ResponseBody
+ public ReturnDTO> approvalListPage(@RequestBody @Valid TraceSupplierApprovalListRequest request, BindingResult bindingResult) {
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ Page page = PageFactory.defaultPage();
+ List responseList = traceSupplierService.approvalListPage(page, request);
+ page.setRecords(responseList);
+ return ReturnUtil.success(super.packForBT(page));
+ }
+
+ /**
+ * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除)
+ * 前端控制按钮权限
+ */
+ @ApiOperation("审批操作-删除")
+ @PostMapping("/approval/operate/delete")
+ @ResponseBody
+ public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) {
+ if(bindingResult.hasErrors()){
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return traceSupplierService.approvalDelete(request);
+ }
+
+ /**
+ * 审批操作-编辑
+ * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点
+ */
+ @ApiOperation("未通过证书报告编辑(驳回后的证书报告重新编辑,仅未通过列表中的编辑按钮可调用)")
+ @PostMapping("/failUpdate")
+ @ResponseBody
+ public ReturnDTO failUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) {
+ Assert.isFalse(Objects.isNull(traceSupplier.getId()), () -> {
+ throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+ });
+ if (bindingResult.hasErrors()) {
+ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage());
+ }
+ return traceSupplierService.failUpdate(traceSupplier);
+ }
}
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java
index fa5fdee..f126f11 100644
--- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOriginalRecordController.java
@@ -11,7 +11,6 @@
import com.casic.missiles.dto.business.originRecord.OriginRecordRequest;
import com.casic.missiles.enums.BusinessExceptionEnum;
import com.casic.missiles.exception.BusinessException;
-import com.casic.missiles.model.business.BusinessEnvironmentRecord;
import com.casic.missiles.model.business.BusinessOriginalRecord;
import com.casic.missiles.model.exception.enums.CoreExceptionEnum;
import com.casic.missiles.service.business.IBusinessOriginalRecordService;
@@ -99,10 +98,10 @@
businessOriginalRecordService.originExport(request, response);
}
- @ApiOperation("获取设备")
- @PostMapping("/getEquipments")
- public void getEquipments() {
-// businessEnvironmentRecordService.environmentExport(request, response);
- }
+// @ApiOperation("获取设备")
+// @PostMapping("/getEquipments")
+// public void getEquipments() {
+//// businessEnvironmentRecordService.environmentExport(request, response);
+// }
}
diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java
index 15d09ae..b24b193 100644
--- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java
+++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterCertificateController.java
@@ -12,6 +12,7 @@
import com.casic.missiles.listeners.CommonExcelListener;
import com.casic.missiles.model.meter.MeterCertificate;
import com.casic.missiles.model.meter.MeterCertificateExpireMessage;
+import com.casic.missiles.model.workbench.WorkbenchRemindMessage;
import com.casic.missiles.service.meter.MeterCertificateService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -107,9 +108,9 @@
@ApiOperation("消息列表查询")
@PostMapping("/queryMessageList")
@ResponseBody
- public ReturnDTO queryMessageList(@RequestBody MeterStaffRequest request) {
- Page page = PageFactory.defaultPage();
- Page list = meterCertificateService.queryMessageList(page,request);
+ public ReturnDTO queryMessageList() {
+ Page page = PageFactory.defaultPage();
+ Page