Browse Source

feat:[试验管理][细胞、细菌生成]

master
HanLong 1 month ago
parent
commit
e18a5b4536
16 changed files with 580 additions and 43 deletions
  1. +31
    -0
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/domain/BacteriaJcgj.java
  2. +31
    -0
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/domain/CellJcgj.java
  3. +7
    -0
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/mapper/BacteriaMapper.java
  4. +6
    -0
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/mapper/CellMapper.java
  5. +20
    -4
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/IBacteriaJcgjService.java
  6. +22
    -4
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/ICellJcgjService.java
  7. +9
    -0
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/IStudyBacteriaService.java
  8. +8
    -0
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/IStudyCellService.java
  9. +38
    -4
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/BacteriaJcgjServiceImpl.java
  10. +137
    -7
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/BacteriaServiceImpl.java
  11. +36
    -4
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/CellJcgjServiceImpl.java
  12. +151
    -18
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/CellServiceImpl.java
  13. +36
    -1
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/StudyBacteriaServiceImpl.java
  14. +36
    -1
      hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/StudyCellServiceImpl.java
  15. +6
    -0
      hxhq-modules/hxhq-system/src/main/resources/mapper/business/BacteriaMapper.xml
  16. +6
    -0
      hxhq-modules/hxhq-system/src/main/resources/mapper/business/CellMapper.xml

+ 31
- 0
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/domain/BacteriaJcgj.java View File

@ -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;
}
}

+ 31
- 0
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/domain/CellJcgj.java View File

@ -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;
}
}

+ 7
- 0
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/mapper/BacteriaMapper.java View File

@ -24,4 +24,11 @@ public interface BacteriaMapper extends BaseMapper
* @return
*/
List<Bacteria> queryStudyList(@Param("ew") Wrapper<Bacteria> queryWrapper);
/**
* 批量修改库存
* @param idList id
* @param kc 库存量
*/
void updateKcBatch(@Param("idList") List<Long> idList, @Param("kc") String kc);
}

+ 6
- 0
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/mapper/CellMapper.java View File

@ -25,4 +25,10 @@ public interface CellMapper extends BaseMapper
*/
List<Cell> queryStudyList(@Param("ew") Wrapper<Cell> queryWrapper);
/**
* 批量修改库存
* @param idList id
* @param kc 库存量
*/
void updateKcBatch(@Param("idList") List<Long> idList, @Param("kc") String kc);
}

+ 20
- 4
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/IBacteriaJcgjService.java View File

@ -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);
}

+ 22
- 4
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/ICellJcgjService.java View File

@ -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);
}

+ 9
- 0
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/IStudyBacteriaService.java View File

@ -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<StudyBacteria> queryList(StudyBacteria studyBacteria);
/**
* 批量保存
* @param studyId
* @param bacteriaList
*/
void saveBatch(Long studyId, List<Bacteria> bacteriaList);
}

+ 8
- 0
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/IStudyCellService.java View File

@ -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<StudyCell> queryList(StudyCell studyCell);
/**
* 批量保存
* @param studyId
* @param cellList
*/
void saveBatch(Long studyId, List<Cell> cellList);
}

+ 38
- 4
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/BacteriaJcgjServiceImpl.java View File

@ -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<BacteriaJcgjMapper, BacteriaJcgj> implements IBacteriaJcgjService
{
@Autowired
private ISystemLogService systemLogService;
/**
* 查询细菌-稽查轨迹列表
*
@ -34,16 +44,40 @@ public class BacteriaJcgjServiceImpl extends ServiceImpl
}
@Override
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) {
BacteriaJcgj jcgj = new BacteriaJcgj();
jcgj.setBacteriaId(resourceId);
jcgj.setBacteriaId(bacteria.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(bacteria.getBh(), bacteria.getBh(), jcgj.getJcmc(), jcgj.getJcmcEn(),
jcgj.getJcnr(), jcgj.getJcnrEn(), jcgj.getQmrId(), jcgj.getQmrMc(), jcgj.getQmrMcEn(), jcgj.getRemark(), date);
}
@Override
public BacteriaJcgj genJcgj(Long bacteriaId, Integer jcgjlx, String jcmc, String jcmcEn, Integer jcmcys, String jcnr, String jcnrEn, SysUser qmr) {
BacteriaJcgj jcgj = new BacteriaJcgj();
jcgj.setBacteriaId(bacteriaId);
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;
}
}

+ 137
- 7
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/BacteriaServiceImpl.java View File

@ -1,27 +1,35 @@
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.Cell;
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.form.gsp.CzForm;
import com.hxhq.business.form.study.StudyCellSearchForm;
import com.hxhq.business.service.IBacteriaJcgjService;
import com.hxhq.business.service.IStudyBacteriaService;
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.BacteriaMapper;
import com.hxhq.business.domain.Bacteria;
import com.hxhq.business.service.IBacteriaService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
@ -42,6 +50,9 @@ public class BacteriaServiceImpl extends ServiceImpl i
@Autowired
private IBacteriaJcgjService bacteriaJcgjService;
@Autowired
private IStudyBacteriaService studyBacteriaService;
@Override
public List<Bacteria> queryStudyList(StudyCellSearchForm form) {
QueryWrapper<Bacteria> 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<String, String> jcnrMap = new LinkedHashMap<>();
jcnrMap.put("处置方式", form.getCzfs());
jcnrMap.put("处置量", bacteria.getTj() + bacteria.getTjdw());
LinkedHashMap<String, String> 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<Bacteria> bacteriaList = new ArrayList<>();
Map<String, Bacteria> bacteriaMap = new HashMap<>(16);
LinkedList<BacteriaJcgj> jcgjList = new LinkedList<>();
String resource = studyFormFill.getResource();
if (StringUtils.isNotEmpty(resource) && !StringUtils.equals(empty, resource)) {
List<StudyFormFillResource> studyFormFillResourceList = JSONUtil.toList(resource, StudyFormFillResource.class);
List<StudyFormFillResource> 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<String> bhList = tmp.stream().map(StudyFormFillResource::getBh).collect(Collectors.toList());
LambdaQueryWrapper<Bacteria> 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<String, Bacteria> bacteriaMap, List<BacteriaJcgj> jcgjList, SysUser qmr) {
String empty = "[]";
// 处置库存全变为0
String czlist = studyFormFill.getCzlist();
if (StringUtils.isNotEmpty(czlist) && !StringUtils.equals(empty, czlist)) {
List<StudyFormFillCz> studyFormFillCzList = JSONUtil.toList(czlist, StudyFormFillCz.class);
for (StudyFormFillCz studyFormFillCz : studyFormFillCzList) {
List<Long> list = new ArrayList<>();
for (String bh : studyFormFillCz.getList()) {
Bacteria bacteria = bacteriaMap.get(bh);
if (bacteria != null) {
list.add(bacteria.getId());
// 稽查轨迹
LinkedHashMap<String, String> jcnrMap = new LinkedHashMap<>();
jcnrMap.put("处置方式", studyFormFillCz.getCzfs());
jcnrMap.put("处置量", bacteria.getTj() + bacteria.getTjdw());
LinkedHashMap<String, String> 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");
}
}
}
}
}

+ 36
- 4
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/CellJcgjServiceImpl.java View File

@ -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<CellJcgjMapper, CellJcgj> 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;
}
}

+ 151
- 18
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/CellServiceImpl.java View File

@ -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<CellMapper, Cell> implements ICellService
{
public class CellServiceImpl extends ServiceImpl<CellMapper, Cell> implements ICellService {
@Autowired
private ISysUserService sysUserService;
@Autowired
private ICellJcgjService cellJcgjService;
@Autowired
private IStudyCellService studyCellService;
@Override
public List<Cell> queryStudyList(StudyCellSearchForm form) {
QueryWrapper<Cell> 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<String, String> jcnrMap = new LinkedHashMap<>();
jcnrMap.put("处置方式", form.getCzfs());
jcnrMap.put("处置量", form.getCzl());
jcnrMap.put("原因", form.getRemark());
LinkedHashMap<String, String> 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<Cell> cellList = new ArrayList<>();
Map<String, Cell> cellMap = new HashMap<>(16);
LinkedList<CellJcgj> jcgjList = new LinkedList<>();
String resource = studyFormFill.getResource();
if (StringUtils.isNotEmpty(resource) && !StringUtils.equals(empty, resource)) {
List<StudyFormFillResource> studyFormFillResourceList = JSONUtil.toList(resource, StudyFormFillResource.class);
List<StudyFormFillResource> 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<String> bhList = tmp.stream().map(StudyFormFillResource::getBh).collect(Collectors.toList());
LambdaQueryWrapper<Cell> 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<String, Cell> cellMap, List<CellJcgj> 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<StudyFormFillCz> studyFormFillCzList = JSONUtil.toList(czlist, StudyFormFillCz.class);
for (StudyFormFillCz studyFormFillCz : studyFormFillCzList) {
List<Long> list = new ArrayList<>();
for (String bh : studyFormFillCz.getList()) {
Cell cell = cellMap.get(bh);
if (cell != null) {
list.add(cell.getId());
// 稽查轨迹
LinkedHashMap<String, String> jcnrMap = new LinkedHashMap<>();
jcnrMap.put("处置方式", studyFormFillCz.getCzfs());
jcnrMap.put("处置量", cell.getTj() + cell.getTjdw());
LinkedHashMap<String, String> 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");
}
}
}
}
}

+ 36
- 1
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/StudyBacteriaServiceImpl.java View File

@ -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
return this.list(queryWrapper);
}
@Override
public void saveBatch(Long studyId, List<Bacteria> bacteriaList) {
List<Long> resourceIdList = bacteriaList.stream().map(MpBaseEntity::getId).distinct().collect(Collectors.toList());
// 查询数据库中已有记录
LambdaQueryWrapper<StudyBacteria> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(StudyBacteria::getStudyId, studyId)
.in(StudyBacteria::getResourceId, resourceIdList);
List<StudyBacteria> list = this.list(queryWrapper);
List<Long> dbResourceIdList = list.stream().map(StudyBacteria::getResourceId).collect(Collectors.toList());
// 对比试剂id插入数据库中没有的记录
List<Long> insertResourceId = resourceIdList.stream()
.filter(element -> !dbResourceIdList.contains(element))
.collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(insertResourceId)) {
List<StudyBacteria> studyCellList = new ArrayList<>();
for (Long resourceId : insertResourceId) {
StudyBacteria studyBacteria = new StudyBacteria();
studyBacteria.setResourceId(resourceId);
studyBacteria.setStudyId(studyId);
studyCellList.add(studyBacteria);
}
this.saveBatch(studyCellList);
}
}
}

+ 36
- 1
hxhq-modules/hxhq-system/src/main/java/com/hxhq/business/service/impl/StudyCellServiceImpl.java View File

@ -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
return this.list(queryWrapper);
}
@Override
public void saveBatch(Long studyId, List<Cell> cellList) {
List<Long> resourceIdList = cellList.stream().map(MpBaseEntity::getId).distinct().collect(Collectors.toList());
// 查询数据库中已有记录
LambdaQueryWrapper<StudyCell> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(StudyCell::getStudyId, studyId)
.in(StudyCell::getResourceId, resourceIdList);
List<StudyCell> list = this.list(queryWrapper);
List<Long> dbResourceIdList = list.stream().map(StudyCell::getResourceId).collect(Collectors.toList());
// 对比试剂id插入数据库中没有的记录
List<Long> insertResourceId = resourceIdList.stream()
.filter(element -> !dbResourceIdList.contains(element))
.collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(insertResourceId)) {
List<StudyCell> studyCellList = new ArrayList<>();
for (Long resourceId : insertResourceId) {
StudyCell studyCell = new StudyCell();
studyCell.setResourceId(resourceId);
studyCell.setStudyId(studyId);
studyCellList.add(studyCell);
}
this.saveBatch(studyCellList);
}
}
}

+ 6
- 0
hxhq-modules/hxhq-system/src/main/resources/mapper/business/BacteriaMapper.xml View File

@ -3,6 +3,12 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hxhq.business.mapper.BacteriaMapper">
<update id="updateKcBatch">
UPDATE t_bacteria SET tj = #{kc} WHERE id in
<foreach item="item" index="index" collection="idList" open="(" separator="," close=")">
#{item}
</foreach>
</update>
<select id="queryStudyList" resultType="com.hxhq.business.domain.Bacteria">
SELECT b.*, s.name AS studyName
FROM `t_bacteria` b

+ 6
- 0
hxhq-modules/hxhq-system/src/main/resources/mapper/business/CellMapper.xml View File

@ -3,6 +3,12 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hxhq.business.mapper.CellMapper">
<update id="updateKcBatch">
UPDATE t_cell SET tj = #{kc} WHERE id in
<foreach item="item" index="index" collection="idList" open="(" separator="," close=")">
#{item}
</foreach>
</update>
<select id="queryStudyList" resultType="com.hxhq.business.domain.Cell">
SELECT c.*, s.name as studyName
FROM `t_cell` c

Loading…
Cancel
Save