|
|
@ -2,14 +2,17 @@ package com.hxhq.business.service.impl; |
|
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
import java.math.BigDecimal; |
|
|
import java.util.*; |
|
|
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.conditions.query.QueryWrapper; |
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
import com.hxhq.business.domain.Mjy; |
|
|
|
|
|
import com.hxhq.business.domain.Sj; |
|
|
|
|
|
import com.hxhq.business.domain.SjTz; |
|
|
|
|
|
import com.hxhq.business.domain.SjJcgj; |
|
|
|
|
|
|
|
|
import com.hxhq.business.domain.*; |
|
|
import com.hxhq.business.dto.sj.SjListDto; |
|
|
import com.hxhq.business.dto.sj.SjListDto; |
|
|
|
|
|
import com.hxhq.business.dto.study.StudyFormFillCc; |
|
|
|
|
|
import com.hxhq.business.dto.study.StudyFormFillCz; |
|
|
|
|
|
import com.hxhq.business.dto.study.StudyFormFillResource; |
|
|
import com.hxhq.business.enums.zykgl.JcgjlxEnum; |
|
|
import com.hxhq.business.enums.zykgl.JcgjlxEnum; |
|
|
import com.hxhq.business.enums.zykgl.JcmcysEnum; |
|
|
import com.hxhq.business.enums.zykgl.JcmcysEnum; |
|
|
import com.hxhq.business.enums.zykgl.JyztEnum; |
|
|
import com.hxhq.business.enums.zykgl.JyztEnum; |
|
|
@ -23,6 +26,7 @@ import com.hxhq.business.utils.JctUtil; |
|
|
import com.hxhq.business.utils.ObjectCompareUtil; |
|
|
import com.hxhq.business.utils.ObjectCompareUtil; |
|
|
import com.hxhq.common.core.exception.ServiceException; |
|
|
import com.hxhq.common.core.exception.ServiceException; |
|
|
import com.hxhq.common.core.utils.DateUtils; |
|
|
import com.hxhq.common.core.utils.DateUtils; |
|
|
|
|
|
import com.hxhq.common.security.utils.SecurityUtils; |
|
|
import com.hxhq.system.api.domain.SysUser; |
|
|
import com.hxhq.system.api.domain.SysUser; |
|
|
import com.hxhq.system.service.ISysUserService; |
|
|
import com.hxhq.system.service.ISysUserService; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
@ -468,16 +472,16 @@ public class SjServiceImpl extends ServiceImpl implements ISjServi |
|
|
|
|
|
|
|
|
List<SjJcgj> gspJcgjList = new ArrayList<>(); |
|
|
List<SjJcgj> gspJcgjList = new ArrayList<>(); |
|
|
for (ObjectCompareUtil.FieldChange fieldChange : fieldChanges) { |
|
|
for (ObjectCompareUtil.FieldChange fieldChange : fieldChanges) { |
|
|
SjJcgj gspJcgj = new SjJcgj(); |
|
|
|
|
|
gspJcgj.setSjId(sjOld.getId()); |
|
|
|
|
|
gspJcgj.setJcgjlx(JcgjlxEnum.lc.getValue()); |
|
|
|
|
|
gspJcgj.setJcmc("编辑"); |
|
|
|
|
|
gspJcgj.setJcmcys(JcmcysEnum.green.getValue()); |
|
|
|
|
|
gspJcgj.setJcnr(fieldChange.toString()); |
|
|
|
|
|
gspJcgj.setQmrId(qmr.getUserId()); |
|
|
|
|
|
gspJcgj.setQmrMc(qmr.getNickName()); |
|
|
|
|
|
gspJcgj.setRemark(form.getQmbz()); |
|
|
|
|
|
gspJcgjList.add(gspJcgj); |
|
|
|
|
|
|
|
|
SjJcgj sjJcgj = new SjJcgj(); |
|
|
|
|
|
sjJcgj.setSjId(sjOld.getId()); |
|
|
|
|
|
sjJcgj.setJcgjlx(JcgjlxEnum.lc.getValue()); |
|
|
|
|
|
sjJcgj.setJcmc("编辑"); |
|
|
|
|
|
sjJcgj.setJcmcys(JcmcysEnum.green.getValue()); |
|
|
|
|
|
sjJcgj.setJcnr(fieldChange.toString()); |
|
|
|
|
|
sjJcgj.setQmrId(qmr.getUserId()); |
|
|
|
|
|
sjJcgj.setQmrMc(qmr.getNickName()); |
|
|
|
|
|
sjJcgj.setRemark(form.getQmbz()); |
|
|
|
|
|
gspJcgjList.add(sjJcgj); |
|
|
} |
|
|
} |
|
|
sjJcgjService.saveBatch(gspJcgjList); |
|
|
sjJcgjService.saveBatch(gspJcgjList); |
|
|
} |
|
|
} |
|
|
@ -512,4 +516,181 @@ public class SjServiceImpl extends ServiceImpl implements ISjServi |
|
|
return baseMapper.queryStudyList(queryWrapper); |
|
|
return baseMapper.queryStudyList(queryWrapper); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public void genResource(StudyFormFill studyFormFill, Template template) { |
|
|
|
|
|
SysUser qmr = sysUserService.selectUserById(SecurityUtils.getUserId()); |
|
|
|
|
|
|
|
|
|
|
|
Long studyId = studyFormFill.getStudyId(); |
|
|
|
|
|
Long studyFormId = studyFormFill.getId(); |
|
|
|
|
|
// 生成/使用 |
|
|
|
|
|
String resource = studyFormFill.getResource(); |
|
|
|
|
|
Map<String, Sj> sjMap = new HashMap<>(); |
|
|
|
|
|
List<SjJcgj> jcgjList = new ArrayList<>(); |
|
|
|
|
|
List<SjTz> tzList = new ArrayList<>(); |
|
|
|
|
|
if(StringUtils.isNotEmpty(resource) && !StringUtils.equals("[]", resource)) { |
|
|
|
|
|
List<StudyFormFillResource> studyFormFillResourceList = JSONUtil.toList(resource, StudyFormFillResource.class); |
|
|
|
|
|
List<String> bhList = studyFormFillResourceList.stream().map(StudyFormFillResource::getBh).collect(Collectors.toList()); |
|
|
|
|
|
// 根据编号获取需要处置的试剂列表 |
|
|
|
|
|
LambdaQueryWrapper<Sj> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
|
queryWrapper.in(Sj::getBh, bhList); |
|
|
|
|
|
List<Sj> resourceList = this.list(queryWrapper); |
|
|
|
|
|
for (Sj sj : resourceList) { |
|
|
|
|
|
sjMap.put(sj.getBh(), sj); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for (StudyFormFillResource studyFormFillResource : studyFormFillResourceList) { |
|
|
|
|
|
Sj sj = sjMap.get(studyFormFillResource.getBh()); |
|
|
|
|
|
if(sj == null) { |
|
|
|
|
|
sj = new Sj(); |
|
|
|
|
|
sj.setStudyId(studyId); |
|
|
|
|
|
sj.setStudyFormId(studyFormId); |
|
|
|
|
|
sj.setZjzt(ZjztEnum.rk.getValue()); |
|
|
|
|
|
sj.setJyzt(JyztEnum.wjy.getValue()); |
|
|
|
|
|
sj.setDeptId(template.getDeptId()); |
|
|
|
|
|
} |
|
|
|
|
|
sj.setMc(studyFormFillResource.getMc()); |
|
|
|
|
|
sj.setBh(studyFormFillResource.getBh()); |
|
|
|
|
|
sj.setNd(String.valueOf(studyFormFillResource.getNdz())); |
|
|
|
|
|
sj.setNddw(studyFormFillResource.getNddw()); |
|
|
|
|
|
sj.setKc(String.valueOf(studyFormFillResource.getKc())); |
|
|
|
|
|
sj.setKcdw(studyFormFillResource.getKcdw()); |
|
|
|
|
|
sj.setLy(studyFormFillResource.getSource()); |
|
|
|
|
|
sj.setSxr(DateUtils.parseDate(studyFormFillResource.getSxrq())); |
|
|
|
|
|
sj.setPzrq(studyFormFill.getStartDate()); |
|
|
|
|
|
// TODO 规格、有效周期 |
|
|
|
|
|
if(sj.getId() == null) { |
|
|
|
|
|
this.save(sj); |
|
|
|
|
|
// 稽查轨迹 |
|
|
|
|
|
SjJcgj sjJcgj = new SjJcgj(); |
|
|
|
|
|
sjJcgj.setSjId(sj.getId()); |
|
|
|
|
|
sjJcgj.setJcgjlx(JcgjlxEnum.lc.getValue()); |
|
|
|
|
|
sjJcgj.setJcmc("配制完成"); |
|
|
|
|
|
sjJcgj.setJcmcys(JcmcysEnum.green.getValue()); |
|
|
|
|
|
sjJcgj.setQmrId(qmr.getUserId()); |
|
|
|
|
|
sjJcgj.setQmrMc(qmr.getNickName()); |
|
|
|
|
|
jcgjList.add(sjJcgj); |
|
|
|
|
|
|
|
|
|
|
|
// 台账 |
|
|
|
|
|
SjTz sjTz = new SjTz(); |
|
|
|
|
|
sjTz.setSjId(sj.getId()); |
|
|
|
|
|
sjTz.setQmrId(qmr.getUserId()); |
|
|
|
|
|
sjTz.setQmrMc(qmr.getNickName()); |
|
|
|
|
|
sjTz.setQmyy("配制完成"); |
|
|
|
|
|
sjTz.setCzl(sj.getKc()); |
|
|
|
|
|
sjTz.setCzldw(sj.getKcdw()); |
|
|
|
|
|
tzList.add(sjTz); |
|
|
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
this.updateById(sj); |
|
|
|
|
|
} |
|
|
|
|
|
// 使用 |
|
|
|
|
|
String syl = studyFormFillResource.getSyl(); |
|
|
|
|
|
if(StringUtils.isNotEmpty(syl) && NumberUtils.isParsable(syl)) { |
|
|
|
|
|
BigDecimal kc = new BigDecimal(sj.getKc()); |
|
|
|
|
|
kc = kc.subtract(new BigDecimal(syl)); |
|
|
|
|
|
baseMapper.updateKc(sj.getId(), kc.toString()); |
|
|
|
|
|
|
|
|
|
|
|
// 使用稽查轨迹 |
|
|
|
|
|
Map<String, String> jcnrMap = new LinkedHashMap<>(); |
|
|
|
|
|
jcnrMap.put("使用量", syl + studyFormFillResource.getSyldw()); |
|
|
|
|
|
SjJcgj syJcgj = new SjJcgj(); |
|
|
|
|
|
syJcgj.setSjId(sj.getId()); |
|
|
|
|
|
syJcgj.setJcgjlx(JcgjlxEnum.lc.getValue()); |
|
|
|
|
|
syJcgj.setJcmc("使用"); |
|
|
|
|
|
syJcgj.setJcnr(JctUtil.formatStr(jcnrMap)); |
|
|
|
|
|
syJcgj.setJcmcys(JcmcysEnum.green.getValue()); |
|
|
|
|
|
syJcgj.setQmrId(qmr.getUserId()); |
|
|
|
|
|
syJcgj.setQmrMc(qmr.getNickName()); |
|
|
|
|
|
jcgjList.add(syJcgj); |
|
|
|
|
|
|
|
|
|
|
|
// 台账 |
|
|
|
|
|
SjTz sjTz = new SjTz(); |
|
|
|
|
|
sjTz.setSjId(sj.getId()); |
|
|
|
|
|
sjTz.setQmrId(qmr.getUserId()); |
|
|
|
|
|
sjTz.setQmrMc(qmr.getNickName()); |
|
|
|
|
|
sjTz.setQmyy("使用"); |
|
|
|
|
|
sjTz.setCzl(syl); |
|
|
|
|
|
sjTz.setCzldw(studyFormFillResource.getKcdw()); |
|
|
|
|
|
tzList.add(sjTz); |
|
|
|
|
|
} |
|
|
|
|
|
sjMap.put(sj.getBh(), sj); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 存储 |
|
|
|
|
|
String cclist = studyFormFill.getCclist(); |
|
|
|
|
|
if(StringUtils.isNotEmpty(cclist) && !StringUtils.equals("[]", cclist)) { |
|
|
|
|
|
List<StudyFormFillCc> studyFormFillCcList = JSONUtil.toList(cclist, StudyFormFillCc.class); |
|
|
|
|
|
for (StudyFormFillCc studyFormFillCc : studyFormFillCcList) { |
|
|
|
|
|
baseMapper.updateCc(studyFormFillCc.getList(), studyFormFillCc.getCctj(), studyFormFillCc.getCcwz()); |
|
|
|
|
|
for (String bh : studyFormFillCc.getList()) { |
|
|
|
|
|
Sj sj = sjMap.get(bh); |
|
|
|
|
|
|
|
|
|
|
|
// 稽查轨迹 |
|
|
|
|
|
LinkedHashMap<String, String> jcnrMap = new LinkedHashMap<>(); |
|
|
|
|
|
jcnrMap.put("存储位置", studyFormFillCc.getCcwz()); |
|
|
|
|
|
jcnrMap.put("存储条件", studyFormFillCc.getCctj()); |
|
|
|
|
|
SjJcgj jcgj = new SjJcgj(); |
|
|
|
|
|
jcgj.setSjId(sj.getId()); |
|
|
|
|
|
jcgj.setJcgjlx(JcgjlxEnum.bj.getValue()); |
|
|
|
|
|
jcgj.setJcnr(JctUtil.formatStr(jcnrMap)); |
|
|
|
|
|
jcgj.setJcmcys(JcmcysEnum.green.getValue()); |
|
|
|
|
|
jcgj.setQmyy("存储"); |
|
|
|
|
|
jcgj.setQmrId(qmr.getUserId()); |
|
|
|
|
|
jcgj.setQmrMc(qmr.getNickName()); |
|
|
|
|
|
jcgjList.add(jcgj); |
|
|
|
|
|
|
|
|
|
|
|
// 台账 |
|
|
|
|
|
SjTz sjTz = new SjTz(); |
|
|
|
|
|
sjTz.setSjId(sj.getId()); |
|
|
|
|
|
sjTz.setQmrId(qmr.getUserId()); |
|
|
|
|
|
sjTz.setQmrMc(qmr.getNickName()); |
|
|
|
|
|
sjTz.setQmyy("存储"); |
|
|
|
|
|
sjTz.setCzl(sj.getKc()); |
|
|
|
|
|
sjTz.setCzldw(sj.getKcdw()); |
|
|
|
|
|
tzList.add(sjTz); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 处置,库存全变为0 |
|
|
|
|
|
String czlist = studyFormFill.getCzlist(); |
|
|
|
|
|
if(StringUtils.isNotEmpty(czlist) && !StringUtils.equals("[]", czlist)) { |
|
|
|
|
|
List<StudyFormFillCz> studyFormFillCzList = JSONUtil.toList(czlist, StudyFormFillCz.class); |
|
|
|
|
|
for (StudyFormFillCz studyFormFillCz : studyFormFillCzList) { |
|
|
|
|
|
for (String bh : studyFormFillCz.getList()) { |
|
|
|
|
|
Sj sj = sjMap.get(bh); |
|
|
|
|
|
|
|
|
|
|
|
// 稽查轨迹 |
|
|
|
|
|
LinkedHashMap<String, String> jcnrMap = new LinkedHashMap<>(); |
|
|
|
|
|
jcnrMap.put("处置方式", studyFormFillCz.getCzfs()); |
|
|
|
|
|
jcnrMap.put("处置量", sj.getKc() + sj.getKcdw()); |
|
|
|
|
|
SjJcgj jcgj = new SjJcgj(); |
|
|
|
|
|
jcgj.setSjId(sj.getId()); |
|
|
|
|
|
jcgj.setJcgjlx(JcgjlxEnum.bj.getValue()); |
|
|
|
|
|
jcgj.setJcnr(JctUtil.formatStr(jcnrMap)); |
|
|
|
|
|
jcgj.setJcmcys(JcmcysEnum.green.getValue()); |
|
|
|
|
|
jcgj.setQmyy("处置"); |
|
|
|
|
|
jcgj.setQmrId(qmr.getUserId()); |
|
|
|
|
|
jcgj.setQmrMc(qmr.getNickName()); |
|
|
|
|
|
jcgjList.add(jcgj); |
|
|
|
|
|
|
|
|
|
|
|
// 台账 |
|
|
|
|
|
SjTz sjTz = new SjTz(); |
|
|
|
|
|
sjTz.setSjId(sj.getId()); |
|
|
|
|
|
sjTz.setQmrId(qmr.getUserId()); |
|
|
|
|
|
sjTz.setQmrMc(qmr.getNickName()); |
|
|
|
|
|
sjTz.setQmyy("处置"); |
|
|
|
|
|
sjTz.setCzl(sj.getKc()); |
|
|
|
|
|
sjTz.setCzldw(sj.getKcdw()); |
|
|
|
|
|
tzList.add(sjTz); |
|
|
|
|
|
} |
|
|
|
|
|
baseMapper.updateKcBatch(studyFormFillCz.getList(), "0"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
sjJcgjService.saveBatch(jcgjList); |
|
|
|
|
|
sjTzService.saveBatch(tzList); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |