package com.ltkj.hosp.service.impl; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ltkj.common.core.domain.AjaxResult; import com.ltkj.common.utils.DateUtils; import com.ltkj.hosp.idutil.IdUtils; import com.ltkj.hosp.service.ITjCustomerService; import com.ltkj.hosp.service.ITjOrderService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ltkj.hosp.mapper.TjSamplingMapper; import com.ltkj.hosp.domain.TjSampling; import com.ltkj.hosp.service.ITjSamplingService; import org.springframework.transaction.annotation.Transactional; /** * 体检采样管理Service业务层处理 * * @author ltkj_赵佳豪&李格 * @date 2023-04-11 */ @Slf4j @Service public class TjSamplingServiceImpl extends ServiceImpl implements ITjSamplingService { @Autowired private TjSamplingMapper tjSamplingMapper; @Autowired private IdUtils idUtils; @Autowired private ITjOrderService orderService; @Autowired private ITjCustomerService customerService; /** * 查询体检采样管理 * * @param id 体检采样管理主键 * @return 体检采样管理 */ @Override public TjSampling selectTjSamplingById(String id) { return tjSamplingMapper.selectTjSamplingById(id); } /** * 查询体检采样管理列表 * * @param tjSampling 体检采样管理 * @return 体检采样管理 */ @Override public List selectTjSamplingList(TjSampling tjSampling) { return tjSamplingMapper.selectTjSamplingList(tjSampling); } /** * 新增体检采样管理 * * @param tjSampling 体检采样管理 * @return 结果 */ @Override public int insertTjSampling(TjSampling tjSampling) { tjSampling.setCreateTime(DateUtils.getNowDate()); return tjSamplingMapper.insertTjSampling(tjSampling); } /** * 修改体检采样管理 * * @param tjSampling 体检采样管理 * @return 结果 */ @Override public int updateTjSampling(TjSampling tjSampling) { tjSampling.setUpdateTime(DateUtils.getNowDate()); return tjSamplingMapper.updateTjSampling(tjSampling); } /** * 批量删除体检采样管理 * * @param ids 需要删除的体检采样管理主键 * @return 结果 */ @Override public int deleteTjSamplingByIds(String[] ids) { return tjSamplingMapper.deleteTjSamplingByIds(ids); } /** * 删除体检采样管理信息 * * @param id 体检采样管理主键 * @return 结果 */ @Override public int deleteTjSamplingById(String id) { return tjSamplingMapper.deleteTjSamplingById(id); } @Override public Map hebingCaiYangInFo(List ids) { return tjSamplingMapper.hebingCaiYangInFo(ids); } @Override public int panduanshifoukeyihebing(List ids) { return tjSamplingMapper.panduanshifoukeyihebing(ids); } @Override public boolean updateHeBingXm(List ids, String parentId) { return tjSamplingMapper.updateHeBingXm(ids,parentId); } @Override public int pdsfczhbxm(List ids) { return tjSamplingMapper.pdsfczhbxm(ids); } @Override public TjSampling getTjSamplingByHb(List ids) { return tjSamplingMapper.getTjSamplingByHb(ids); } @Override public List getTjSamplingListByHb(List ids) { return tjSamplingMapper.getTjSamplingListByHb(ids); } @Override public boolean deletedTjSamplingListByHb(List ids) { return tjSamplingMapper.deletedTjSamplingListByHb(ids); } @Override public boolean updateHeBingXm(List ids) { return tjSamplingMapper.updateHeBingXms(ids); } @Override public String getBuKeHebingProName(List ids) { return tjSamplingMapper.getBuKeHebingProName(ids); } @Transactional @Override public AjaxResult mergeCaiYangTran(List ids,String prefix) { return mergeCaiYang(ids,prefix); } @Override public String mergeCaiYangApi(List ids,String prefix) { AjaxResult ajaxResult = mergeCaiYang(ids,prefix); log.info("合并采样返回 ->{}",ajaxResult); return ajaxResult.get("data").toString(); } private AjaxResult mergeCaiYang(List ids,String prefix) { try { if (null != ids && !ids.isEmpty()) { if(ids.size()==1) return AjaxResult.error("请选择至少两条项目进行合并!"); int i = panduanshifoukeyihebing(ids); if (i > 1) { return AjaxResult.error("标本类型不一致,不可合并"); } int pdsfczhbxm = pdsfczhbxm(ids); if (pdsfczhbxm == ids.size()) return AjaxResult.error("多个合并项目不可再继续合并!"); if (pdsfczhbxm > 1) return AjaxResult.error("最多允许选择一个合并过的项目!"); // 查询出里面不可合并的化验项目 String string = getBuKeHebingProName(ids); if(null !=string){ return AjaxResult.error(string + "这几个项目不可合并!"); } if (pdsfczhbxm == 0) { TjSampling tjSampling = getById(ids.get(0)); Map map = hebingCaiYangInFo(ids); TjSampling sampling = new TjSampling(); String proId = map.get("proId").toString(); String proName = map.get("proName").toString(); BeanUtil.copyProperties(tjSampling, sampling, new String[]{"id"}); sampling.setProId(proId); sampling.setProName(proName); sampling.setIsMerge(1); sampling.setJyxh(idUtils.generateLisID(prefix)); if (save(sampling)) { if (updateHeBingXm(ids, sampling.getId())) { return AjaxResult.success("合并项目成功!", sampling.getId()); } } return AjaxResult.error("操作失败!"); } else { TjSampling tjSampling = getTjSamplingByHb(ids); List samplingList = getTjSamplingListByHb(ids); if (null != tjSampling && null != samplingList && !samplingList.isEmpty()) { List stringList = samplingList.stream().map(TjSampling::getId).collect(Collectors.toList()); Map map = hebingCaiYangInFo(stringList); String proId = map.get("proId").toString(); String proName = map.get("proName").toString(); tjSampling.setProId(proId); tjSampling.setProName(proName); if (updateById(tjSampling)) { if (updateHeBingXm(stringList, tjSampling.getParentId())) { return AjaxResult.success("合并项目成功!", tjSampling.getId()); } } } return AjaxResult.error("操作失败!"); } } } catch (Exception e) { log.error(e.getMessage()); } return AjaxResult.error("请选择你要合并的项目!!!"); } @Override public int isMergeItem(String id) { return baseMapper.isMergeItem(id); } @Override public int isExistProId(String tjh, String proId) { return baseMapper.isExistProId(tjh,proId); } }