From e18a5b4536d16c1084da324ef6d7d8f238e69f98 Mon Sep 17 00:00:00 2001 From: HanLong <404402223@qq.com> Date: Tue, 10 Mar 2026 09:39:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:[=E8=AF=95=E9=AA=8C=E7=AE=A1=E7=90=86][?= =?UTF-8?q?=E7=BB=86=E8=83=9E=E3=80=81=E7=BB=86=E8=8F=8C=E7=94=9F=E6=88=90?= =?UTF-8?q?]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/hxhq/business/domain/BacteriaJcgj.java | 31 ++++ .../java/com/hxhq/business/domain/CellJcgj.java | 31 ++++ .../com/hxhq/business/mapper/BacteriaMapper.java | 7 + .../java/com/hxhq/business/mapper/CellMapper.java | 6 + .../business/service/IBacteriaJcgjService.java | 24 ++- .../hxhq/business/service/ICellJcgjService.java | 26 +++- .../business/service/IStudyBacteriaService.java | 9 ++ .../hxhq/business/service/IStudyCellService.java | 8 + .../service/impl/BacteriaJcgjServiceImpl.java | 42 ++++- .../business/service/impl/BacteriaServiceImpl.java | 144 +++++++++++++++++- .../business/service/impl/CellJcgjServiceImpl.java | 40 ++++- .../business/service/impl/CellServiceImpl.java | 169 ++++++++++++++++++--- .../service/impl/StudyBacteriaServiceImpl.java | 37 ++++- .../service/impl/StudyCellServiceImpl.java | 37 ++++- .../resources/mapper/business/BacteriaMapper.xml | 6 + .../main/resources/mapper/business/CellMapper.xml | 6 + 16 files changed, 580 insertions(+), 43 deletions(-) diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/domain/BacteriaJcgj.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/domain/BacteriaJcgj.java index 662660b..0319eb1 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/domain/BacteriaJcgj.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/domain/BacteriaJcgj.java @@ -24,18 +24,26 @@ public class BacteriaJcgj extends MpBaseEntity /** 稽查名称 */ private String jcmc; + private String jcmcEn; + + /** 稽查名称颜色:1:蓝色;3:红色;5:绿色;7:橙色 */ private Integer jcmcys; /** 稽查内容 */ private String jcnr; + private String jcnrEn; + + /** 签名人id */ private Long qmrId; /** 签名人名称 */ private String qmrMc; + private String qmrMcEn; + public void setBacteriaId(Long bacteriaId) { @@ -107,4 +115,27 @@ public class BacteriaJcgj extends MpBaseEntity return qmrMc; } + public String getJcmcEn() { + return jcmcEn; + } + + public void setJcmcEn(String jcmcEn) { + this.jcmcEn = jcmcEn; + } + + public String getJcnrEn() { + return jcnrEn; + } + + public void setJcnrEn(String jcnrEn) { + this.jcnrEn = jcnrEn; + } + + public String getQmrMcEn() { + return qmrMcEn; + } + + public void setQmrMcEn(String qmrMcEn) { + this.qmrMcEn = qmrMcEn; + } } diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/domain/CellJcgj.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/domain/CellJcgj.java index 70a398e..01fdc77 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/domain/CellJcgj.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/domain/CellJcgj.java @@ -24,18 +24,26 @@ public class CellJcgj extends MpBaseEntity /** 稽查名称 */ private String jcmc; + private String jcmcEn; + + /** 稽查名称颜色:1:蓝色;3:红色;5:绿色;7:橙色 */ private Integer jcmcys; /** 稽查内容 */ private String jcnr; + private String jcnrEn; + + /** 签名人id */ private Long qmrId; /** 签名人名称 */ private String qmrMc; + private String qmrMcEn; + public void setCellId(Long cellId) { @@ -107,4 +115,27 @@ public class CellJcgj extends MpBaseEntity return qmrMc; } + public String getJcmcEn() { + return jcmcEn; + } + + public void setJcmcEn(String jcmcEn) { + this.jcmcEn = jcmcEn; + } + + public String getJcnrEn() { + return jcnrEn; + } + + public void setJcnrEn(String jcnrEn) { + this.jcnrEn = jcnrEn; + } + + public String getQmrMcEn() { + return qmrMcEn; + } + + public void setQmrMcEn(String qmrMcEn) { + this.qmrMcEn = qmrMcEn; + } } diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/mapper/BacteriaMapper.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/mapper/BacteriaMapper.java index bc3e53c..972bab5 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/mapper/BacteriaMapper.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/mapper/BacteriaMapper.java @@ -24,4 +24,11 @@ public interface BacteriaMapper extends BaseMapper * @return */ List queryStudyList(@Param("ew") Wrapper queryWrapper); + + /** + * 批量修改库存 + * @param idList id + * @param kc 库存量 + */ + void updateKcBatch(@Param("idList") List idList, @Param("kc") String kc); } diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/mapper/CellMapper.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/mapper/CellMapper.java index 03151a4..0103166 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/mapper/CellMapper.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/mapper/CellMapper.java @@ -25,4 +25,10 @@ public interface CellMapper extends BaseMapper */ List queryStudyList(@Param("ew") Wrapper queryWrapper); + /** + * 批量修改库存 + * @param idList id + * @param kc 库存量 + */ + void updateKcBatch(@Param("idList") List idList, @Param("kc") String kc); } diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/IBacteriaJcgjService.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/IBacteriaJcgjService.java index 225b70e..8a5c29e 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/IBacteriaJcgjService.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/IBacteriaJcgjService.java @@ -1,8 +1,12 @@ package com.hxhq.business.service; import java.util.List; + +import com.hxhq.business.domain.Bacteria; import com.hxhq.business.domain.BacteriaJcgj; import com.baomidou.mybatisplus.extension.service.IService; +import com.hxhq.business.domain.Cell; +import com.hxhq.system.api.domain.SysUser; /** * 细菌-稽查轨迹Service接口 @@ -22,13 +26,25 @@ public interface IBacteriaJcgjService extends IService /** * 新增稽查轨迹 - * @param resourceId 细菌id + * @param bacteria 细菌 * @param jcgjlx 稽查轨迹类型:1:流程;3:编辑 * @param jcmc 稽查名称 * @param jcmcys 稽查名称颜色:1:蓝色;3:红色;5:绿色;7:橙色 * @param jcnr 稽查内容 - * @param jcrId 稽查人id - * @param jcrMc 稽查人名称 */ - public void saveJcgj(Long resourceId, Integer jcgjlx, String jcmc, Integer jcmcys, String jcnr,Long jcrId,String jcrMc); + public void saveJcgj(Bacteria bacteria, Integer jcgjlx, String jcmc, String jcmcEn, Integer jcmcys, String jcnr, String jcnrEn, SysUser qmr); + + /** + * 生成稽查轨迹 + * @param bacteriaId 细菌id + * @param jcgjlx 稽查轨迹类型:1:流程;3:编辑 + * @param jcmc 稽查名称 + * @param jcmcEn 稽查名称-英文 + * @param jcmcys 稽查名称颜色:1:蓝色;3:红色;5:绿色;7:橙色 + * @param jcnr 稽查内容 + * @param jcnrEn 稽查内容-英文 + * @param qmr 签名人信息 + * @return + */ + BacteriaJcgj genJcgj(Long bacteriaId, Integer jcgjlx, String jcmc, String jcmcEn, Integer jcmcys, String jcnr, String jcnrEn, SysUser qmr); } diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/ICellJcgjService.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/ICellJcgjService.java index c578e7b..442c1e1 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/ICellJcgjService.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/ICellJcgjService.java @@ -1,8 +1,11 @@ package com.hxhq.business.service; import java.util.List; + +import com.hxhq.business.domain.Cell; import com.hxhq.business.domain.CellJcgj; import com.baomidou.mybatisplus.extension.service.IService; +import com.hxhq.system.api.domain.SysUser; /** * 细胞-稽查轨迹Service接口 @@ -22,13 +25,28 @@ public interface ICellJcgjService extends IService /** * 新增稽查轨迹 - * @param resourceId 细胞id + * @param cell 细胞id * @param jcgjlx 稽查轨迹类型:1:流程;3:编辑 * @param jcmc 稽查名称 + * @param jcmcEn 稽查名称 * @param jcmcys 稽查名称颜色:1:蓝色;3:红色;5:绿色;7:橙色 * @param jcnr 稽查内容 - * @param jcrId 稽查人id - * @param jcrMc 稽查人名称 + * @param jcnrEn 稽查内容 */ - public void saveJcgj(Long resourceId, Integer jcgjlx, String jcmc, Integer jcmcys, String jcnr,Long jcrId,String jcrMc); + public void saveJcgj(Cell cell, Integer jcgjlx, String jcmc, String jcmcEn, Integer jcmcys, String jcnr, String jcnrEn, SysUser qmr); + + /** + * 生成稽查轨迹 + * @param cellId 细胞id + * @param jcgjlx 稽查轨迹类型:1:流程;3:编辑 + * @param jcmc 稽查名称 + * @param jcmcEn 稽查名称-英文 + * @param jcmcys 稽查名称颜色:1:蓝色;3:红色;5:绿色;7:橙色 + * @param jcnr 稽查内容 + * @param jcnrEn 稽查内容-英文 + * @param qmr 签名人信息 + * @return + */ + CellJcgj genJcgj(Long cellId, Integer jcgjlx, String jcmc, String jcmcEn, Integer jcmcys, String jcnr, String jcnrEn, SysUser qmr); + } diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/IStudyBacteriaService.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/IStudyBacteriaService.java index 3b9c049..6f9a596 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/IStudyBacteriaService.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/IStudyBacteriaService.java @@ -1,6 +1,8 @@ package com.hxhq.business.service; import java.util.List; + +import com.hxhq.business.domain.Bacteria; import com.hxhq.business.domain.StudyBacteria; import com.baomidou.mybatisplus.extension.service.IService; @@ -20,4 +22,11 @@ public interface IStudyBacteriaService extends IService */ public List queryList(StudyBacteria studyBacteria); + /** + * 批量保存 + * @param studyId + * @param bacteriaList + */ + void saveBatch(Long studyId, List bacteriaList); + } diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/IStudyCellService.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/IStudyCellService.java index 41a8cfb..a56ac2d 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/IStudyCellService.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/IStudyCellService.java @@ -1,6 +1,8 @@ package com.hxhq.business.service; import java.util.List; + +import com.hxhq.business.domain.Cell; import com.hxhq.business.domain.StudyCell; import com.baomidou.mybatisplus.extension.service.IService; @@ -20,4 +22,10 @@ public interface IStudyCellService extends IService */ public List queryList(StudyCell studyCell); + /** + * 批量保存 + * @param studyId + * @param cellList + */ + void saveBatch(Long studyId, List cellList); } diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/BacteriaJcgjServiceImpl.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/BacteriaJcgjServiceImpl.java index e0862b0..e5a7a2a 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/BacteriaJcgjServiceImpl.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/BacteriaJcgjServiceImpl.java @@ -1,10 +1,16 @@ package com.hxhq.business.service.impl; +import java.util.Date; import java.util.List; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.hxhq.business.domain.Bacteria; +import com.hxhq.business.domain.CellJcgj; import com.hxhq.business.domain.GspJcgj; +import com.hxhq.business.service.ISystemLogService; import com.hxhq.common.core.utils.DateUtils; +import com.hxhq.system.api.domain.SysUser; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.hxhq.business.mapper.BacteriaJcgjMapper; import com.hxhq.business.domain.BacteriaJcgj; @@ -20,6 +26,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @Service public class BacteriaJcgjServiceImpl extends ServiceImpl implements IBacteriaJcgjService { + + @Autowired + private ISystemLogService systemLogService; + /** * 查询细菌-稽查轨迹列表 * @@ -34,16 +44,40 @@ public class BacteriaJcgjServiceImpl extends ServiceImpl i @Autowired private IBacteriaJcgjService bacteriaJcgjService; + @Autowired + private IStudyBacteriaService studyBacteriaService; + @Override public List queryStudyList(StudyCellSearchForm form) { QueryWrapper queryWrapper = Wrappers.query(); @@ -90,12 +101,131 @@ public class BacteriaServiceImpl extends ServiceImpl i this.updateById(bacteria); - bacteriaJcgjService.saveJcgj(bacteria.getId(), JcgjlxEnum.lc.getValue(), "处置", JcmcysEnum.blue.getValue(), null, qmr.getUserId(), qmr.getNickName()); + LinkedHashMap jcnrMap = new LinkedHashMap<>(); + jcnrMap.put("处置方式", form.getCzfs()); + jcnrMap.put("处置量", bacteria.getTj() + bacteria.getTjdw()); + + LinkedHashMap jcnrEnMap = new LinkedHashMap<>(); + jcnrEnMap.put("Dispose Method", form.getCzfs()); + jcnrEnMap.put("Amount", bacteria.getTj() + bacteria.getTjdw()); + + bacteriaJcgjService.saveJcgj(bacteria, JcgjlxEnum.lc.getValue(), "处置", "Dispose", + JcmcysEnum.blue.getValue(), JctUtil.formatStr(jcnrMap), JctUtil.formatStr(jcnrEnMap), qmr); } @Override @Transactional(rollbackFor = Exception.class) public void genResource(StudyFormFill studyFormFill, Template template) { - //todo 需要判断当前模板的产物是细菌才处理生成的 + Boolean mark = template.getProduct().equals(StudyFormFillResourceTypeEnum.Bacteria.getValue()) ? true : false; + SysUser qmr = sysUserService.selectUserById(SecurityUtils.getUserId()); + + String empty = "[]"; + List bacteriaList = new ArrayList<>(); + Map bacteriaMap = new HashMap<>(16); + + LinkedList jcgjList = new LinkedList<>(); + + String resource = studyFormFill.getResource(); + if (StringUtils.isNotEmpty(resource) && !StringUtils.equals(empty, resource)) { + List studyFormFillResourceList = JSONUtil.toList(resource, StudyFormFillResource.class); + List tmp = studyFormFillResourceList.stream().filter(p -> (p.getType() == null && mark) || (p.getType() != null && StudyFormFillResourceTypeEnum.Bacteria.getValue() == p.getType())).collect(Collectors.toList()); + if (tmp.size() > 0) { + List bhList = tmp.stream().map(StudyFormFillResource::getBh).collect(Collectors.toList()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(Bacteria::getBh, bhList); + bacteriaList = this.list(queryWrapper); + for (Bacteria bacteria : bacteriaList) { + bacteriaMap.put(bacteria.getBh(), bacteria); + } + for (StudyFormFillResource studyFormFillResource : studyFormFillResourceList) { + Bacteria bacteria = bacteriaMap.get(studyFormFillResource.getBh()); + if (mark) { + if (studyFormFillResource.getType() == null) { + if (studyFormFill.getSftb().equals(NormalEnum.no.getValue())) { + Boolean isAdd = false; + if (bacteria == null) { + bacteria = new Bacteria(); + isAdd = true; + } + bacteria.setStudyId(studyFormFill.getStudyId()); + bacteria.setStudyFormId(studyFormFill.getId()); + bacteria.setMc(studyFormFillResource.getMc()); + bacteria.setBh(studyFormFillResource.getBh()); + bacteria.setTj(studyFormFillResource.getKc()); + bacteria.setTjdw(studyFormFillResource.getKcdw()); + bacteria.setLy(studyFormFillResource.getLy()); + bacteria.setSxr(DateUtils.parseDate(studyFormFillResource.getSxrq())); + this.saveOrUpdate(bacteria); + if (isAdd) { + bacteriaList.add(bacteria); + } + bacteriaMap.put(bacteria.getBh(), bacteria); + jcgjList.add(bacteriaJcgjService.genJcgj(bacteria.getId(), JcgjlxEnum.lc.getValue(), "配制完成", "Formulation Completed", JcmcysEnum.green.getValue(), null, null, qmr)); + } + studyFormFillResource.setType(StudyFormFillResourceTypeEnum.sj.getValue()); + } + } + if (bacteria != null) { + studyFormFillResource.setMc(bacteria.getMc()); + studyFormFillResource.setBh(bacteria.getBh()); + studyFormFillResource.setKc(bacteria.getTj()); + studyFormFillResource.setKcdw(bacteria.getTjdw()); + studyFormFillResource.setLy(bacteria.getLy()); + studyFormFillResource.setSxrq(bacteria.getSxr() != null ? DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", bacteria.getSxr()) : ""); + bacteriaMap.put(bacteria.getBh(), bacteria); + } + } + } + if (bacteriaMap.size() > 0 && studyFormFill.getSftb().equals(NormalEnum.no.getValue())) { + cz(studyFormFill, bacteriaMap, jcgjList, qmr); + } + } + if (jcgjList.size() > 0) { + bacteriaJcgjService.saveBatch(jcgjList); + } + if (bacteriaList.size() > 0) { + studyBacteriaService.saveBatch(studyFormFill.getStudyId(), bacteriaList); + } + } + + /** + * 处置 + * + * @param studyFormFill + * @param bacteriaMap + * @param jcgjList + * @param qmr + */ + private void cz(StudyFormFill studyFormFill, Map bacteriaMap, List jcgjList, SysUser qmr) { + String empty = "[]"; + // 处置,库存全变为0 + String czlist = studyFormFill.getCzlist(); + if (StringUtils.isNotEmpty(czlist) && !StringUtils.equals(empty, czlist)) { + List studyFormFillCzList = JSONUtil.toList(czlist, StudyFormFillCz.class); + for (StudyFormFillCz studyFormFillCz : studyFormFillCzList) { + List list = new ArrayList<>(); + for (String bh : studyFormFillCz.getList()) { + Bacteria bacteria = bacteriaMap.get(bh); + if (bacteria != null) { + list.add(bacteria.getId()); + // 稽查轨迹 + LinkedHashMap jcnrMap = new LinkedHashMap<>(); + jcnrMap.put("处置方式", studyFormFillCz.getCzfs()); + jcnrMap.put("处置量", bacteria.getTj() + bacteria.getTjdw()); + + LinkedHashMap jcnrEnMap = new LinkedHashMap<>(); + jcnrEnMap.put("Dispose Method", studyFormFillCz.getCzfs()); + jcnrEnMap.put("Amount", bacteria.getTj() + bacteria.getTjdw()); + + BacteriaJcgj jcgj = bacteriaJcgjService.genJcgj(bacteria.getId(), JcgjlxEnum.lc.getValue(), "处置", "Dispose", + JcmcysEnum.green.getValue(), JctUtil.formatStr(jcnrMap), JctUtil.formatStr(jcnrEnMap), qmr); + jcgjList.add(jcgj); + } + } + if (list.size() > 0) { + baseMapper.updateKcBatch(list, "0"); + } + } + } } } diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/CellJcgjServiceImpl.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/CellJcgjServiceImpl.java index 6088477..8abe5db 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/CellJcgjServiceImpl.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/CellJcgjServiceImpl.java @@ -1,10 +1,15 @@ package com.hxhq.business.service.impl; +import java.util.Date; import java.util.List; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.hxhq.business.domain.BacteriaJcgj; +import com.hxhq.business.domain.Cell; +import com.hxhq.business.service.ISystemLogService; import com.hxhq.common.core.utils.DateUtils; +import com.hxhq.system.api.domain.SysUser; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.hxhq.business.mapper.CellJcgjMapper; import com.hxhq.business.domain.CellJcgj; @@ -20,6 +25,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @Service public class CellJcgjServiceImpl extends ServiceImpl implements ICellJcgjService { + + @Autowired + private ISystemLogService systemLogService; /** * 查询细胞-稽查轨迹列表 * @@ -34,16 +42,40 @@ public class CellJcgjServiceImpl extends ServiceImpl i } @Override - public void saveJcgj(Long resourceId, Integer jcgjlx, String jcmc, Integer jcmcys, String jcnr, Long jcrId, String jcrMc) { + public void saveJcgj(Cell cell, Integer jcgjlx, String jcmc, String jcmcEn, Integer jcmcys, String jcnr, String jcnrEn, SysUser qmr) { CellJcgj jcgj = new CellJcgj(); - jcgj.setCellId(resourceId); + jcgj.setCellId(cell.getId()); jcgj.setJcgjlx(jcgjlx); jcgj.setJcmc(jcmc); + jcgj.setJcmcEn(jcmcEn); jcgj.setJcmcys(jcmcys); jcgj.setJcnr(jcnr); - jcgj.setQmrId(jcrId); - jcgj.setQmrMc(jcrMc); + jcgj.setJcnrEn(jcnrEn); + jcgj.setQmrId(qmr.getUserId()); + jcgj.setQmrMc(qmr.getNickName()); + jcgj.setQmrMcEn(qmr.getUserName()); + Date date = new Date(); + jcgj.setCreateTime(date); this.save(jcgj); + + systemLogService.saveInfoWithData(cell.getBh(), cell.getBh(), jcgj.getJcmc(), jcgj.getJcmcEn(), + jcgj.getJcnr(), jcgj.getJcnrEn(), jcgj.getQmrId(), jcgj.getQmrMc(), jcgj.getQmrMcEn(), jcgj.getRemark(), date); + } + + @Override + public CellJcgj genJcgj(Long cellId, Integer jcgjlx, String jcmc, String jcmcEn, Integer jcmcys, String jcnr, String jcnrEn, SysUser qmr) { + CellJcgj jcgj = new CellJcgj(); + jcgj.setCellId(cellId); + jcgj.setJcgjlx(jcgjlx); + jcgj.setJcmc(jcmc); + jcgj.setJcmcEn(jcmcEn); + jcgj.setJcmcys(jcmcys); + jcgj.setJcnr(jcnr); + jcgj.setJcnrEn(jcnrEn); + jcgj.setQmrId(qmr.getUserId()); + jcgj.setQmrMc(qmr.getNickName()); + jcgj.setQmrMcEn(qmr.getUserName()); + return jcgj; } } diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/CellServiceImpl.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/CellServiceImpl.java index ab3484e..ab22f2c 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/CellServiceImpl.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/CellServiceImpl.java @@ -1,26 +1,37 @@ package com.hxhq.business.service.impl; import java.math.BigDecimal; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; + +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.hxhq.business.domain.Bacteria; -import com.hxhq.business.domain.StudyFormFill; -import com.hxhq.business.domain.Template; +import com.hxhq.business.domain.*; +import com.hxhq.business.dto.study.StudyFormFillCz; +import com.hxhq.business.dto.study.StudyFormFillResource; +import com.hxhq.business.enums.NormalEnum; +import com.hxhq.business.enums.study.StudyFormFillResourceTypeEnum; import com.hxhq.business.enums.zykgl.JcgjlxEnum; import com.hxhq.business.enums.zykgl.JcmcysEnum; +import com.hxhq.business.enums.zykgl.JyztEnum; +import com.hxhq.business.enums.zykgl.ZjztEnum; import com.hxhq.business.form.gsp.CzForm; import com.hxhq.business.form.study.StudyCellSearchForm; import com.hxhq.business.service.ICellJcgjService; +import com.hxhq.business.service.IStudyCellService; +import com.hxhq.business.utils.JctUtil; import com.hxhq.common.core.exception.ServiceException; +import com.hxhq.common.core.utils.DateUtils; import com.hxhq.common.core.utils.StringUtils; +import com.hxhq.common.security.utils.SecurityUtils; import com.hxhq.system.api.domain.SysUser; import com.hxhq.system.service.ISysUserService; import org.apache.commons.lang3.math.NumberUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.hxhq.business.mapper.CellMapper; -import com.hxhq.business.domain.Cell; import com.hxhq.business.service.ICellService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.transaction.annotation.Transactional; @@ -32,37 +43,39 @@ import org.springframework.transaction.annotation.Transactional; * @date 2026-01-12 */ @Service -public class CellServiceImpl extends ServiceImpl implements ICellService -{ +public class CellServiceImpl extends ServiceImpl implements ICellService { @Autowired private ISysUserService sysUserService; @Autowired private ICellJcgjService cellJcgjService; + @Autowired + private IStudyCellService studyCellService; + @Override public List queryStudyList(StudyCellSearchForm form) { QueryWrapper queryWrapper = Wrappers.query(); queryWrapper.eq("c.del_flag", 0); - if(form.getStudyId() != null) { + if (form.getStudyId() != null) { queryWrapper.eq("c.study_id", form.getStudyId()); } - if(StringUtils.isNotEmpty(form.getMc())) { + if (StringUtils.isNotEmpty(form.getMc())) { queryWrapper.like("c.mc", form.getMc()); } - if(StringUtils.isNotEmpty(form.getBh())) { + if (StringUtils.isNotEmpty(form.getBh())) { queryWrapper.like("c.bh", form.getBh()); } - if(StringUtils.isNotEmpty(form.getLy())) { + if (StringUtils.isNotEmpty(form.getLy())) { queryWrapper.like("c.ly", form.getLy()); } - if(StringUtils.isNotEmpty(form.getStartDate())) { + if (StringUtils.isNotEmpty(form.getStartDate())) { queryWrapper.ge("c.sxr", form.getStartDate()); } - if(StringUtils.isNotEmpty(form.getEndDate())) { + if (StringUtils.isNotEmpty(form.getEndDate())) { queryWrapper.le("c.sxr", form.getEndDate()); } - if(StringUtils.isNotEmpty(form.getStudyName())) { + if (StringUtils.isNotEmpty(form.getStudyName())) { queryWrapper.like("s.name", form.getStudyName()); } queryWrapper.orderByDesc("c.bh"); @@ -75,10 +88,10 @@ public class CellServiceImpl extends ServiceImpl implements IC sysUserService.checkPassword(qmr, form.getQmrmm(), true); Cell cell = this.getById(form.getId()); - if(cell == null) { + if (cell == null) { throw new ServiceException("细胞不存在或已删除"); } - if(!NumberUtils.isParsable(form.getCzl())) { + if (!NumberUtils.isParsable(form.getCzl())) { throw new ServiceException("请输入正确的处置量"); } BigDecimal tj = new BigDecimal(cell.getTj()); @@ -88,12 +101,132 @@ public class CellServiceImpl extends ServiceImpl implements IC this.updateById(cell); - cellJcgjService.saveJcgj(cell.getId(), JcgjlxEnum.lc.getValue(), "处置", JcmcysEnum.blue.getValue(), null, qmr.getUserId(), qmr.getNickName()); + LinkedHashMap jcnrMap = new LinkedHashMap<>(); + jcnrMap.put("处置方式", form.getCzfs()); + jcnrMap.put("处置量", form.getCzl()); + jcnrMap.put("原因", form.getRemark()); + + LinkedHashMap jcnrEnMap = new LinkedHashMap<>(); + jcnrEnMap.put("Dispose Method", form.getCzfs()); + jcnrEnMap.put("Amount", form.getCzl()); + jcnrEnMap.put("Reason", form.getRemark()); + cellJcgjService.saveJcgj(cell, JcgjlxEnum.lc.getValue(), "处置", "Dispose", + JcmcysEnum.blue.getValue(), JctUtil.formatStr(jcnrMap), JctUtil.formatStr(jcnrEnMap), qmr); } @Override @Transactional(rollbackFor = Exception.class) public void genResource(StudyFormFill studyFormFill, Template template) { - //todo 需要判断当前模板的产物是细菌才处理生成的 + Boolean mark = template.getProduct().equals(StudyFormFillResourceTypeEnum.Cell.getValue()) ? true : false; + SysUser qmr = sysUserService.selectUserById(SecurityUtils.getUserId()); + + String empty = "[]"; + List cellList = new ArrayList<>(); + Map cellMap = new HashMap<>(16); + + LinkedList jcgjList = new LinkedList<>(); + + String resource = studyFormFill.getResource(); + if (StringUtils.isNotEmpty(resource) && !StringUtils.equals(empty, resource)) { + List studyFormFillResourceList = JSONUtil.toList(resource, StudyFormFillResource.class); + List tmp = studyFormFillResourceList.stream().filter(p -> (p.getType() == null && mark) || (p.getType() != null && StudyFormFillResourceTypeEnum.Cell.getValue() == p.getType())).collect(Collectors.toList()); + if (tmp.size() > 0) { + List bhList = tmp.stream().map(StudyFormFillResource::getBh).collect(Collectors.toList()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(Cell::getBh, bhList); + cellList = this.list(queryWrapper); + for (Cell cell : cellList) { + cellMap.put(cell.getBh(), cell); + } + for (StudyFormFillResource studyFormFillResource : studyFormFillResourceList) { + Cell cell = cellMap.get(studyFormFillResource.getBh()); + if (mark) { + if (studyFormFillResource.getType() == null) { + if (studyFormFill.getSftb().equals(NormalEnum.no.getValue())) { + Boolean isAdd = false; + if (cell == null) { + cell = new Cell(); + isAdd = true; + } + cell.setStudyId(studyFormFill.getStudyId()); + cell.setStudyFormId(studyFormFill.getId()); + cell.setMc(studyFormFillResource.getMc()); + cell.setBh(studyFormFillResource.getBh()); + cell.setTj(studyFormFillResource.getKc()); + cell.setTjdw(studyFormFillResource.getKcdw()); + cell.setLy(studyFormFillResource.getLy()); + cell.setSxr(DateUtils.parseDate(studyFormFillResource.getSxrq())); + this.saveOrUpdate(cell); + if (isAdd) { + cellList.add(cell); + } + cellMap.put(cell.getBh(), cell); + jcgjList.add(cellJcgjService.genJcgj(cell.getId(), JcgjlxEnum.lc.getValue(), "配制完成", "Formulation Completed", JcmcysEnum.green.getValue(), null, null, qmr)); + } + studyFormFillResource.setType(StudyFormFillResourceTypeEnum.sj.getValue()); + } + } + if (cell != null) { + studyFormFillResource.setMc(cell.getMc()); + studyFormFillResource.setBh(cell.getBh()); + studyFormFillResource.setKc(cell.getTj()); + studyFormFillResource.setKcdw(cell.getTjdw()); + studyFormFillResource.setLy(cell.getLy()); + studyFormFillResource.setSxrq(cell.getSxr() != null ? DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", cell.getSxr()) : ""); + cellMap.put(cell.getBh(), cell); + } + } + } + if (cellMap.size() > 0 && studyFormFill.getSftb().equals(NormalEnum.no.getValue())) { + cz(studyFormFill, cellMap, jcgjList, qmr); + } + } + if (jcgjList.size() > 0) { + cellJcgjService.saveBatch(jcgjList); + } + if (cellList.size() > 0) { + studyCellService.saveBatch(studyFormFill.getStudyId(), cellList); + } + } + + /** + * 处置 + * + * @param studyFormFill + * @param cellMap + * @param jcgjList + * @param qmr + */ + private void cz(StudyFormFill studyFormFill, Map cellMap, List jcgjList, SysUser qmr) { + String empty = "[]"; + // 处置,库存全变为0 + String czlist = studyFormFill.getCzlist(); + if (org.apache.commons.lang3.StringUtils.isNotEmpty(czlist) && !org.apache.commons.lang3.StringUtils.equals(empty, czlist)) { + List studyFormFillCzList = JSONUtil.toList(czlist, StudyFormFillCz.class); + for (StudyFormFillCz studyFormFillCz : studyFormFillCzList) { + List list = new ArrayList<>(); + for (String bh : studyFormFillCz.getList()) { + Cell cell = cellMap.get(bh); + if (cell != null) { + list.add(cell.getId()); + // 稽查轨迹 + LinkedHashMap jcnrMap = new LinkedHashMap<>(); + jcnrMap.put("处置方式", studyFormFillCz.getCzfs()); + jcnrMap.put("处置量", cell.getTj() + cell.getTjdw()); + + LinkedHashMap jcnrEnMap = new LinkedHashMap<>(); + jcnrEnMap.put("Dispose Method", studyFormFillCz.getCzfs()); + jcnrEnMap.put("Amount", cell.getTj() + cell.getTjdw()); + + CellJcgj jcgj = cellJcgjService.genJcgj(cell.getId(), JcgjlxEnum.lc.getValue(), "处置", "Dispose", + JcmcysEnum.green.getValue(), JctUtil.formatStr(jcnrMap), JctUtil.formatStr(jcnrEnMap), qmr); + jcgjList.add(jcgj); + } + } + if (list.size() > 0) { + baseMapper.updateKcBatch(list, "0"); + } + } + } } } diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/StudyBacteriaServiceImpl.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/StudyBacteriaServiceImpl.java index c207627..62845ce 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/StudyBacteriaServiceImpl.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/StudyBacteriaServiceImpl.java @@ -1,9 +1,17 @@ package com.hxhq.business.service.impl; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; - import com.hxhq.common.core.utils.DateUtils; +import com.hxhq.business.domain.Bacteria; +import com.hxhq.business.domain.StudyCell; +import com.hxhq.common.core.domain.MpBaseEntity; +import com.hxhq.common.core.utils.DateUtils; import org.springframework.stereotype.Service; import com.hxhq.business.mapper.StudyBacteriaMapper; import com.hxhq.business.domain.StudyBacteria; @@ -32,4 +40,31 @@ public class StudyBacteriaServiceImpl extends ServiceImpl bacteriaList) { + List resourceIdList = bacteriaList.stream().map(MpBaseEntity::getId).distinct().collect(Collectors.toList()); + + // 查询数据库中已有记录 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StudyBacteria::getStudyId, studyId) + .in(StudyBacteria::getResourceId, resourceIdList); + List list = this.list(queryWrapper); + List dbResourceIdList = list.stream().map(StudyBacteria::getResourceId).collect(Collectors.toList()); + + // 对比试剂id,插入数据库中没有的记录 + List insertResourceId = resourceIdList.stream() + .filter(element -> !dbResourceIdList.contains(element)) + .collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(insertResourceId)) { + List studyCellList = new ArrayList<>(); + for (Long resourceId : insertResourceId) { + StudyBacteria studyBacteria = new StudyBacteria(); + studyBacteria.setResourceId(resourceId); + studyBacteria.setStudyId(studyId); + studyCellList.add(studyBacteria); + } + this.saveBatch(studyCellList); + } + } + } diff --git a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/StudyCellServiceImpl.java b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/StudyCellServiceImpl.java index c17f5d7..e8f8a69 100644 --- a/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/StudyCellServiceImpl.java +++ b/hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/StudyCellServiceImpl.java @@ -1,9 +1,17 @@ package com.hxhq.business.service.impl; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; - import com.hxhq.common.core.utils.DateUtils; +import com.hxhq.business.domain.Cell; +import com.hxhq.business.domain.StudySj; +import com.hxhq.common.core.domain.MpBaseEntity; +import com.hxhq.common.core.utils.DateUtils; import org.springframework.stereotype.Service; import com.hxhq.business.mapper.StudyCellMapper; import com.hxhq.business.domain.StudyCell; @@ -32,4 +40,31 @@ public class StudyCellServiceImpl extends ServiceImpl cellList) { + List resourceIdList = cellList.stream().map(MpBaseEntity::getId).distinct().collect(Collectors.toList()); + + // 查询数据库中已有记录 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StudyCell::getStudyId, studyId) + .in(StudyCell::getResourceId, resourceIdList); + List list = this.list(queryWrapper); + List dbResourceIdList = list.stream().map(StudyCell::getResourceId).collect(Collectors.toList()); + + // 对比试剂id,插入数据库中没有的记录 + List insertResourceId = resourceIdList.stream() + .filter(element -> !dbResourceIdList.contains(element)) + .collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(insertResourceId)) { + List studyCellList = new ArrayList<>(); + for (Long resourceId : insertResourceId) { + StudyCell studyCell = new StudyCell(); + studyCell.setResourceId(resourceId); + studyCell.setStudyId(studyId); + studyCellList.add(studyCell); + } + this.saveBatch(studyCellList); + } + } + } diff --git a/hxhq-modules/hxhq-system/src/main/resources/mapper/business/BacteriaMapper.xml b/hxhq-modules/hxhq-system/src/main/resources/mapper/business/BacteriaMapper.xml index 1ae8c81..189fe43 100644 --- a/hxhq-modules/hxhq-system/src/main/resources/mapper/business/BacteriaMapper.xml +++ b/hxhq-modules/hxhq-system/src/main/resources/mapper/business/BacteriaMapper.xml @@ -3,6 +3,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + UPDATE t_bacteria SET tj = #{kc} WHERE id in + + #{item} + + SELECT c.*, s.name as studyName FROM `t_cell` c