From b0bea87aeb6e8c8cd5d414e6afb85bf900b70946 Mon Sep 17 00:00:00 2001 From: hayu <1604366271@qq.com> Date: Mon, 5 Aug 2024 18:24:51 +0800 Subject: [PATCH] =?UTF-8?q?app=E8=AF=95=E9=AA=8C=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ExperimentalAppController.java | 113 ++++ .../aqgqj/app/dao/ExperimentalAppMapper.java | 409 ++++++++++++ .../aqgqj/app/entity/ExperimentalAppVo.java | 86 +++ .../app/service/ExperimentalAppService.java | 95 +++ .../impl/ExperimentalAppServiceImpl.java | 621 ++++++++++++++++++ .../mappers/app/ExperimentalAppMapper.xml | 546 +++++++++++++++ 6 files changed, 1870 insertions(+) create mode 100644 src/main/java/com/bonus/aqgqj/app/controller/ExperimentalAppController.java create mode 100644 src/main/java/com/bonus/aqgqj/app/dao/ExperimentalAppMapper.java create mode 100644 src/main/java/com/bonus/aqgqj/app/entity/ExperimentalAppVo.java create mode 100644 src/main/java/com/bonus/aqgqj/app/service/ExperimentalAppService.java create mode 100644 src/main/java/com/bonus/aqgqj/app/service/impl/ExperimentalAppServiceImpl.java create mode 100644 src/main/resources/mappers/app/ExperimentalAppMapper.xml diff --git a/src/main/java/com/bonus/aqgqj/app/controller/ExperimentalAppController.java b/src/main/java/com/bonus/aqgqj/app/controller/ExperimentalAppController.java new file mode 100644 index 0000000..35f57ea --- /dev/null +++ b/src/main/java/com/bonus/aqgqj/app/controller/ExperimentalAppController.java @@ -0,0 +1,113 @@ +package com.bonus.aqgqj.app.controller; + +import com.bonus.aqgqj.annotation.DecryptAndVerify; +import com.bonus.aqgqj.annotation.LogAnnotation; +import com.bonus.aqgqj.app.entity.ExperimentalAppVo; +import com.bonus.aqgqj.app.entity.SamplesManageAppVo; +import com.bonus.aqgqj.app.service.ExperimentalAppService; +import com.bonus.aqgqj.basis.entity.dto.ParamsDto; +import com.bonus.aqgqj.basis.entity.vo.ExperimentalDetailVo; +import com.bonus.aqgqj.basis.entity.vo.TestVo; +import com.bonus.aqgqj.basis.service.ExperimentalService; +import com.bonus.aqgqj.system.vo.EncryptedReq; +import com.bonus.aqgqj.utils.ServerResponse; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** +* @description app试验管理 +* @author hay +* @date 2024/8/5 16:32 +*/ +@RestController +@RequestMapping("/app/experimental/") +@Slf4j +public class ExperimentalAppController { + + @Resource(name = "ExperimentalAppService") + private ExperimentalAppService service; + + @PostMapping(value = "getList") + @DecryptAndVerify(decryptedClass = ParamsDto.class)//加解密统一管理 + @LogAnnotation(operModul = "app试验管理", operation = "查询列表", operDesc = "业务级事件", operType = "查询") +// @PreAuthorize("@pms.hasPermission('sys:experimental:query')" ) + public ServerResponse getList(EncryptedReq data) { + try { + List list = service.getList(data.getData()); + return ServerResponse.createSuccess(list); + } catch (Exception e) { + log.error(e.toString(),e); + } + return ServerResponse.createErroe("操作失败"); + } + + @PostMapping(value = "getDetailList") + @DecryptAndVerify(decryptedClass = ParamsDto.class)//加解密统一管理 + @LogAnnotation(operModul = "试验详情管理", operation = "查询试验详情列表", operDesc = "业务级事件", operType = "查询") +// @PreAuthorize("@pms.hasPermission('sys:experimentalTest:query')") + public ServerResponse getDetailList(EncryptedReq data) { + PageHelper.startPage(data.getData().getPage(), data.getData().getLimit()); + List list = service.getDetailList(data.getData()); + PageInfo pageInfo = new PageInfo<>(list); + return ServerResponse.createSuccessPage(pageInfo, data.getData().getPage(), data.getData().getLimit()); + } + + /** + * 查询试验模板数据、基础数据 + * + * @param data + * @return ServerResponse + * @author cwchen + * @date 2024/7/20 14:12 + */ + @PostMapping(value = "getTestBasicInfo") + @DecryptAndVerify(decryptedClass = ParamsDto.class)//加解密统一管理 + public ServerResponse getTestBasicInfo(EncryptedReq data) { + return service.getTestBasicInfo(data.getData()); + } + + @PostMapping(value = "addTestData") + @DecryptAndVerify(decryptedClass = TestVo.class)//加解密统一管理 + @LogAnnotation(operModul = "试验详情管理", operation = "新增试验数据", operDesc = "业务级事件", operType = "新增") + // @PreAuthorize("@pms.hasPermission('sys:experimentalTest:add')") + public ServerResponse addTestData(EncryptedReq data) { + return service.addTestData(data.getData()); + } + + @PostMapping(value = "editTestData") + @DecryptAndVerify(decryptedClass = TestVo.class)//加解密统一管理 + @LogAnnotation(operModul = "试验详情管理", operation = "修改试验数据", operDesc = "业务级事件", operType = "修改") + // @PreAuthorize("@pms.hasPermission('sys:experimentalTest:edit')") + public ServerResponse editTestData(EncryptedReq data) { + return service.editTestData(data.getData()); + } + + @PostMapping(value = "delTestData") + @DecryptAndVerify(decryptedClass = ParamsDto.class)//加解密统一管理 + @LogAnnotation(operModul = "试验详情管理", operation = "删除试验数据", operDesc = "业务级事件", operType = "删除") + // @PreAuthorize("@pms.hasPermission('sys:experimentalTest:del')") + public ServerResponse delTestData(EncryptedReq data) { + return service.delTestData(data.getData()); + } + + @PostMapping(value = "viewTestData") + @DecryptAndVerify(decryptedClass = ParamsDto.class)//加解密统一管理 + public ServerResponse viewTestData(EncryptedReq data) { + return service.viewTestData(data.getData()); + } + + @PostMapping(value = "commitCheckTestData") + @DecryptAndVerify(decryptedClass = ParamsDto.class)//加解密统一管理 + @LogAnnotation(operModul = "试验管理", operation = "提交审查数据", operDesc = "业务级事件", operType = "提交审查") + // @PreAuthorize("@pms.hasPermission('sys:experimentalTest:commitCheck')") + public ServerResponse commitCheckTestData(EncryptedReq data) { + return service.commitCheckTestData(data.getData()); + } +} diff --git a/src/main/java/com/bonus/aqgqj/app/dao/ExperimentalAppMapper.java b/src/main/java/com/bonus/aqgqj/app/dao/ExperimentalAppMapper.java new file mode 100644 index 0000000..6573347 --- /dev/null +++ b/src/main/java/com/bonus/aqgqj/app/dao/ExperimentalAppMapper.java @@ -0,0 +1,409 @@ +package com.bonus.aqgqj.app.dao; + +import com.bonus.aqgqj.app.entity.ExperimentalAppVo; +import com.bonus.aqgqj.basis.entity.dto.ParamsDto; +import com.bonus.aqgqj.basis.entity.vo.*; +import org.apache.ibatis.annotations.MapKey; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +/** +* @description app试验管理 +* @author hay +* @date 2024/8/5 16:34 +*/ +@Repository(value = "ExperimentalAppMapper") +public interface ExperimentalAppMapper { + /** + * 试验列表 + * + * @param dto + * @return List + * @author cwchen + * @date 2024/7/20 12:32 + */ + public List getList(ParamsDto dto); + + /** + * 试验详情列表 + * + * @param dto + * @return List + * @author cwchen + * @date 2024/7/20 13:27 + */ + List getDetailList(ParamsDto dto); + + /** + * 查询试验模板数据、基础数据 + * + * @param dto + * @return TestVo + * @author cwchen + * @date 2024/7/20 14:23 + */ + TestVo getTestBasicInfo(ParamsDto dto); + + /** + * 添加试验信息 + * + * @param vo + * @return void + * @author cwchen + * @date 2024/7/20 16:13 + */ + void addExper(TestVo vo); + + /** + * 添加试验依据信息数据 + * + * @param basisVos + * @param experId + * @return void + * @author cwchen + * @date 2024/7/20 17:05 + */ + void addConfigBasis(@Param("list") List basisVos, @Param("experId") Long experId); + + /** + * 查询收样设备-根据设备类型 + * + * @param dto + * @return List + * @author cwchen + * @date 2024/7/21 17:01 + */ + List getSampleDeviceVos(ParamsDto dto); + + /** + * 添加试验项信息 + * + * @param configItemsVo + * @param experId + * @return void + * @author cwchen + * @date 2024/7/21 17:21 + */ + void addExperItems(@Param("params") ConfigItemsVo configItemsVo, @Param("experId") Long experId); + + /** + * 添加试验项内容 + * + * @param configItemVo + * @return void + * @author cwchen + * @date 2024/7/21 17:28 + */ + void addExperItem(@Param("params") ConfigItemVo configItemVo, @Param("experId") Long experId); + + /** + * 添加试验样品设备表 + * + * @param experDevVo + * @param experId + * @return void + * @author cwchen + * @date 2024/7/21 17:58 + */ + void addExperDev(@Param("params") ExperDevVo experDevVo, @Param("experId") Long experId); + + /** + * 添加设备试验项信息 + * + * @param experDevItemsVo + * @return void + * @author cwchen + * @date 2024/7/21 18:19 + */ + void addExperDevItems(ExperDevItemsVo experDevItemsVo); + + /** + * 添加设备试验项数据 + * + * @param experDevItemVos + * @return void + * @author cwchen + * @date 2024/7/21 19:48 + */ + void addExperDevItem(List experDevItemVos); + + /** + * 试验数据详情 + * + * @param dto + * @return TestVo + * @author cwchen + * @date 2024/7/21 22:53 + */ + TestVo viewTestData(ParamsDto dto); + + /** + * 添加试验设备数据 + * + * @param deviceVos + * @param experId + * @return void + * @author cwchen + * @date 2024/7/21 23:12 + */ + void addExperConfigDev(@Param("list") List deviceVos, @Param("experId") Long experId); + + /** + * 试验依据信息 + * + * @param dto + * @return List + * @author cwchen + * @date 2024/7/21 23:19 + */ + List getConfigBasis(ParamsDto dto); + + /** + * 试验设备信息 + * + * @param dto + * @return List + * @author cwchen + * @date 2024/7/21 23:22 + */ + List getExperConfigDevs(ParamsDto dto); + + /** + * 试验项信息 + * + * @param dto + * @return List + * @author cwchen + * @date 2024/7/21 23:27 + */ + List getExperItems(ParamsDto dto); + + /** + * 试验项内容信息 + * + * @param id + * @return List + * @author cwchen + * @date 2024/7/21 23:33 + */ + List getExperItem(Long id); + + /** + * 试验样品设备 + * + * @param dto + * @return List + * @author cwchen + * @date 2024/7/21 23:37 + */ + List getExperDev(ParamsDto dto); + + /** + * 修改试验信息数据 + * + * @param vo + * @return void + * @author cwchen + * @date 2024/7/22 0:02 + */ + void updateExper(TestVo vo); + + /** + * 获取试验样品设备ID + * + * @param id + * @return List + * @author cwchen + * @date 2024/7/22 0:18 + */ + List getExperDevIds(Long id); + + /** + * 获取设备试验项信息ID + * + * @param list + * @return List + * @author cwchen + * @date 2024/7/22 0:18 + */ + List getExperDevItems(List list); + + /** + * 删除试验依据 + * + * @param id + * @return void + * @author cwchen + * @date 2024/7/22 0:24 + */ + void delConfigBasis(Long id); + + /** + * 删除试验设备 + * + * @param id + * @return void + * @author cwchen + * @date 2024/7/22 0:24 + */ + void delExperConfigDev(Long id); + + /** + * 删除试验样品设备 + * + * @param id + * @return void + * @author cwchen + * @date 2024/7/22 0:24 + */ + void delExperDev(Long id); + + /** + * 删除设备试验项信息 + * + * @param list + * @return void + * @author cwchen + * @date 2024/7/22 0:24 + */ + void delExperDevItems(List list); + + /** + * 删除设备试验项数据 + * + * @param list + * @return void + * @author cwchen + * @date 2024/7/22 0:24 + */ + void delExperDevItem(List list); + + /** + * 删除试验信息 + * + * @param id + * @return void + * @author cwchen + * @date 2024/7/22 0:32 + */ + void delExper(Long id); + + /** + * 查询试验项ID + * + * @param id + * @return List + * @author cwchen + * @date 2024/7/22 0:34 + */ + List getExperItemsIds(Long id); + + /** + * 删除试验项 + * + * @param id + * @return void + * @author cwchen + * @date 2024/7/22 0:36 + */ + void delExperItems(Long id); + + /** + * 删除试验项内容 + * + * @param experItemsIds + * @return void + * @author cwchen + * @date 2024/7/22 0:36 + */ + void delExperItem(List experItemsIds); + + /** + * 查询试验设备数量 + * + * @param experId + * @return List + * @author cwchen + * @date 2024/7/22 10:58 + */ + @MapKey("id") + List> getExperDevItemsNum(Long experId); + + /** + * 判断是否处于审核流程中的数据 + * + * @param id + * @return int + * @author cwchen + * @date 2024/7/22 14:13 + */ + int isCheck(Long id); + + /** + * 判断提交数据中是否存在流程数据或者存在待试验项 + * + * @param list + * @return int + * @author cwchen + * @date 2024/7/22 15:24 + */ + int isNotEditData(List list); + + /** + * 更新收样表中的状态为待审阅 + * + * @param list + * @return void + * @author cwchen + * @date 2024/7/22 15:33 + */ + void updateSampleStatus(List list); + + /** + * 更新试验表中数据为待审阅 + * + * @param list + * @return void + * @author cwchen + * @date 2024/7/22 15:33 + */ + void updateExperStatus(List list); + + /** + * 获取收样中的试验项是否全部填写 + * + * @param sampleId + * @return List + * @author cwchen + * @date 2024/7/22 16:09 + */ + List isAllExper(Long sampleId); + + /** + * 更新收样表中的状态为待提交 + * + * @param id + * @return void + * @author cwchen + * @date 2024/7/22 16:24 + */ + void editSampleStatus(Long id); + + /** + * 获取记录编号 + * @param testVo + * @return List + * @author cwchen + * @date 2024/7/28 15:52 + */ + List getRecordNum(TestVo testVo); + + /** + * 更新总结 + * @param vo + */ + void updateExperMony(TestVo vo); +} diff --git a/src/main/java/com/bonus/aqgqj/app/entity/ExperimentalAppVo.java b/src/main/java/com/bonus/aqgqj/app/entity/ExperimentalAppVo.java new file mode 100644 index 0000000..02fc818 --- /dev/null +++ b/src/main/java/com/bonus/aqgqj/app/entity/ExperimentalAppVo.java @@ -0,0 +1,86 @@ +package com.bonus.aqgqj.app.entity; + +import com.bonus.aqgqj.utils.UserUtil; +import lombok.Data; + +/** + * @className:ExperimentalVo + * @author:cwchen + * @date:2024-07-20-12:19 + * @version:1.0 + * @description:试验管理-vo + */ +@Data +public class ExperimentalAppVo { + + /** + * id + */ + private Long id; + /** + * 送样单位 + */ + private String customName; + /** + * 送样时间 + */ + private String sampleTime; + /** + * 送样设备 + */ + private String sampleDev; + /** + * 送样数量 + */ + private Integer customNum; + /** + * 收样人 + */ + private String sampleUserName; + /** + * 收样时间 + */ + private String sampleDate; + /** + * 派工人 + */ + private String dispatchUserName; + + /** + * 派工时间 + */ + private String dispatchTime; + + /** + * 试验班组 + */ + private String teamName; + + private String audtiStatus; + + /** + * 备注 + */ + private String remarks; + + /** + * 批次编号 + */ + private String batchCode; + + + /** + * 试验时间 + */ + private String experTime; + + /** + * 状态 + */ + private Integer status; + + /** + * 角色编码 + */ + private String roleCode = UserUtil.getLoginUser() != null ? UserUtil.getLoginUser().getRoleCode() : ""; +} diff --git a/src/main/java/com/bonus/aqgqj/app/service/ExperimentalAppService.java b/src/main/java/com/bonus/aqgqj/app/service/ExperimentalAppService.java new file mode 100644 index 0000000..68ed5b3 --- /dev/null +++ b/src/main/java/com/bonus/aqgqj/app/service/ExperimentalAppService.java @@ -0,0 +1,95 @@ +package com.bonus.aqgqj.app.service; + +import com.bonus.aqgqj.app.entity.ExperimentalAppVo; +import com.bonus.aqgqj.basis.entity.dto.ParamsDto; +import com.bonus.aqgqj.basis.entity.vo.ExperimentalDetailVo; +import com.bonus.aqgqj.basis.entity.vo.TestVo; +import com.bonus.aqgqj.utils.ServerResponse; + +import java.util.List; + +/** +* @description app试验管理 +* @author hay +* @date 2024/8/5 16:33 +*/ +public interface ExperimentalAppService { + /** + * 试验列表 + * + * @param data + * @return List + * @author cwchen + * @date 2024/7/20 12:31 + */ + List getList(ParamsDto data); + + /** + * 试验详情列表 + * + * @param data + * @return List + * @author cwchen + * @date 2024/7/20 13:26 + */ + List getDetailList(ParamsDto data); + + /** + * 查询试验模板数据、基础数据 + * + * @param data + * @return ServerResponse + * @author cwchen + * @date 2024/7/20 14:12 + */ + ServerResponse getTestBasicInfo(ParamsDto data); + + /** + * 新增试验数据 + * + * @param data + * @return ServerResponse + * @author cwchen + * @date 2024/7/20 15:42 + */ + ServerResponse addTestData(TestVo data); + + /** + * 修改试验数据 + * + * @param data + * @return ServerResponse + * @author cwchen + * @date 2024/7/21 20:06 + */ + ServerResponse editTestData(TestVo data); + + /** + * 删除试验数据 + * + * @param data + * @return ServerResponse + * @author cwchen + * @date 2024/7/21 20:06 + */ + ServerResponse delTestData(ParamsDto data); + + /** + * 试验数据详情 + * + * @param data + * @return ServerResponse + * @author cwchen + * @date 2024/7/21 20:06 + */ + ServerResponse viewTestData(ParamsDto data); + + /** + * 试验管理-提交审查 + * @param data + * @return ServerResponse + * @author cwchen + * @date 2024/7/22 14:25 + */ + ServerResponse commitCheckTestData(ParamsDto data); +} diff --git a/src/main/java/com/bonus/aqgqj/app/service/impl/ExperimentalAppServiceImpl.java b/src/main/java/com/bonus/aqgqj/app/service/impl/ExperimentalAppServiceImpl.java new file mode 100644 index 0000000..9bd9190 --- /dev/null +++ b/src/main/java/com/bonus/aqgqj/app/service/impl/ExperimentalAppServiceImpl.java @@ -0,0 +1,621 @@ +package com.bonus.aqgqj.app.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.bonus.aqgqj.advice.ValidatorsUtils; +import com.bonus.aqgqj.app.dao.ExperimentalAppMapper; +import com.bonus.aqgqj.app.entity.ExperimentalAppVo; +import com.bonus.aqgqj.app.service.ExperimentalAppService; +import com.bonus.aqgqj.basis.dao.ExperimentStandardMapper; +import com.bonus.aqgqj.basis.dao.ExperimentalMapper; +import com.bonus.aqgqj.basis.entity.dto.ParamsDto; +import com.bonus.aqgqj.basis.entity.vo.*; +import com.bonus.aqgqj.basis.service.ExperimentalService; +import com.bonus.aqgqj.utils.DateTimeHelper; +import com.bonus.aqgqj.utils.ServerResponse; +import com.bonus.aqgqj.utils.SystemUtils; +import com.bonus.aqgqj.webResult.Constants; +import com.bonus.aqgqj.webResult.HttpStatus; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; + +/** +* @description app试验管理 +* @author hay +* @date 2024/8/5 16:34 +*/ +@Service(value = "ExperimentalAppService") +@Slf4j +public class ExperimentalAppServiceImpl implements ExperimentalAppService { + + @Resource(name = "ExperimentalAppMapper") + private ExperimentalAppMapper mapper; + + @Resource(name = "ExperimentStandardMapper") + private ExperimentStandardMapper standardMapper; + + @Resource(name = "ValidatorsUtils") + private ValidatorsUtils validatorsUtils; + + @Override + public List getList(ParamsDto dto) { + List list = new ArrayList<>(); + try { + list = mapper.getList(dto); + } catch (Exception e) { + log.error(e.toString(), e); + } + return list; + } + + @Override + public List getDetailList(ParamsDto dto) { + List list = new ArrayList<>(); + try { + list = mapper.getDetailList(dto); + if (CollectionUtils.isNotEmpty(list)) { + for (ExperimentalDetailVo detailVo : list) { + // 样品试验结果、样品数量、送样总数 + List sampleList = new ArrayList<>(); + if (detailVo.getExperId() != null) { + List> mapList = mapper.getExperDevItemsNum(detailVo.getExperId()); + JSONArray jsonArray = new JSONArray(); + jsonArray.addAll(mapList); + sampleList = jsonArray.toJavaList(ExperimentalDetailVo.Sample.class); + } + detailVo.setSampleList(sampleList); + detailVo.setSampleQuantity(sampleList.size()); + } + } + } catch (Exception e) { + log.error(e.toString(), e); + } + return list; + } + + @Override + public ServerResponse getTestBasicInfo(ParamsDto dto) { + TestVo vo = new TestVo(); + try { + if (dto.getId() == null || StringUtils.isEmpty(dto.getDevTypeCode())) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "参数完整"); + } + // 查询收样基本信息 + vo = mapper.getTestBasicInfo(dto); + if (vo.getConfigId() == null) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "未配置该设备类型的试验标准,请先配置"); + } + // 查询收样设备、试验配置依据、试验主要设备、试验项信息 + List sampleDeviceVos = mapper.getSampleDeviceVos(dto); + List basisVos = standardMapper.getExperBasis(vo.getConfigId()); + List mainDevVos = standardMapper.getConfigMainDev(vo.getConfigId()); + List configItemsVos = standardMapper.getConfigItems(vo.getConfigId()); + for (ConfigItemsVo configItemsVo : configItemsVos) { + List configItemVos = standardMapper.getConfiItem(configItemsVo.getId()); + configItemsVo.setItemList(configItemVos); + } + vo.setSampleDeviceVos(sampleDeviceVos); + vo.setBasisVos(basisVos); + vo.setMainDeviceVos(mainDevVos); + vo.setConfigItemsVos(configItemsVos); + } catch (Exception e) { + log.error(e.toString(), e); + } + return ServerResponse.createSuccess(vo); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public ServerResponse addTestData(TestVo vo) { + try { + if (!SystemUtils.isExperimentalTeam()) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "非试验班组,无法添加试验数据"); + } + // 整体数据校验数据 + String validResult = validatorsUtils.valid(vo, TestVo.Query.class); + if (StringUtils.isNotBlank(validResult)) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, validResult); + } + if (!validatorsDate(vo)) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "下次试验日期不能早于试验日期"); + } + String result = validatorsParams(vo.getParamsData()); + if (StringUtils.isNotBlank(result)) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, result); + } + TestVo testVo = handleConfigItem(vo); + if (testVo == null) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "参数异常"); + } + // 试验主要设备、试验依据、试验项校验 + String result2 = singleValidators(testVo); + if (StringUtils.isNotBlank(result2)) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, result2); + } + BigDecimal allMony = new BigDecimal("0"); + // 添加试验信息数据 + mapper.addExper(vo); + // 添加试验依据信息数据 + mapper.addConfigBasis(vo.getBasisVos(), vo.getId()); + for (int i = 0; i < vo.getExperDevVos().size(); i++) { + ExperDevVo experDevVo = vo.getExperDevVos().get(i); + experDevVo.setIsHg(setHgData(experDevVo.getDevData())); + BigDecimal bigDecimal = new BigDecimal("0"); + if (i == 0) { + for (ConfigItemsVo configItemsVo : vo.getConfigItemsVos()) { + // 添加试验项数据 + mapper.addExperItems(configItemsVo, vo.getId()); + BigDecimal amount = new BigDecimal(configItemsVo.getAmount()); + bigDecimal=bigDecimal.add(amount); + // 添加试验项内容数据 + for (ConfigItemVo configItemVo : configItemsVo.getItemList()) { + mapper.addExperItem(configItemVo, configItemsVo.getId()); + } + } + } + //计算设备总金额 + experDevVo.setExperAmount(bigDecimal.toString()); + BigDecimal amount= new BigDecimal(experDevVo.getAmount()); + allMony=allMony.add(bigDecimal).add(amount); + mapper.addExperDev(experDevVo, vo.getId()); + List experDevItemsVos = setExperDevItemsList(vo.getExperDevVos().get(i), vo); + for (ExperDevItemsVo experDevItemsVo : experDevItemsVos) { + // 添加设备试验项信息 + mapper.addExperDevItems(experDevItemsVo); + List experDevItemVos = setExperDevItemList(vo.getExperDevVos().get(i), vo, experDevItemsVo); + // 添加设备试验项数据 + mapper.addExperDevItem(experDevItemVos); + } + } + // 获取收样中的试验项是否全部填写 + List resultList = mapper.isAllExper(vo.getSampleId()); + if (Objects.equals(resultList.get(0), resultList.get(1))) { + // 更新收样表中的状态为待提交 + mapper.editSampleStatus(vo.getSampleId()); + } + + vo.setAllMoney(allMony.toString()); + mapper.updateExperMony(vo); + } catch (Exception e) { + log.error(e.toString(), e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "操作失败"); + } + return ServerResponse.createBySuccessMsg("操作成功"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public ServerResponse editTestData(TestVo vo) { + try { + if (vo.getId() == null) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "参数不完整"); + } + if (!SystemUtils.isExperimentalTeam()) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "非试验班组,无法修改试验数据"); + } + // 处于审核流程中的数据无法进行修改 + int isCheck = mapper.isCheck(vo.getId()); + if (isCheck > 0) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "处于审核流程中的数据或者试验完成的数据无法进行修改"); + } + // 整体数据校验数据 + String validResult = validatorsUtils.valid(vo, TestVo.Query.class); + if (StringUtils.isNotBlank(validResult)) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, validResult); + } + if (!validatorsDate(vo)) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "下次试验日期不能早于试验日期"); + } + String result = validatorsParams(vo.getParamsData()); + if (StringUtils.isNotBlank(result)) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, result); + } + TestVo testVo = handleConfigItem(vo); + if (testVo == null) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "参数异常"); + } + // 试验主要设备、试验依据、试验项校验 + String result2 = singleValidators(testVo); + if (StringUtils.isNotBlank(result2)) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, result2); + } + //论实验全部金额 + BigDecimal allMony= new BigDecimal("0"); + //获取试验项金额 + BigDecimal bigDecimal = new BigDecimal("0"); + for (ConfigItemsVo configItemsVo : vo.getConfigItemsVos()) { + // 添加试验项数据 + BigDecimal amount = new BigDecimal(configItemsVo.getAmount()); + bigDecimal=bigDecimal.add(amount); + } + // 删除试验依据、试验样品设备、设备试验项信息、设备试验项数据 + List experDevIds = mapper.getExperDevIds(vo.getId()); + List experDevItemsIds = mapper.getExperDevItems(experDevIds); + mapper.delConfigBasis(vo.getId()); + mapper.delExperDev(vo.getId()); + if (CollectionUtils.isNotEmpty(experDevIds)) { + mapper.delExperDevItems(experDevIds); + } + if (CollectionUtils.isNotEmpty(experDevItemsIds)) { + mapper.delExperDevItem(experDevItemsIds); + } + // 修改试验信息数据 + mapper.updateExper(vo); + // 添加试验依据信息数据 + mapper.addConfigBasis(vo.getBasisVos(), vo.getId()); + for (int i = 0; i < vo.getExperDevVos().size(); i++) { + ExperDevVo experDevVo = vo.getExperDevVos().get(i); + experDevVo.setIsHg(setHgData(experDevVo.getDevData())); + // 添加试验样品数据 + BigDecimal amount= new BigDecimal(experDevVo.getAmount()); + allMony=allMony.add(bigDecimal).add(amount); + experDevVo.setExperAmount(bigDecimal.toString()); + mapper.addExperDev(experDevVo, vo.getId()); + List experDevItemsVos = setExperDevItemsList(vo.getExperDevVos().get(i), vo); + for (ExperDevItemsVo experDevItemsVo : experDevItemsVos) { + + mapper.addExperDevItems(experDevItemsVo); + List experDevItemVos = setExperDevItemList(vo.getExperDevVos().get(i), vo, experDevItemsVo); + // 添加设备试验项数据 + mapper.addExperDevItem(experDevItemVos); + } + } + vo.setAllMoney(allMony.toString()); + mapper.updateExperMony(vo); + } catch (Exception e) { + log.error(e.toString(), e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "操作失败"); + } + return ServerResponse.createBySuccessMsg("操作成功"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public ServerResponse delTestData(ParamsDto dto) { + try { + // 删除试验依据、试验样品设备、设备试验项信息、设备试验项数据、试验项、试验项内容、试验信息 + List experDevIds = mapper.getExperDevIds(dto.getId()); + List experDevItemsIds = mapper.getExperDevItems(experDevIds); + List experItemsIds = mapper.getExperItemsIds(dto.getId()); + mapper.delConfigBasis(dto.getId()); + mapper.delExperDev(dto.getId()); + mapper.delExperDevItems(experDevIds); + mapper.delExperDevItem(experDevItemsIds); + mapper.delExperItems(dto.getId()); + mapper.delExperItem(experItemsIds); + mapper.delExper(dto.getId()); + } catch (Exception e) { + log.error(e.toString(), e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "操作失败"); + } + return ServerResponse.createBySuccessMsg("操作成功"); + } + + @Override + public ServerResponse viewTestData(ParamsDto dto) { + TestVo testVo = new TestVo(); + try { + if (dto.getId() == null) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "请求参数不完整"); + } + // 试验数据详情 + testVo = mapper.viewTestData(dto); + List numList = mapper.getRecordNum(testVo); + int recordNum = 0; + for (int i = 0; i < numList.size(); i++) { + if (Objects.equals(testVo.getId(), numList.get(i))) { + recordNum = i + 1; + break; + } + } + testVo.setRecordNum(testVo.getExperTime().replace("-", "") + setRecordNum(recordNum)); + //试验依据信息、试验项、试验项目信息、试验样品设备 + ConfigMainDevVo configMainDevVo = new ConfigMainDevVo(); + configMainDevVo.setExperDevName(testVo.getExperDev()); + configMainDevVo.setExperDevModule(testVo.getExperModule()); + configMainDevVo.setExperDevCode(testVo.getExperCode()); + configMainDevVo.setDevContractDate(testVo.getCheckTime()); + List configMainDevVos = new ArrayList<>(); + configMainDevVos.add(configMainDevVo); + List experBasisVos = mapper.getConfigBasis(dto); + List configItemsVos = mapper.getExperItems(dto); + for (ConfigItemsVo configItemsVo : configItemsVos) { + List configItemVos = mapper.getExperItem(configItemsVo.getId()); + configItemsVo.setItemList(configItemVos); + } + List experDevVos = mapper.getExperDev(dto); + testVo.setMainDeviceVos(configMainDevVos); + testVo.setBasisVos(experBasisVos); + testVo.setConfigItemsVos(configItemsVos); + testVo.setExperDevVos(experDevVos); + return ServerResponse.createSuccess(testVo); + } catch (Exception e) { + log.error(e.toString(), e); + return ServerResponse.createSuccess(null); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public ServerResponse commitCheckTestData(ParamsDto dto) { + try { + // 判断是否提交空数据 + if (dto.getIds() == null || dto.getIds().length == 0) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "未提交审查数据"); + } + if (!SystemUtils.isExperimentalTeam()) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "非试验班组,无法提交审查数据"); + } + // 判断提交数据中是否存在流程数据或者存在待试验项 + List list = Arrays.asList(dto.getIds()); + int result = mapper.isNotEditData(list); + if (result > 0) { + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "提交数据中存在待试验项或处于审核流程或已试验结束"); + } + // 更新收样表中的状态为待审阅 + mapper.updateSampleStatus(list); + // 更新试验表中数据为待审阅 + mapper.updateExperStatus(list); + } catch (Exception e) { + log.error(e.toString(), e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "操作失败"); + } + return ServerResponse.createBySuccessMsg("操作成功"); + } + + /** + * 验证参数是否为空 + * + * @param value + * @return String + * @author cwchen + * @date 2024/7/18 17:22 + */ + public String validatorsParams(String value) { + try { + // 试验配置项、试验依据、主要试验设备、样品设备验证数据是否为空 + JSONObject obj = JSONObject.parseObject(value); + JSONArray itemsList = obj.getJSONArray("items"); + JSONArray yjList = obj.getJSONArray("yjList"); + JSONArray mainDevList = obj.getJSONArray("mainDevList"); + JSONArray experDevList = obj.getJSONArray("experDevList"); + if (CollectionUtils.isEmpty(mainDevList)) { + return Constants.ERROR_2; + } + if (CollectionUtils.isEmpty(yjList)) { + return Constants.ERROR_3; + } + if (CollectionUtils.isEmpty(itemsList)) { + return Constants.ERROR_4; + } + if (CollectionUtils.isEmpty(experDevList)) { + return Constants.ERROR_6; + } + } catch (Exception e) { + log.error(e.toString(), e); + return Constants.ERROR_5; + } + return null; + } + + /** + * 处理试验项、试验项内容、试验依据、试验设备、主要试验设备、样品设备试验数据 数据 + * + * @param vo + * @return List + * @author cwchen + * @date 2024/7/18 16:43 + */ + public TestVo handleConfigItem(TestVo vo) { + try { + JSONObject obj = JSONObject.parseObject(vo.getParamsData()); + JSONArray yjList = obj.getJSONArray("yjList"); + JSONArray mainDevList = obj.getJSONArray("mainDevList"); + JSONArray itemsList = obj.getJSONArray("items"); + JSONArray experDevList = obj.getJSONArray("experDevList"); + List basisVos = yjList.toJavaList(ExperBasisVo.class); + List mainDeviceVos = mainDevList.toJavaList(ConfigMainDevVo.class); + List configItemsVos = itemsList.toJavaList(ConfigItemsVo.class); + List experDevVos = experDevList.toJavaList(ExperDevVo.class); + for (ConfigItemsVo configItemsVo : configItemsVos) { + JSONArray itemArr = JSONObject.parseArray(configItemsVo.getItem()); + List configItemVos = itemArr.toJavaList(ConfigItemVo.class); + configItemsVo.setItemList(configItemVos); + } + for (ConfigMainDevVo mainDeviceVo : mainDeviceVos) { + vo.setExperDev(mainDeviceVo.getExperDevName()); + vo.setExperModule(mainDeviceVo.getExperDevModule()); + vo.setExperCode(mainDeviceVo.getExperDevCode()); + vo.setCheckTime(mainDeviceVo.getDevContractDate()); + } + vo.setBasisVos(basisVos); + vo.setMainDeviceVos(mainDeviceVos); + vo.setConfigItemsVos(configItemsVos); + vo.setExperDevVos(experDevVos); + } catch (Exception e) { + log.error(e.toString(), e); + return null; + } + return vo; + } + + /** + * 试验项、试验项内容、试验依据、试验设备、主要试验设备数据校验 + * + * @param vo + * @return String + * @author cwchen + * @date 2024/7/18 19:17 + */ + public String singleValidators(TestVo vo) { + List mainDeviceVos = vo.getMainDeviceVos(); + List basisVos = vo.getBasisVos(); + List configItemsVos = vo.getConfigItemsVos(); + List experDevVos = vo.getExperDevVos(); + for (ConfigMainDevVo mainDeviceVo : mainDeviceVos) { + String validResult = validatorsUtils.valid(mainDeviceVo, ConfigMainDevVo.Query.class); + if (StringUtils.isNotBlank(validResult)) { + return validResult; + } + } + for (ExperBasisVo basisVo : basisVos) { + String validResult = validatorsUtils.valid(basisVo, ExperBasisVo.Query.class); + if (StringUtils.isNotBlank(validResult)) { + return validResult; + } + } + for (ConfigItemsVo configItemsVo : configItemsVos) { + String validResult = validatorsUtils.valid(configItemsVo, ConfigItemsVo.Query.class); + if (StringUtils.isNotBlank(validResult)) { + return validResult; + } + for (ConfigItemVo configItemVo : configItemsVo.getItemList()) { + String validResult2 = validatorsUtils.valid(configItemVo, ConfigItemVo.Query.class); + if (StringUtils.isNotBlank(validResult2)) { + return validResult2; + } + } + } + for (ExperDevVo experDevVo : experDevVos) { + String validResult = validatorsUtils.valid(experDevVo, ExperDevVo.Query.class); + if (StringUtils.isNotBlank(validResult)) { + return validResult; + } + } + return null; + } + + /** + * 校验试验时间和下次试验时间 + * + * @param vo + * @return boolean + * @author cwchen + * @date 2024/7/20 16:56 + */ + public boolean validatorsDate(TestVo vo) { + long time = DateTimeHelper.getTimeStampConverter(vo.getExperTime(), Constants.FORMAT_STR); + long time2 = DateTimeHelper.getTimeStampConverter(vo.getNextExperTime(), Constants.FORMAT_STR); + if (time2 < time) { + return false; + } + return true; + } + + /** + * 处理设备试验项数据 + * + * @param experDevVo + * @param vo + * @return List + * @author cwchen + * @date 2024/7/21 19:17 + */ + public List setExperDevItemsList(ExperDevVo experDevVo, TestVo vo) { + List experDevItemsList = new ArrayList<>(); + for (int i = 0; i < vo.getConfigItemsVos().size(); i++) { + ConfigItemsVo configItemsVo = vo.getConfigItemsVos().get(i); + ExperDevItemsVo experDevItems = new ExperDevItemsVo(); + experDevItems.setItemsId(configItemsVo.getId()); + experDevItems.setDevId(experDevVo.getId()); + experDevItems.setItemsName(configItemsVo.getExperTypeName()); + experDevItems.setValSort(configItemsVo.getItemsSort()); + experDevItemsList.add(experDevItems); + } + return experDevItemsList; + } + + /** + * 处理设备试验项内容数据 + * + * @param experDevVo + * @param vo + * @return List + * @author cwchen + * @date 2024/7/21 19:17 + */ + public List setExperDevItemList(ExperDevVo experDevVo, TestVo vo, ExperDevItemsVo experDevItemsVo) { + List experDevItemList = new ArrayList<>(); + int index = 0; + for (int i = 0; i < vo.getConfigItemsVos().size(); i++) { + ConfigItemsVo configItemsVo = vo.getConfigItemsVos().get(i); + List experDevItemVos = new ArrayList<>(); + for (int j = 0; j < configItemsVo.getItemList().size(); j++) { + ConfigItemVo configItemVo = configItemsVo.getItemList().get(j); + ExperDevItemVo experDevItemVo = new ExperDevItemVo(); + experDevItemVo.setItemsId(configItemsVo.getId()); + experDevItemVo.setItemId(configItemVo.getId()); + experDevItemVo.setDevId(experDevItemsVo.getId()); + experDevItemVo.setItemName(configItemVo.getItemName()); + index = i * configItemsVo.getItemList().size() + j; + String val = getVal(experDevVo, index); + experDevItemVo.setItemVal(val); + experDevItemList.add(experDevItemVo); + } + } + return experDevItemList; + } + + /** + * 获取设备试验项内容数据 + * + * @param experDevVo + * @param index + * @return String + * @author cwchen + * @date 2024/7/21 19:30 + */ + public String getVal(ExperDevVo experDevVo, int index) { + try { + String devData = experDevVo.getDevData(); + JSONArray jsonArray = JSONObject.parseArray(devData); + String data = (String) jsonArray.get(index); + return data; + } catch (Exception e) { + log.error(e.toString(), e); + return null; + } + } + + /** + * 设置试验设备数据是否合格 + * + * @param value + * @return String + * @author cwchen + * @date 2024/7/23 15:25 + */ + public String setHgData(String value) { + if (value.contains(Constants.ERROR_RESULT) || + value.contains(Constants.ERROR_RESULT2) + ) { + return "1"; + } else { + return "0"; + } + } + + /** + * 设置记录编号 + * @param number + * @return String + * @author cwchen + * @date 2024/7/28 16:00 + */ + public String setRecordNum(int number) { + String formattedNumber = String.format("%05d", number); + return formattedNumber; + } +} diff --git a/src/main/resources/mappers/app/ExperimentalAppMapper.xml b/src/main/resources/mappers/app/ExperimentalAppMapper.xml new file mode 100644 index 0000000..966a97e --- /dev/null +++ b/src/main/resources/mappers/app/ExperimentalAppMapper.xml @@ -0,0 +1,546 @@ + + + + + + INSERT INTO tb_exper + + sample_id, + dev_type_code, + dev_type_name, + dev_num, + dev_module, + sample_date, + exper_time, + next_exper_time, + submit_unit, + submit_location, + exper_dev, + exper_module, + exper_code, + check_time, + exper_stand, + exper_conclu, + remarsk, + audit_status, + create_time, + create_user, + update_time, + update_user, + del_flag, + status, + id + + + #{sampleId}, + #{devTypeCode}, + #{devTypeName}, + #{sampleQuantity}, + #{devModule}, + #{sampleDate}, + #{experTime}, + #{nextExperTime}, + #{customId}, + #{experLocal}, + #{experDev}, + #{experModule}, + #{experCode}, + #{checkTime}, + #{experStand}, + #{experConclu}, + #{remarsk}, + #{auditStatus}, + #{createTime}, + #{createUser}, + #{updateTime}, + #{updateUser}, + 0, + #{status}, + null + + + + + INSERT INTO tb_config_basis(id,exper_id,exper_basis_name) VALUES + + ( + null,#{experId},#{item.basisName} + ) + + + + + INSERT INTO tb_exper_items + + exper_id, + exper_type_code, + exper_type_name, + exper_num, + items_sort, + amount, + id + + + #{experId}, + #{params.experTypeCode}, + #{params.experTypeName}, + #{params.experNum}, + #{params.itemsSort}, + #{params.amount}, + null + + + + + INSERT INTO tb_exper_item + + items_id, + item_sort, + item_name, + id + + + #{experId}, + #{params.itemNum}, + #{params.itemName}, + null + + + + + INSERT INTO tb_exper_dev + + exper_id, + dev_code, + manufacturer, + manufacture_date, + dev_module, + dev_status, + dev_data, + amount, + remarks, + dev_id, + is_hg, + department_id, + exper_amount, + id + + + #{experId}, + #{params.devCode}, + #{params.manufacturer}, + #{params.manufactureDate}, + #{params.devModule}, + #{params.devStatus}, + #{params.devData}, + #{params.amount}, + #{params.remarks}, + #{params.devId}, + #{params.isHg}, + #{params.departmentId}, + #{params.experAmount}, + null + + + + + INSERT INTO tb_exper_dev_items + + dev_id, + items_id, + items_name, + val_sort, + id + + + #{devId}, + #{itemsId}, + #{itemsName}, + #{valSort}, + null + + + + + INSERT INTO tb_exper_dev_item (id,items_id,item_id,dev_id,item_name,item_val) VALUES + + ( + null,#{item.itemsId},#{item.itemId},#{item.devId},#{item.itemName},#{item.itemVal} + ) + + + + + INSERT INTO tb_exper_config_dev(id,dev_type_code,dev_type_name,exper_id,dev_name,dev_id) VALUES + + ( + null,#{item.devTypeCode},#{item.devTypeName},#{experId},#{item.devName},#{item.devId} + ) + + + + + UPDATE tb_exper SET dev_type_code = #{devTypeCode},dev_type_name = #{devTypeName},dev_num = #{sampleQuantity}, + dev_module = #{devModule},sample_date = #{sampleDate},exper_time = #{experTime},next_exper_time = #{nextExperTime}, + submit_unit = #{customId},submit_location = #{experLocal},exper_dev = #{experDev},exper_module = #{experModule}, + exper_code = #{experCode},check_time = #{checkTime},update_time = #{updateTime},update_user = #{updateUser},exper_stand = #{experStand}, + exper_conclu = #{experConclu},remarsk = #{remarsk} WHERE id = #{id} + + + + UPDATE tb_sample SET audti_status = 0,process_status = 1,remarks = null + WHERE id IN + + #{item} + + + + + UPDATE tb_exper SET status = 1,audit_status = 0,audit_user_name = null,audit_time = null,audit_remakr = null + WHERE sample_id IN + + #{item} + + + + + UPDATE tb_sample SET process_status = 0 WHERE id = #{id} + + + UPDATE tb_exper SET amount = #{allMoney} WHERE id = #{id} + + + + DELETE FROM tb_config_basis WHERE exper_id = #{id} + + + + DELETE FROM tb_exper_config_dev WHERE exper_id = #{id} + + + + DELETE FROM tb_exper_dev WHERE exper_id = #{id} + + + + DELETE FROM tb_exper_dev_items + WHERE dev_id IN + + #{item} + + + + + DELETE FROM tb_exper_dev_item + WHERE dev_id IN + + #{item} + + + + + UPDATE tb_exper SET del_flag = 1 WHERE id = #{id} + + + + DELETE FROM tb_exper_items WHERE exper_id = #{id} + + + + DELETE FROM tb_exper_item WHERE items_id IN + + #{item} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +