diff --git a/src/main/java/com/bonus/aqgqj/app/controller/CertificateAppController.java b/src/main/java/com/bonus/aqgqj/app/controller/CertificateAppController.java new file mode 100644 index 0000000..897b6ce --- /dev/null +++ b/src/main/java/com/bonus/aqgqj/app/controller/CertificateAppController.java @@ -0,0 +1,177 @@ +package com.bonus.aqgqj.app.controller; + +import com.bonus.aqgqj.annotation.DecryptAndVerify; +import com.bonus.aqgqj.annotation.LogAnnotation; +import com.bonus.aqgqj.app.entity.SamplesManageAppVo; +import com.bonus.aqgqj.app.service.CertificateAppService; +import com.bonus.aqgqj.app.service.SamplesManageAppService; +import com.bonus.aqgqj.system.vo.EncryptedReq; +import com.bonus.aqgqj.utils.ServerResponse; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import io.swagger.annotations.Api; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + + +/** + * 合格证管理--app + * @author hay + */ +@Api(tags = "合格证管理") +@RestController +@RequestMapping("/app/certificate/") +public class CertificateAppController { + + private static final Logger log = LoggerFactory.getLogger("adminLogger"); + + @Autowired + private CertificateAppService service; + + @PostMapping(value = "getList") + @DecryptAndVerify(decryptedClass = SamplesManageAppVo.class) + @LogAnnotation(operModul = "app合格证管理", operation = "查询列表", operDesc = "业务级事件",operType="查询") +// @PreAuthorize("@pms.hasPermission('sys:samples:query')" ) + public ServerResponse getList(EncryptedReq data) { + PageHelper.startPage(data.getData().getPage(), data.getData().getLimit()); + try { + List list = service.list(data.getData()); + PageInfo pageInfo = new PageInfo<>(list); + return ServerResponse.createSuccessPage(pageInfo,data.getData().getPage(),data.getData().getLimit()); + } catch (Exception e) { + log.error(e.toString(),e); + } + return ServerResponse.createErrorPage(data.getData().getPage(),data.getData().getLimit()); + } + + /** + * @description 删除收样列表数据 + */ + @PostMapping("delSamplesList") + @DecryptAndVerify(decryptedClass = SamplesManageAppVo.class) + @LogAnnotation(operModul = "收样管理", operation = "删除收样列表数据", operDesc = "业务级事件", operType = "删除") +// @PreAuthorize("@pms.hasPermission('sys:samples:add')") + public ServerResponse delSamplesList(EncryptedReq vo) { + try { + return service.delSamplesList(vo.getData()); + }catch (Exception e){ + log.error(e.toString(),e); + return ServerResponse.createErroe("操作失败"); + } + } + + /** + * @description 删除收样详情数据 + */ + @PostMapping("delSamplesDetails") + @DecryptAndVerify(decryptedClass = SamplesManageAppVo.class) + @LogAnnotation(operModul = "收样管理", operation = "删除收样详情数据", operDesc = "业务级事件", operType = "删除") +// @PreAuthorize("@pms.hasPermission('sys:samples:add')") + public ServerResponse delSamplesDetails(EncryptedReq vo) { + try { + return service.delSamplesDetails(vo.getData()); + }catch (Exception e){ + log.error(e.toString(),e); + return ServerResponse.createErroe("操作失败"); + } + } + + /** + * @description 修改收样信息 + */ + @PostMapping("updateSamplesList") + @DecryptAndVerify(decryptedClass = SamplesManageAppVo.class) + @LogAnnotation(operModul = "收样管理", operation = "修改收样信息", operDesc = "业务级事件", operType = "删除") +// @PreAuthorize("@pms.hasPermission('sys:samples:add')") + public ServerResponse updateSamplesList(EncryptedReq vo) { + try { + return service.updateSamplesList(vo.getData()); + }catch (Exception e){ + log.error(e.toString(),e); + return ServerResponse.createErroe("操作失败"); + } + } + + @PostMapping(value = "getDetailsList") + @DecryptAndVerify(decryptedClass = SamplesManageAppVo.class) + @LogAnnotation(operModul = "app合格证管理", operation = "详情", operDesc = "业务级事件",operType="查询") +// @PreAuthorize("@pms.hasPermission('sys:samples:query')" ) + public ServerResponse getDetailsList(EncryptedReq data) { + PageHelper.startPage(data.getData().getPage(), data.getData().getLimit()); + try { + List list = service.getDetailsList(data.getData()); + PageInfo pageInfo = new PageInfo<>(list); + return ServerResponse.createSuccessPage(pageInfo,data.getData().getPage(),data.getData().getLimit()); + } catch (Exception e) { + log.error(e.toString(),e); + } + return ServerResponse.createErrorPage(data.getData().getPage(),data.getData().getLimit()); + } + + @PostMapping(value = "getSampleLabelData") + @DecryptAndVerify(decryptedClass = SamplesManageAppVo.class) + @LogAnnotation(operModul = "app收样管理", operation = "收样标签", operDesc = "业务级事件",operType="查询") +// @PreAuthorize("@pms.hasPermission('sys:samples:query')" ) + public ServerResponse getSampleLabelData(EncryptedReq data) { + try { + SamplesManageAppVo list = service.getSampleLabelData(data.getData()); + return ServerResponse.createSuccess(list); + } catch (Exception e) { + log.error(e.toString(),e); + } + return ServerResponse.createErroe("操作失败"); + } + + /** + * @description 新增收样数据 + */ + @PostMapping("addSamples") + @DecryptAndVerify(decryptedClass = SamplesManageAppVo.class) + @LogAnnotation(operModul = "收样管理", operation = "新增收样数据", operDesc = "业务级事件", operType = "新增") +// @PreAuthorize("@pms.hasPermission('sys:samples:add')") + public ServerResponse addSamples(EncryptedReq vo) { + try { + return service.addSamples(vo.getData()); + }catch (Exception e){ + log.error(e.toString(),e); + return ServerResponse.createErroe(e.getMessage().toString()); + } + } + + /** + * @description 派工 + */ + @PostMapping("dispatchWork") + @DecryptAndVerify(decryptedClass = SamplesManageAppVo.class) + @LogAnnotation(operModul = "收样管理", operation = "派工", operDesc = "业务级事件", operType = "新增") +// @PreAuthorize("@pms.hasPermission('sys:samples:dispatch')") + public ServerResponse dispatchWork(EncryptedReq vo) { + try { + return service.dispatchWork(vo.getData()); + } catch (Exception e) { + log.error(e.toString(), e); + return ServerResponse.createErroe("操作失败"); + } + } + + @PostMapping(value = "getAuthority") + @DecryptAndVerify(decryptedClass = SamplesManageAppVo.class) + @LogAnnotation(operModul = "收样管理", operation = "查询是否具有派工/收样权限", operDesc = "业务级事件",operType="查询") +// @PreAuthorize("@pms.hasPermission('sys:samples:query')" ) + public ServerResponse getAuthority(EncryptedReq data) { + try { + Boolean res = service.getAuthority(data.getData()); + return ServerResponse.createSuccess(res); + }catch (Exception e){ + log.error(e.toString(),e); + } + return ServerResponse.createErroe("操作失败"); + } + +} diff --git a/src/main/java/com/bonus/aqgqj/app/controller/PrimaryDataAppController.java b/src/main/java/com/bonus/aqgqj/app/controller/PrimaryDataAppController.java index 66fd53c..7b8fee2 100644 --- a/src/main/java/com/bonus/aqgqj/app/controller/PrimaryDataAppController.java +++ b/src/main/java/com/bonus/aqgqj/app/controller/PrimaryDataAppController.java @@ -149,12 +149,6 @@ public class PrimaryDataAppController { sheet = handleNineRow(vo, sheet, commonStyle2, rowNum++, hbNum); sheet = handleTenRow(vo, sheet, commonStyle, rowNum++, hbNum); -// OutputStream outputStream = new FileOutputStream(uploadPath + "\\" + "原始记录" + ".xlsx"); -// wb.write(outputStream); -// outputStream.close(); -// byte[] excelBytes = Files.readAllBytes(Paths.get(uploadPath + "\\" + "原始记录" + ".xlsx")); -// String base64Excel = Base64.getEncoder().encodeToString(excelBytes); - // 将 Excel 文档写入字节数组 ByteArrayOutputStream baos = new ByteArrayOutputStream(); wb.write(baos); diff --git a/src/main/java/com/bonus/aqgqj/app/controller/SamplesManageAppController.java b/src/main/java/com/bonus/aqgqj/app/controller/SamplesManageAppController.java index afe0a6c..6fbf783 100644 --- a/src/main/java/com/bonus/aqgqj/app/controller/SamplesManageAppController.java +++ b/src/main/java/com/bonus/aqgqj/app/controller/SamplesManageAppController.java @@ -140,7 +140,7 @@ public class SamplesManageAppController { return samplesManageAppService.addSamples(vo.getData()); }catch (Exception e){ log.error(e.toString(),e); - return ServerResponse.createErroe("操作失败"); + return ServerResponse.createErroe(e.getMessage().toString()); } } diff --git a/src/main/java/com/bonus/aqgqj/app/controller/TestReportManageAppController.java b/src/main/java/com/bonus/aqgqj/app/controller/TestReportManageAppController.java index 69af094..3714ee5 100644 --- a/src/main/java/com/bonus/aqgqj/app/controller/TestReportManageAppController.java +++ b/src/main/java/com/bonus/aqgqj/app/controller/TestReportManageAppController.java @@ -11,12 +11,15 @@ import com.bonus.aqgqj.basis.entity.vo.TestVo; import com.bonus.aqgqj.system.vo.EncryptedReq; import com.bonus.aqgqj.utils.DateTimeHelper; import com.bonus.aqgqj.utils.ExcelStyleUtil; +import com.bonus.aqgqj.utils.FileUtil; import com.bonus.aqgqj.utils.ServerResponse; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import freemarker.template.Configuration; import freemarker.template.Template; import io.swagger.annotations.Api; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -36,10 +39,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net.URLEncoder; -import java.util.Base64; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** @@ -251,6 +251,33 @@ public class TestReportManageAppController { } } + /** + * 批量下载原始记录压缩文件 + * + * @param request + * @param response + * @param dto + * @return void + * @author cwchen + * @date 2024/7/28 17:30 + */ + @PostMapping(value = "downLoadExcelZip") + @DecryptAndVerify(decryptedClass = TestReportManageAppVo.class) + public void downLoadExcelZip(HttpServletRequest request, HttpServletResponse response, EncryptedReq dto) { + List fileNameList = new ArrayList(); + try { + service.downLoadExcelZip(response, dto.getData(),fileNameList); + } catch (Exception e) { + log.error("zip导出错误-异常信息", e); + } finally { + if (CollectionUtils.isNotEmpty(fileNameList)) { + for (String fileName : fileNameList) { + FileUtil.deleteFile(fileName); + } + } + } + } + /** diff --git a/src/main/java/com/bonus/aqgqj/app/dao/CertificateAppDao.java b/src/main/java/com/bonus/aqgqj/app/dao/CertificateAppDao.java new file mode 100644 index 0000000..c2ed5b9 --- /dev/null +++ b/src/main/java/com/bonus/aqgqj/app/dao/CertificateAppDao.java @@ -0,0 +1,128 @@ +package com.bonus.aqgqj.app.dao; + +import com.bonus.aqgqj.app.entity.SamplesManageAppVo; +import com.bonus.aqgqj.basis.entity.vo.ConfigItemsVo; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 收样管理 + * @author: hay + */ +@Mapper +public interface CertificateAppDao { + + /** + * 查询列表 + * @param bean + * @return + */ + List list(SamplesManageAppVo bean); + + /** + * 获取详情列表 + * @param data + * @return + */ + List getDetailsList(SamplesManageAppVo data); + + /** + * 新增收样数据 tb_samples + * @param SamplesManageAppVo + * @return + */ + int addSamples(SamplesManageAppVo SamplesManageAppVo); + + /** + * 新增设备数据 tb_samples_device + * @param dto + * @return + */ + int addSamplesDevice(SamplesManageAppVo dto); + + /** + * 设备类型编码 + * @param sampleToolsId + * @return + */ + String getDevTypeCodeById(Integer sampleToolsId); + + /** + * 获取设备编码 + * @param nowDate + * @return + */ + String selectCustomerCode(String nowDate); + + /** + * 修改班组 + * @param dto + * @return + */ + int updateTeamId(SamplesManageAppVo dto); + + /** + * 获取标签数据 + * @param data + * @return + */ + SamplesManageAppVo getSampleLabelData(SamplesManageAppVo data); + + /** + * 获取实验项 + * @param dto + * @return + */ + List getTestItemList(SamplesManageAppVo dto); + + /** + * 获取收样批次编号 + * @param nowDate + * @return + */ + String selectBatchCode(String nowDate); + + /** + * 根据批次编号获取id + * @param batchCode + * @return + */ + Integer getIdByBatchCode(String batchCode); + + /** + * 删除收样数据 tb_samples_device + * @param data + * @return + */ + int delSamplesDetails(SamplesManageAppVo data); + + /** + * 删除收样数据 tb_samples + * @param data + * @return + */ + int delSamplesList(SamplesManageAppVo data); + + /** + * 修改收样数据 tb_samples + * @param data + * @return + */ + int updateSamplesList(SamplesManageAppVo data); + + /** + * 删除收样数据 tb_samples_device + * 根据详情id + * @param data + * @return + */ + int delSamplesDetailsList(SamplesManageAppVo data); + + /** + * 根据设备编码查询设备数量 + * @param devCode + * @return + */ + int getCountByDevCode(String devCode,String sampleTools); +} diff --git a/src/main/java/com/bonus/aqgqj/app/dao/ExamineAppMapper.java b/src/main/java/com/bonus/aqgqj/app/dao/ExamineAppMapper.java index 98e269c..d346f11 100644 --- a/src/main/java/com/bonus/aqgqj/app/dao/ExamineAppMapper.java +++ b/src/main/java/com/bonus/aqgqj/app/dao/ExamineAppMapper.java @@ -90,7 +90,8 @@ public interface ExamineAppMapper { /** * 更新收样信息审核的状态 - * + * @param userId + * @param isEr * @param vo * @param audtiStatus * @param processStatus @@ -98,7 +99,7 @@ public interface ExamineAppMapper { * @author cwchen * @date 2024/7/25 9:41 */ - void updateSampleStatus(@Param("params") AuditHistoryVo vo, @Param("audtiStatus") Integer audtiStatus, @Param("processStatus") Integer processStatus,@Param("isEr")String isEr); + void updateSampleStatus(@Param("params") AuditHistoryVo vo, @Param("audtiStatus") Integer audtiStatus, @Param("processStatus") Integer processStatus,@Param("isEr")String isEr,@Param("userId")Integer userId); /** * 获取设备试验项/收样的是否二次审阅的值 diff --git a/src/main/java/com/bonus/aqgqj/app/dao/ExperimentalAppMapper.java b/src/main/java/com/bonus/aqgqj/app/dao/ExperimentalAppMapper.java index 36f883c..4591eb4 100644 --- a/src/main/java/com/bonus/aqgqj/app/dao/ExperimentalAppMapper.java +++ b/src/main/java/com/bonus/aqgqj/app/dao/ExperimentalAppMapper.java @@ -393,15 +393,25 @@ public interface ExperimentalAppMapper { */ int isNotEditData(List list); +// /** +// * 更新收样表中的状态为待审阅 +// * +// * @param id +// * @return void +// * @author cwchen +// * @date 2024/7/22 15:33 +// */ +// void updateSampleStatus(Long id); + /** * 更新收样表中的状态为待审阅 * - * @param id + * @param list * @return void * @author cwchen * @date 2024/7/22 15:33 */ - void updateSampleStatus(Long id); + void updateSampleStatus(List list); /** * 更新试验表中数据为待审阅 diff --git a/src/main/java/com/bonus/aqgqj/app/dao/QrCodeDao.java b/src/main/java/com/bonus/aqgqj/app/dao/QrCodeDao.java index 05c8368..04f471d 100644 --- a/src/main/java/com/bonus/aqgqj/app/dao/QrCodeDao.java +++ b/src/main/java/com/bonus/aqgqj/app/dao/QrCodeDao.java @@ -31,4 +31,10 @@ public interface QrCodeDao { */ List getTestItemList(SamplesManageAppVo dto); + /** + * 获取合格证数据 + * @param data + * @return + */ + SamplesManageAppVo getCertificateData(SamplesManageAppVo data); } diff --git a/src/main/java/com/bonus/aqgqj/app/dao/SamplesManageAppDao.java b/src/main/java/com/bonus/aqgqj/app/dao/SamplesManageAppDao.java index 28dee8e..747e14b 100644 --- a/src/main/java/com/bonus/aqgqj/app/dao/SamplesManageAppDao.java +++ b/src/main/java/com/bonus/aqgqj/app/dao/SamplesManageAppDao.java @@ -125,4 +125,11 @@ public interface SamplesManageAppDao { * @return */ int delSamplesDetailsList(SamplesManageAppVo data); + + /** + * 根据设备编码查询设备数量 + * @param devCode + * @return + */ + int getCountByDevCode(String devCode,String sampleTools); } diff --git a/src/main/java/com/bonus/aqgqj/app/entity/ExperimentalAppVo.java b/src/main/java/com/bonus/aqgqj/app/entity/ExperimentalAppVo.java index fb2fe52..63ef2b0 100644 --- a/src/main/java/com/bonus/aqgqj/app/entity/ExperimentalAppVo.java +++ b/src/main/java/com/bonus/aqgqj/app/entity/ExperimentalAppVo.java @@ -64,6 +64,27 @@ public class ExperimentalAppVo { private String audtiStatus; + + /** + * 状态 默认0 (实验完成)待提交 1 待审阅 2 待审核 3 待审批 4 审批通过 + */ + private Integer status; + + /** + * 审核状态 0 待审核 1审核通过 2 审阅不通过 3审核不同过 4审批未通过 + */ + private Integer auditStatus; + + /** + * 是否二次审阅 null:不是 1.是 + */ + private Integer isEr; + + /** + * 状态结果 待提交、待审阅、待重新审阅…… + */ + private String statusResult; + /** * 备注 */ @@ -80,11 +101,6 @@ public class ExperimentalAppVo { */ private String experTime; - /** - * 状态 - */ - private Integer status; - /** * 角色编码 */ diff --git a/src/main/java/com/bonus/aqgqj/app/entity/SamplesManageAppVo.java b/src/main/java/com/bonus/aqgqj/app/entity/SamplesManageAppVo.java index d277e0d..173efdc 100644 --- a/src/main/java/com/bonus/aqgqj/app/entity/SamplesManageAppVo.java +++ b/src/main/java/com/bonus/aqgqj/app/entity/SamplesManageAppVo.java @@ -19,6 +19,11 @@ public class SamplesManageAppVo extends PageEntity { private String ids; + /** + * 收样id + */ + private Integer sampleId; + /** * 名称 */ @@ -192,4 +197,24 @@ public class SamplesManageAppVo extends PageEntity { */ private List configItemsVos; + /** + * 送样数量 + */ + private Integer customNum; + + /** + * 生成时间 + */ + private String createTime; + + /** + * 开始时间 + */ + private String startTime; + + /** + * 结束时间 + */ + private String endTime; + } diff --git a/src/main/java/com/bonus/aqgqj/app/entity/TestReportManageAppVo.java b/src/main/java/com/bonus/aqgqj/app/entity/TestReportManageAppVo.java index 02a01c7..661f900 100644 --- a/src/main/java/com/bonus/aqgqj/app/entity/TestReportManageAppVo.java +++ b/src/main/java/com/bonus/aqgqj/app/entity/TestReportManageAppVo.java @@ -231,5 +231,4 @@ public class TestReportManageAppVo extends PageEntity { */ private String createTime; - } diff --git a/src/main/java/com/bonus/aqgqj/app/service/CertificateAppService.java b/src/main/java/com/bonus/aqgqj/app/service/CertificateAppService.java new file mode 100644 index 0000000..5dae9d5 --- /dev/null +++ b/src/main/java/com/bonus/aqgqj/app/service/CertificateAppService.java @@ -0,0 +1,75 @@ +package com.bonus.aqgqj.app.service; + +import com.bonus.aqgqj.app.entity.SamplesManageAppVo; +import com.bonus.aqgqj.utils.ServerResponse; + +import java.util.List; + +/** + * 收样管理 + * @author hay + */ +public interface CertificateAppService { + /** + * 查询列表 + * @param bean + * @return + */ + List list(SamplesManageAppVo bean); + + /** + * 详情列表 + * @param data + * @return + */ + List getDetailsList(SamplesManageAppVo data); + + /** + * 新增 + * @param data + * @return + */ + ServerResponse addSamples(SamplesManageAppVo data); + + /** + * 派工 + * @param data + * @return + */ + ServerResponse dispatchWork(SamplesManageAppVo data); + + /** + * 查询权限 + * @param data + * @return + */ + Boolean getAuthority(SamplesManageAppVo data); + + /** + * 收样标签 信息获取 + * @param data + * @return + */ + SamplesManageAppVo getSampleLabelData(SamplesManageAppVo data); + + /** + * 删除收样列表数据 + * @param data + * @return + */ + ServerResponse delSamplesList(SamplesManageAppVo data); + + /** + * 修改收样列表数据 + * @param data + * @return + */ + ServerResponse updateSamplesList(SamplesManageAppVo data); + + /** + * 删除收样详情数据 + * @param data + * @return + */ + ServerResponse delSamplesDetails(SamplesManageAppVo data); +} diff --git a/src/main/java/com/bonus/aqgqj/app/service/TestReportManageAppService.java b/src/main/java/com/bonus/aqgqj/app/service/TestReportManageAppService.java index e57e7ae..0bc433f 100644 --- a/src/main/java/com/bonus/aqgqj/app/service/TestReportManageAppService.java +++ b/src/main/java/com/bonus/aqgqj/app/service/TestReportManageAppService.java @@ -6,6 +6,7 @@ import org.springframework.core.io.FileSystemResource; import org.springframework.http.ResponseEntity; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.util.List; @@ -61,13 +62,6 @@ public interface TestReportManageAppService { */ TestReportManageAppVo downloadCertificateList(TestReportManageAppVo data); - /** - * 检测报告下载 - * @param data - * @return - */ - ServerResponse download(TestReportManageAppVo data); - /** * 检测报告下载 * @param request @@ -83,4 +77,12 @@ public interface TestReportManageAppService { * @return */ ServerResponse testReportExcelBase64(TestReportManageAppVo data); + + /** + * 检测报告下载 + * @param data + * @param response + * @return + */ + void downLoadExcelZip(HttpServletResponse response, TestReportManageAppVo data, List fileNameList); } diff --git a/src/main/java/com/bonus/aqgqj/app/service/impl/CertificateAppServiceImpl.java b/src/main/java/com/bonus/aqgqj/app/service/impl/CertificateAppServiceImpl.java new file mode 100644 index 0000000..d243779 --- /dev/null +++ b/src/main/java/com/bonus/aqgqj/app/service/impl/CertificateAppServiceImpl.java @@ -0,0 +1,305 @@ +package com.bonus.aqgqj.app.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.bonus.aqgqj.app.dao.CertificateAppDao; +import com.bonus.aqgqj.app.entity.SamplesManageAppVo; +import com.bonus.aqgqj.app.service.CertificateAppService; +import com.bonus.aqgqj.app.service.SamplesManageAppService; +import com.bonus.aqgqj.basis.entity.vo.ConfigItemsVo; +import com.bonus.aqgqj.utils.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; + +/** +* @description 收样管理 +* @author hay +* @date 2024/7/20 16:10 +*/ +@Slf4j +@Service +public class CertificateAppServiceImpl implements CertificateAppService { + + + @Resource + private CertificateAppDao dao; + + /** + * 查询列表 + * @param bean + * @return + */ + @Override + public List list(SamplesManageAppVo bean) { + return dao.list(bean); + } + + /** + * 查询详情列表 + * @param data + * @return + */ + @Override + public List getDetailsList(SamplesManageAppVo data) { + return dao.getDetailsList(data); + } + @Override + @Transactional(rollbackFor = Exception.class) + public ServerResponse addSamples(SamplesManageAppVo data) { + JSONArray jsonArray = JSONObject.parseArray(data.getParamsList()); + List SamplesManageAppVos = jsonArray.toJavaList(SamplesManageAppVo.class); + if (SamplesManageAppVos.size() > 0){ + //获取登录人id + Integer userId = Integer.parseInt(UserUtil.getLoginUser().getId().toString()); + //先查看收样批次编号是否为空 + String batchCode = SamplesManageAppVos.get(0).getBatchCode(); + if (StringHelper.isEmpty(batchCode)){ + //为空,则该批次首次上传数据,需要新增tb_sample表。并且需要生成批次编号。 + //生成编号 + String batchCode2 =batchCodeRule(); + SamplesManageAppVos.get(0).setBatchCode(batchCode2); + SamplesManageAppVos.get(0).setCreateBy(userId); + int re= dao.addSamples(SamplesManageAppVos.get(0)); + if (re>0){ + //添加tb_sample_device数据 + Boolean state = addSamplesDevice(SamplesManageAppVos); + if (state){ + return ServerResponse.createBySuccessMsg(batchCode2); + } + }else { + throw new RuntimeException("收样单位信息表添加失败"); + } + }else { + //不为空,则该批次已上传过数据,在该批次下,新增tb_sample_device表数据。 + //查询该编号的id + Integer sampleId = dao.getIdByBatchCode(batchCode); + if (sampleId!=null){ + //添加tb_sample_device数据 + SamplesManageAppVos.get(0).setId(sampleId); + SamplesManageAppVos.get(0).setCreateBy(userId); + Boolean state = addSamplesDevice(SamplesManageAppVos); + if (state){ + return ServerResponse.createBySuccessMsg(batchCode); + } + }else { + throw new RuntimeException("收样批次编号不存在"); + } + } + }else { + throw new RuntimeException("未获取到数据"); + } + return ServerResponse.createErroe("收样数据添加失败"); + } + + /** + * 添加tb_sample_device数据 + * @param data + */ + public Boolean addSamplesDevice(List data) { + for (SamplesManageAppVo dto : data){ + //查询设备编号是否重复 + if (StringHelper.isNotEmpty(dto.getDevCode())){ + if (dao.getCountByDevCode(dto.getDevCode(),dto.getSampleTools())>0){ + throw new RuntimeException(dto.getSampleTools() +"设备编号:"+ dto.getDevCode() +"已存在"); + } + } + + //查询设备类型编码 + if (dto.getSampleToolsId()!=null){ + String devTypeCode = dao.getDevTypeCodeById(dto.getSampleToolsId()); + dto.setDevTypeCode(devTypeCode); + } + //生成设备编码 + String customerCode = customerCodeRule(); + dto.setCustomerCode(customerCode); + dto.setId(data.get(0).getId()); + dto.setCreateBy(data.get(0).getCreateBy()); + int res= dao.addSamplesDevice(dto); + if (res<=0){ + throw new RuntimeException("收样设备信息表添加失败"); + } + } + return true; + } + + + + @Override + public Boolean getAuthority(SamplesManageAppVo data) { + if (StringHelper.isNotEmpty(data.getName())){ + if ("派工".equals(data.getName())){ + return SystemUtils.isComprehensiveTeamLeader(); + }else if ("收样".equals(data.getName())){ + return (SystemUtils.isComprehensiveTeam() || SystemUtils.isComprehensiveTeamLeader()); + } + } + return false; + } + + /** + * 收样标签 + */ + @Override + public SamplesManageAppVo getSampleLabelData(SamplesManageAppVo data) { + //查询详情数据 + SamplesManageAppVo dto = dao.getSampleLabelData(data); + if (dto!=null){ + //查询试验项目 + List itemList = dao.getTestItemList(data); + if (itemList.size()>0){ + dto.setConfigItemsVos(itemList); + } + } + return dto; + } + + /** + * 删除收样数据 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ServerResponse delSamplesList(SamplesManageAppVo data) { + //先判断id是否为空 + if (data.getId() != null){ + //获取登录人id + Integer userId = Integer.parseInt(UserUtil.getLoginUser().getId().toString()); + data.setUpdateBy(userId); + //先删除详情 + int res = dao.delSamplesDetails(data); + if (res>0){ + //再删除列表 + int res2 = dao.delSamplesList(data); + if (res2>0){ + return ServerResponse.createBySuccessMsg("删除成功"); + }else { + throw new RuntimeException("收样单位信息表删除失败"); + } + }else { + throw new RuntimeException("收样设备信息表删除失败"); + } + }else { + throw new RuntimeException("未获取到数据"); + } + } + + /** + * 修改收样单位等信息 + */ + @Override + public ServerResponse updateSamplesList(SamplesManageAppVo data) { + Integer userId = Integer.parseInt(UserUtil.getLoginUser().getId().toString()); + data.setUpdateBy(userId); + int res = dao.updateSamplesList(data); + if (res>0){ + return ServerResponse.createBySuccessMsg("修改成功"); + }else { + throw new RuntimeException("修改失败"); + } + } + + /** + * 删除收样设备信息 tb_sample_device + */ + @Override + public ServerResponse delSamplesDetails(SamplesManageAppVo data) { + //先判断id是否为空 + if (data.getId() != null) { + //获取登录人id + Integer userId = Integer.parseInt(UserUtil.getLoginUser().getId().toString()); + data.setUpdateBy(userId); + //删除详情 + int res = dao.delSamplesDetailsList(data); + if (res > 0) { + return ServerResponse.createBySuccessMsg("删除成功"); + } else { + throw new RuntimeException("收样设备信息表删除失败"); + } + } else { + throw new RuntimeException("未获取到数据"); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public ServerResponse dispatchWork(SamplesManageAppVo data) { + Integer userId = Integer.parseInt(UserUtil.getLoginUser().getId().toString()); + if (StringHelper.isNotEmpty(data.getIds())){ + //拆分用逗号分隔的数据 + String[] ids = data.getIds().split(","); + for (String id : ids){ + SamplesManageAppVo dto = new SamplesManageAppVo(); + dto.setId(Integer.parseInt(id)); + dto.setTeamId(data.getTeamId()); + dto.setUpdateBy(userId); + //更新班组数据 + int res = dao.updateTeamId(dto); + if (res<=0){ + throw new RuntimeException("派工失败"); + } + } + } + return ServerResponse.createBySuccessMsg("派工成功"); + } + + /** + * 收样批次编号--自动生成 + * 格式:PYYYYMMDD-NN + * P:表示批次编号的前缀。 + * YYYY:年份(4位数字) + * MM:月份(2位数字) + * DD:日期(2位数字) + * NN:当天的批次序号(2位数字,按当天批次顺序递增) + * 每天的批次编号从 01 开始,按批次顺序递增 + */ + private String batchCodeRule() { + String nowDate = DateTimeHelper.getNowYMD(); + //查询本日收样批次流水号 + String batchCode = dao.selectBatchCode(nowDate); + if (StringHelper.isNotEmpty(batchCode)) { + // 将字符串转换为整数 + int num = Integer.parseInt(batchCode); + // 执行加一操作 + num++; + // 将结果转换回字符串格式,并确保结果是四位数,不足四位则在前面补0 + batchCode = String.format("%02d", num); + } else { + batchCode = "01"; + } + String code = "P" + nowDate + "-" + batchCode; + return code; + } + + /** + * 设备编号--自动生成 + * 格式:SYYYYMMDD-XXX + * S:表示收样编号的前缀 + * YYYY:年份(4位数字) + * MM:月份(2位数字) + * DD:日期(2位数字) + * XXX:当天的收样序号(3位数字,按当天收样顺序递增) + * 每天的设备收样编号从 001 开始,按收样顺序递增 + */ + private String customerCodeRule() { + String nowDate = DateTimeHelper.getNowYMD(); + //查询本日收样流水号 + String customerCode = dao.selectCustomerCode(nowDate); + if (StringHelper.isNotEmpty(customerCode)) { + // 将字符串转换为整数 + int num = Integer.parseInt(customerCode); + // 执行加一操作 + num++; + // 将结果转换回字符串格式,并确保结果是四位数,不足四位则在前面补0 + customerCode = String.format("%03d", num); + } else { + customerCode = "001"; + } + String code = "S" + nowDate + "-" + customerCode; + return code; + } + + +} diff --git a/src/main/java/com/bonus/aqgqj/app/service/impl/ExamineAppServiceImpl.java b/src/main/java/com/bonus/aqgqj/app/service/impl/ExamineAppServiceImpl.java index 968c260..cd99fc1 100644 --- a/src/main/java/com/bonus/aqgqj/app/service/impl/ExamineAppServiceImpl.java +++ b/src/main/java/com/bonus/aqgqj/app/service/impl/ExamineAppServiceImpl.java @@ -15,6 +15,7 @@ import com.bonus.aqgqj.basis.entity.vo.ExperimentalVo; import com.bonus.aqgqj.basis.service.ExamineService; import com.bonus.aqgqj.utils.ServerResponse; import com.bonus.aqgqj.utils.SystemUtils; +import com.bonus.aqgqj.utils.UserUtil; import com.bonus.aqgqj.webResult.Constants; import com.bonus.aqgqj.webResult.HttpStatus; import lombok.extern.slf4j.Slf4j; @@ -52,17 +53,17 @@ public class ExamineAppServiceImpl implements ExamineAppService { List list = new ArrayList<>(); try { list = mapper.getList(dto); - if (list.size() > 0) { - //查询详情里需要审核的id - for (int i = 0; i < list.size(); i++) { - ExperimentalAppVo experimentalAppVo = list.get(i); - if ("待重新审阅".equals(experimentalAppVo.getAudtiStatus())) { - experimentalAppVo.setAudtiStatus("待审阅"); - } - List list1 = mapper.getDetailIdBySampleId(experimentalAppVo.getId(),experimentalAppVo.getAudtiStatus()); - list.get(i).setIds(list1.get(0).getIds()); - } - } +// if (list.size() > 0) { +// //查询详情里需要审核的id +// for (int i = 0; i < list.size(); i++) { +// ExperimentalAppVo experimentalAppVo = list.get(i); +// if ("待重新审阅".equals(experimentalAppVo.getAudtiStatus())) { +// experimentalAppVo.setAudtiStatus("待审阅"); +// } +// List list1 = mapper.getDetailIdBySampleId(experimentalAppVo.getId(),experimentalAppVo.getAudtiStatus()); +// list.get(i).setIds(list1.get(0).getIds()); +// } +// } } catch (Exception e) { log.error(e.toString(), e); } @@ -151,7 +152,9 @@ public class ExamineAppServiceImpl implements ExamineAppService { } // 审核状态、流程状态不为0时,修改收样信息审核状态 if(!Objects.equals(audtiStatus, Constants.ALL_EXPER_INDEX) || !Objects.equals(processStatus, Constants.ALL_EXPER_INDEX)){ - mapper.updateSampleStatus(vo, audtiStatus, processStatus,isEr); + //获取登录人id + Integer userId = Integer.parseInt(UserUtil.getLoginUser().getId().toString()); + mapper.updateSampleStatus(vo, audtiStatus, processStatus,isEr,userId); } } catch (Exception e) { log.error(e.toString(), e); 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 index 8bb5a13..6d3b2a0 100644 --- a/src/main/java/com/bonus/aqgqj/app/service/impl/ExperimentalAppServiceImpl.java +++ b/src/main/java/com/bonus/aqgqj/app/service/impl/ExperimentalAppServiceImpl.java @@ -348,42 +348,54 @@ public class ExperimentalAppServiceImpl implements ExperimentalAppService { } } - @Override - @Transactional(rollbackFor = Exception.class) - public ServerResponse commitCheckTestData(ParamsAppDto dto) { - try { - if (dto.getId() == null || 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()); - //先更新tb_exper表中数据为待审阅 - mapper.updateExperStatus(list); - //在查询tb_exper中是否全部为待审阅 - int res = mapper.isAllSubmit(dto.getId()); - if (res<=0){ - //如果全部为待审阅,更新收样表中的状态为待审阅 - mapper.updateSampleStatus(dto.getId()); - } -// // 判断是否提交空数据 -// if (dto.getIds() == null || dto.getIds().length == 0) { +// @Override +// @Transactional(rollbackFor = Exception.class) +// public ServerResponse commitCheckTestData(ParamsAppDto dto) { +// try { +// if (dto.getId() == null || 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); -// // 更新试验表中数据为待审阅 +// //先更新tb_exper表中数据为待审阅 // mapper.updateExperStatus(list); +// //在查询tb_exper中是否全部为待审阅 +// int res = mapper.isAllSubmit(dto.getId()); +// if (res<=0){ +// //如果全部为待审阅,更新收样表中的状态为待审阅 +// mapper.updateSampleStatus(dto.getId()); +// } +// } 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 commitCheckTestData(ParamsAppDto 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(); diff --git a/src/main/java/com/bonus/aqgqj/app/service/impl/QrCodeImpl.java b/src/main/java/com/bonus/aqgqj/app/service/impl/QrCodeImpl.java index 1eb1f77..cd8824a 100644 --- a/src/main/java/com/bonus/aqgqj/app/service/impl/QrCodeImpl.java +++ b/src/main/java/com/bonus/aqgqj/app/service/impl/QrCodeImpl.java @@ -44,6 +44,9 @@ public class QrCodeImpl implements QrCodeService { //收样标签 data.setCustomerCode(customerCode[1]); dto = getSampleLabelData(data); + }else if ("hgz".equals(customerCode[0])){ + data.setCustomerCode(customerCode[1]); + dto = getCertificateData(data); } }else { throw new RuntimeException("customerCode不能为空"); @@ -51,6 +54,13 @@ public class QrCodeImpl implements QrCodeService { return dto; } + /** + * 获取合格证数据 + */ + private SamplesManageAppVo getCertificateData(SamplesManageAppVo data) { + return dao.getCertificateData(data); + } + /** * 获取收样标签数据 */ diff --git a/src/main/java/com/bonus/aqgqj/app/service/impl/SamplesManageAppServiceImpl.java b/src/main/java/com/bonus/aqgqj/app/service/impl/SamplesManageAppServiceImpl.java index 0254769..d48d5dd 100644 --- a/src/main/java/com/bonus/aqgqj/app/service/impl/SamplesManageAppServiceImpl.java +++ b/src/main/java/com/bonus/aqgqj/app/service/impl/SamplesManageAppServiceImpl.java @@ -106,6 +106,13 @@ public class SamplesManageAppServiceImpl implements SamplesManageAppService { */ public Boolean addSamplesDevice(List data) { for (SamplesManageAppVo dto : data){ + //查询设备编号是否重复 + if (StringHelper.isNotEmpty(dto.getDevCode())){ + if (samplesManageAppDao.getCountByDevCode(dto.getDevCode(),dto.getSampleTools())>0){ + throw new RuntimeException(dto.getSampleTools() +"设备编号:"+ dto.getDevCode() +"已存在"); + } + } + //查询设备类型编码 if (dto.getSampleToolsId()!=null){ String devTypeCode = samplesManageAppDao.getDevTypeCodeById(dto.getSampleToolsId()); diff --git a/src/main/java/com/bonus/aqgqj/app/service/impl/TestReportManageAppServiceImpl.java b/src/main/java/com/bonus/aqgqj/app/service/impl/TestReportManageAppServiceImpl.java index d104cb6..b017561 100644 --- a/src/main/java/com/bonus/aqgqj/app/service/impl/TestReportManageAppServiceImpl.java +++ b/src/main/java/com/bonus/aqgqj/app/service/impl/TestReportManageAppServiceImpl.java @@ -2,7 +2,9 @@ package com.bonus.aqgqj.app.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.bonus.aqgqj.app.dao.TestReportManageAppDao; +import com.bonus.aqgqj.app.entity.SamplesManageAppVo; import com.bonus.aqgqj.app.entity.TestReportManageAppVo; import com.bonus.aqgqj.app.service.TestReportManageAppService; import com.bonus.aqgqj.basis.entity.vo.*; @@ -12,10 +14,12 @@ import com.bonus.aqgqj.utils.ListHelper; import com.bonus.aqgqj.utils.ServerResponse; import com.bonus.aqgqj.utils.StringHelper; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; @@ -24,10 +28,8 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; +import javax.servlet.http.HttpServletResponse; +import java.io.*; import java.util.ArrayList; import java.util.Base64; import java.util.List; @@ -44,6 +46,8 @@ import java.util.zip.ZipOutputStream; @Service public class TestReportManageAppServiceImpl implements TestReportManageAppService { + @Value("${file.windwos.upload_path}") + private String uploadPath; @Resource private TestReportManageAppDao testReportManageAppDao; @@ -168,35 +172,6 @@ public class TestReportManageAppServiceImpl implements TestReportManageAppServic return testReportManageAppDao.downloadCertificateList(data); } - @Override - public ServerResponse download(TestReportManageAppVo data) { - //根据选择的id获取详情数据 - TestReportManageAppVo bean = new TestReportManageAppVo(); - bean.setId(data.getId()); - List list = getDetailsList(bean); - //查询详情里所有数据的检测报告 - for (TestReportManageAppVo dto : list){ - //根据试验id、设备类型、是否合格、部门id来查询每个检测报告 - ServerResponse serverResponse = viewTestData(dto); - if (serverResponse.isSuccess()){ - File zipFile = new File("检测报告_"+DateTimeHelper.getNowDMS()+".zip"); - try (FileOutputStream fos = new FileOutputStream(zipFile); - ZipOutputStream zos = new ZipOutputStream(fos)) { - TestReportManageAppVo testVo = (TestReportManageAppVo) serverResponse.getData(); - //将数据传给检测报告生成的方法 - try { - generateReport(testVo,zos); - } catch (Exception e){ - e.printStackTrace(); - } - }catch (IOException e){ - e.printStackTrace(); - } - } - } - return null; - } - @Override public ResponseEntity downloadFile(HttpServletRequest request, File tempZipFile) throws IOException { String ids = request.getParameter("ids"); @@ -221,7 +196,7 @@ public class TestReportManageAppServiceImpl implements TestReportManageAppServic TestReportManageAppVo testVo = (TestReportManageAppVo) serverResponse.getData(); log.info("sj--->{}", testVo); //生成检测报告 - generateReport(testVo, zos); + generateReport(testVo, 2); } } @@ -245,7 +220,7 @@ public class TestReportManageAppServiceImpl implements TestReportManageAppServic TestReportManageAppVo testVo = (TestReportManageAppVo) serverResponse.getData(); //将数据传给检测报告生成的方法 try { - String base64Excel = generateReport(testVo,null); + String base64Excel = generateReport(testVo,2); // 返回 Base64 字符串 return ServerResponse.createSuccess(base64Excel); } catch (Exception e) { @@ -255,10 +230,39 @@ public class TestReportManageAppServiceImpl implements TestReportManageAppServic return ServerResponse.createErroe("查看失败"); } + @Override + public void downLoadExcelZip(HttpServletResponse response, TestReportManageAppVo data,List fileNameList) { + List fileList = new ArrayList(); + JSONArray jsonArray = JSONObject.parseArray(data.getParamsList()); + List list = jsonArray.toJavaList(TestReportManageAppVo.class); + if (list != null && list.size() > 0) { + try { + for (TestReportManageAppVo testReportManageAppVo : list) { + //根据试验id、设备类型、是否合格、部门id来查询每个检测报告 + ServerResponse serverResponse = viewTestData(testReportManageAppVo); + if (serverResponse.isSuccess()) { + TestReportManageAppVo testVo = (TestReportManageAppVo) serverResponse.getData(); + log.info("sj--->{}", testVo); + //生成检测报告 + String excelModelPath =generateReport(testVo, 1); + if (StringUtils.isNotBlank(excelModelPath)) { + fileList.add(new File(excelModelPath)); + fileNameList.add(excelModelPath); + } + } + } + downloadZip(response, fileList); + }catch (Exception e){ + log.error("zip导出错误-异常信息", e); + } + } + } + /** * 生成检测报告 + * type 1:生成zip压缩包,2:生成base64 */ - public String generateReport(TestReportManageAppVo bean,ZipOutputStream zos) throws IOException { + public String generateReport(TestReportManageAppVo bean,Integer type) throws IOException { //先计算出总共有多少列和动态生成的有多少列 //总列数 int totalNum = 0; @@ -565,20 +569,31 @@ public class TestReportManageAppServiceImpl implements TestReportManageAppServic applyBordersToMergedRegion(sheet, new CellRangeAddress(row.get(),row.get(),num112+2,totalNum-1), style); - if (zos!=null){ - // 保存到 ZIP 文件 - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - workbook.write(baos); - if (StringHelper.isNotEmpty(bean.getReportCode())){ - //将字符串中“ML/BG-”去除 - bean.setReportCode(bean.getReportCode().replace("ML/BG-","")); + if (type==1){ + String fileName = uploadPath + "检测报告_" + bean.getReportCode() + "_"+DateTimeHelper.getNowDMS()+".xlsx"; + File file = new File(fileName); + //生成文件夹 + if (!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); } - ZipEntry entry = new ZipEntry("检测报告_" + bean.getReportCode() + "_"+DateTimeHelper.getNowDMS()+".xlsx"); - zos.putNextEntry(entry); - zos.write(baos.toByteArray()); - zos.closeEntry(); - workbook.close(); - return null; + FileOutputStream fos = new FileOutputStream(file); + workbook.write(fos); + return fileName; + + +// // 保存到 ZIP 文件 +// ByteArrayOutputStream baos = new ByteArrayOutputStream(); +// workbook.write(baos); +// if (StringHelper.isNotEmpty(bean.getReportCode())){ +// //将字符串中“ML/BG-”去除 +// bean.setReportCode(bean.getReportCode().replace("ML/BG-","")); +// } +// ZipEntry entry = new ZipEntry("检测报告_" + bean.getReportCode() + "_"+DateTimeHelper.getNowDMS()+".xlsx"); +// zos.putNextEntry(entry); +// zos.write(baos.toByteArray()); +// zos.closeEntry(); +// workbook.close(); +// return null; }else { // 将 Excel 文档写入字节数组 ByteArrayOutputStream baos = new ByteArrayOutputStream(); @@ -679,4 +694,25 @@ public class TestReportManageAppServiceImpl implements TestReportManageAppServic } + public void downloadZip(HttpServletResponse response, List filesToZip) throws IOException { + // 设置响应头信息,‌指定下载的文件名为"files.zip" + response.setContentType("application/zip"); + response.setHeader("Content-Disposition", "attachment; filename=files.zip"); + try (ZipOutputStream zos = new ZipOutputStream(response.getOutputStream())) { + for (File file : filesToZip) { + try (FileInputStream fis = new FileInputStream(file)) { + ZipEntry zipEntry = new ZipEntry(file.getName()); + zos.putNextEntry(zipEntry); + byte[] buffer = new byte[1024]; + int len; + while ((len = fis.read(buffer)) > 0) { + zos.write(buffer, 0, len); + } + } + } + } catch (IOException e) { + log.error("文件压缩异常"); + } + } + } diff --git a/src/main/java/com/bonus/aqgqj/basis/dao/SamplesManageDao.java b/src/main/java/com/bonus/aqgqj/basis/dao/SamplesManageDao.java index d543e56..fe9a624 100644 --- a/src/main/java/com/bonus/aqgqj/basis/dao/SamplesManageDao.java +++ b/src/main/java/com/bonus/aqgqj/basis/dao/SamplesManageDao.java @@ -93,4 +93,11 @@ public interface SamplesManageDao { * @return */ List getDeptSelectedById(SamplesManageDto data); + + /** + * 获取收样批次编号 + * @param nowDate + * @return + */ + String selectBatchCode(String nowDate); } diff --git a/src/main/java/com/bonus/aqgqj/basis/entity/dto/SamplesManageDto.java b/src/main/java/com/bonus/aqgqj/basis/entity/dto/SamplesManageDto.java index 4369ca1..07e2bed 100644 --- a/src/main/java/com/bonus/aqgqj/basis/entity/dto/SamplesManageDto.java +++ b/src/main/java/com/bonus/aqgqj/basis/entity/dto/SamplesManageDto.java @@ -61,6 +61,11 @@ public class SamplesManageDto extends PageEntity { */ private String sampleTools; + /** + * 批次编号 + */ + private String batchCode; + /** * 收样人 */ diff --git a/src/main/java/com/bonus/aqgqj/basis/service/impl/SamplesManageServiceImpl.java b/src/main/java/com/bonus/aqgqj/basis/service/impl/SamplesManageServiceImpl.java index c8b4983..c62dce2 100644 --- a/src/main/java/com/bonus/aqgqj/basis/service/impl/SamplesManageServiceImpl.java +++ b/src/main/java/com/bonus/aqgqj/basis/service/impl/SamplesManageServiceImpl.java @@ -74,7 +74,10 @@ public class SamplesManageServiceImpl implements SamplesManageService { if (samplesManageDtos.size() > 0){ //先增加基础数据表,并返回Id Integer userId = Integer.parseInt(UserUtil.getLoginUser().getId().toString()); + //生成编号 + String batchCode2 =batchCodeRule(); samplesManageDtos.get(0).setCreateBy(userId); + samplesManageDtos.get(0).setBatchCode(batchCode2); int re= samplesManageDao.addSamples(samplesManageDtos.get(0)); if (re>0){ //添加详情数据 @@ -155,6 +158,34 @@ public class SamplesManageServiceImpl implements SamplesManageService { return ServerResponse.createBySuccessMsg("派工成功"); } + /** + * 收样批次编号--自动生成 + * 格式:PYYYYMMDD-NN + * P:表示批次编号的前缀。 + * YYYY:年份(4位数字) + * MM:月份(2位数字) + * DD:日期(2位数字) + * NN:当天的批次序号(2位数字,按当天批次顺序递增) + * 每天的批次编号从 01 开始,按批次顺序递增 + */ + private String batchCodeRule() { + String nowDate = DateTimeHelper.getNowYMD(); + //查询本日收样批次流水号 + String batchCode = samplesManageDao.selectBatchCode(nowDate); + if (StringHelper.isNotEmpty(batchCode)) { + // 将字符串转换为整数 + int num = Integer.parseInt(batchCode); + // 执行加一操作 + num++; + // 将结果转换回字符串格式,并确保结果是四位数,不足四位则在前面补0 + batchCode = String.format("%02d", num); + } else { + batchCode = "01"; + } + String code = "P" + nowDate + "-" + batchCode; + return code; + } + /** * 设备编号--自动生成 * 格式:SYYYYMMDD-XXX diff --git a/src/main/java/com/bonus/aqgqj/system/controller/UserController.java b/src/main/java/com/bonus/aqgqj/system/controller/UserController.java index f7eddd2..fdb4f0d 100644 --- a/src/main/java/com/bonus/aqgqj/system/controller/UserController.java +++ b/src/main/java/com/bonus/aqgqj/system/controller/UserController.java @@ -189,6 +189,19 @@ public class UserController { return ServerResponse.createErroe("获取登录用户失败"); } + @PostMapping(value = "getUserData") + @LogAnnotation(operModul = "系统管理-用户管理", operation = "当前登录用户信息", operDesc = "业务级事件",operType="查询") + public ServerResponse getUserData() { + try { + String loginName = UserUtil.getLoginUser().getLoginName(); + SysUser u = userService.getUser(loginName); + return ServerResponse.createSuccess(u); + }catch (Exception e){ + log.error(e.toString(),e); + } + return ServerResponse.createErroe("获取用户信息失败"); + } + @PostMapping(value = "getById") @DecryptAndVerify(decryptedClass = UserDto.class) @LogAnnotation(operModul = "系统管理-用户管理", operation = "查询用户信息", operDesc = "系统级事件",operType="查询") diff --git a/src/main/resources/mappers/app/CertificateAppMapper.xml b/src/main/resources/mappers/app/CertificateAppMapper.xml new file mode 100644 index 0000000..e69051f --- /dev/null +++ b/src/main/resources/mappers/app/CertificateAppMapper.xml @@ -0,0 +1,239 @@ + + + + INSERT INTO tb_sample(custom_id, + custom_name, + sample_user, + sample_time, + create_time, + create_user, + sample_date, + batch_code) + VALUES (#{customId}, + #{customName}, + #{sampleUser}, + #{sampleTime}, + NOW(), + #{createBy}, + #{sampleTime}, + #{batchCode}) + + + INSERT INTO tb_sample_device(sample_id, + dev_type_name, + dev_type_code, + dev_module, + dev_code, + customer_code, + department_id, + sample_time, + create_time, + create_user) + VALUES (#{id}, + #{sampleTools}, + #{devTypeCode}, + #{devModule}, + #{devCode}, + #{customerCode}, + #{departmentId}, + #{sampleTime}, + NOW(), + #{createBy}) + + + UPDATE tb_sample + SET team_id = #{teamId}, + dispatch_time=NOW(), + dispatch_user= #{updateBy}, + update_time=NOW(), + update_user=#{updateBy} + WHERE id = #{id} + + + UPDATE tb_sample_device + SET del_falg = '1', + update_time = NOW(), + update_user = #{updateBy} + WHERE sample_id = #{id} + + + UPDATE tb_sample + SET del_flag = '1', + update_time = NOW(), + update_user = #{updateBy} + WHERE id = #{id} + + + UPDATE tb_sample + SET custom_id = #{customId}, + custom_name = #{customName}, + sample_user = #{sampleUser}, + sample_time = #{sampleTime}, + update_time = NOW(), + update_user = #{updateBy} + WHERE id = #{id} + + + UPDATE tb_sample_device + SET del_falg = '1', + update_time = NOW(), + update_user = #{updateBy} + WHERE id = #{id} + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mappers/app/ExamineAppMapper.xml b/src/main/resources/mappers/app/ExamineAppMapper.xml index 9f8acd1..6225127 100644 --- a/src/main/resources/mappers/app/ExamineAppMapper.xml +++ b/src/main/resources/mappers/app/ExamineAppMapper.xml @@ -14,7 +14,7 @@ - UPDATE tb_sample SET audti_status = #{audtiStatus},process_status = #{processStatus},is_er = #{isEr},remarks = #{params.auditRemark} WHERE id = #{params.sampleId} + UPDATE tb_sample SET audti_status = #{audtiStatus},process_status = #{processStatus},is_er = #{isEr},remarks = #{params.auditRemark},update_user=#{userId},update_time=NOW() WHERE id = #{params.sampleId} @@ -145,18 +145,43 @@ WHERE exper_id = #{experId} + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mappers/app/SamplesManageAppMapper.xml b/src/main/resources/mappers/app/SamplesManageAppMapper.xml index e8a0b68..0710b4c 100644 --- a/src/main/resources/mappers/app/SamplesManageAppMapper.xml +++ b/src/main/resources/mappers/app/SamplesManageAppMapper.xml @@ -133,11 +133,13 @@ tc.custom_name as sampleDepartment, tsd.dev_code as devCode, tsd.customer_code as customerCode, + tt.team_name as teamName, tsd.is_print as isPrint from tb_sample_device tsd LEFT JOIN tb_sample ts on tsd.sample_id=ts.id LEFT JOIN tb_custom tc on tsd.department_id=tc.id and tc.del_flag=0 + LEFT JOIN tb_team tt on tt.id=ts.team_id and tt.del_flag=0 where tsd.del_falg = 0 and tsd.sample_id = #{id} @@ -215,4 +217,11 @@ WHERE batch_code = #{batchCode} and del_flag = 0 + \ No newline at end of file diff --git a/src/main/resources/mappers/basis/SamplesManageMapper.xml b/src/main/resources/mappers/basis/SamplesManageMapper.xml index 675caf2..ae59522 100644 --- a/src/main/resources/mappers/basis/SamplesManageMapper.xml +++ b/src/main/resources/mappers/basis/SamplesManageMapper.xml @@ -8,14 +8,16 @@ sample_time, create_time, create_user, - sample_date) + sample_date, + batch_code) VALUES (#{customId}, #{customName}, #{sampleUser}, #{sampleTime}, NOW(), #{createBy}, - #{sampleTime}) + #{sampleTime}, + #{batchCode}) INSERT INTO tb_sample_device(sample_id, @@ -169,4 +171,16 @@ and custom_status = 0 and dept_id = 1 + \ No newline at end of file diff --git a/src/main/resources/mappers/system/UserMapper.xml b/src/main/resources/mappers/system/UserMapper.xml index 8d5c307..44c76f4 100644 --- a/src/main/resources/mappers/system/UserMapper.xml +++ b/src/main/resources/mappers/system/UserMapper.xml @@ -66,7 +66,7 @@