From dbc11598957806965ec0e6b15c91f3d017d5759f Mon Sep 17 00:00:00 2001 From: zhaowenxuan <chacca165@163.com> Date: 星期五, 03 一月 2025 20:16:53 +0800 Subject: [PATCH] 20250103 --- ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjSamplingController.java | 322 ++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 231 insertions(+), 91 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjSamplingController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjSamplingController.java index 5546370..23e430e 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjSamplingController.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjSamplingController.java @@ -1,36 +1,39 @@ package com.ltkj.web.controller.system; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import javax.annotation.Resource; +import javax.servlet.ServletSecurityElement; import javax.servlet.http.HttpServletResponse; import javax.swing.plaf.basic.BasicScrollPaneUI; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.pinyin.PinyinUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ltkj.common.core.redis.RedisCache; +import com.ltkj.common.utils.IdUtils; import com.ltkj.framework.config.MatchUtils; -import com.ltkj.hosp.domain.TbTransition; -import com.ltkj.hosp.domain.TjCustomer; -import com.ltkj.hosp.domain.TjProject; -import com.ltkj.hosp.service.ITjCustomerService; -import com.ltkj.hosp.service.ITjProjectService; -import com.ltkj.hosp.service.TjAsyncService; +import com.ltkj.hosp.domain.*; +import com.ltkj.hosp.service.*; +import com.ltkj.system.service.ISysConfigService; +import com.ltkj.web.controller.lis.LisApiMethod; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import lombok.extern.slf4j.Slf4j; import org.aspectj.weaver.AjAttribute; +import org.springframework.beans.BeanUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.web.bind.annotation.*; import com.ltkj.common.annotation.Log; import com.ltkj.common.core.controller.BaseController; import com.ltkj.common.core.domain.AjaxResult; import com.ltkj.common.enums.BusinessType; -import com.ltkj.hosp.domain.TjSampling; -import com.ltkj.hosp.service.ITjSamplingService; import com.ltkj.common.utils.poi.ExcelUtil; import com.ltkj.common.core.page.TableDataInfo; @@ -40,9 +43,10 @@ * @author ltkj_璧典匠璞�&鏉庢牸 * @date 2023-04-11 */ +@Slf4j @RestController @RequestMapping("/sampling/sampling") -@Api(tags = "浣撴閲囨牱绠$悊") +@Api(tags = "PC绔� 浣撴閲囨牱绠$悊") public class TjSamplingController extends BaseController { @Resource private ITjSamplingService tjSamplingService; @@ -54,20 +58,30 @@ private TjAsyncService asyncService; @Resource private RedisCache redisCache; + @Autowired + private ITjOrderService orderService; + @Autowired + private ITbTransitionService tbTransitionService; + @Autowired + private LisApiMethod lisApiMethod; + @Autowired + private ISysConfigService configService; + @Autowired + private SamplingServiceApi samplingService; /** * 鏌ヨ浣撴閲囨牱绠$悊鍒楄〃 */ - @PreAuthorize("@ss.hasPermi('sampling:sampling:list')") + //@PreAuthorize("@ss.hasPermi('sampling:sampling:list')") @GetMapping("/list") @ApiOperation(value = "鏌ヨ浣撴閲囨牱绠$悊鍒楄〃(鑷甫榛樿)") public TableDataInfo list(TjSampling tjSampling) { startPage(); List<TjSampling> list = tjSamplingService.selectTjSamplingList(tjSampling); - if(null !=list && list.size()>0 ){ + if (null != list && list.size() > 0) { for (TjSampling sampling : list) { TjCustomer customer = customerService.getById(sampling.getCusId()); - if(null !=customer){ + if (null != customer) { sampling.setCustomer(customer); } } @@ -85,57 +99,68 @@ @ApiParam(value = "鏄剧ず鏉℃暟(榛樿10)") @RequestParam(defaultValue = "10") Integer pageSize, @ApiParam(value = "寮�濮嬫椂闂�") @RequestParam(required = false) String beginTime, @ApiParam(value = "缁撴潫鏃堕棿") @RequestParam(required = false) String endTime) { - LambdaQueryWrapper<TjSampling>wq=new LambdaQueryWrapper<>(); - List<Map<String,Object>> arrayList=new ArrayList<>(); + LambdaQueryWrapper<TjSampling> wq = new LambdaQueryWrapper<>(); + List<Map<String, Object>> arrayList = new ArrayList<>(); wq.orderByDesc(TjSampling::getApplicationTime); - if(null !=beginTime && !"".equals(beginTime) && null !=endTime && !"".equals(endTime)) wq.between(TjSampling::getApplicationTime,beginTime,endTime); - if(null !=tjNum){ - wq.eq(TjSampling::getTjNum,tjNum); + if (null != beginTime && !"".equals(beginTime) && null != endTime && !"".equals(endTime)) + wq.between(TjSampling::getApplicationTime, beginTime, endTime); + if (null != tjNum) { + wq.eq(TjSampling::getTjNum, tjNum); + wq.eq(TjSampling::getIsSignFor, isSignFor); List<TjSampling> list = tjSamplingService.list(wq); - List<Map<String, Object>> extracted = extracted(arrayList, list,pageNum,pageSize); - return AjaxResult.success(extracted); + List<Map<String, Object>> extracted = extracted(arrayList, list, pageNum, pageSize); + + //________________________瑙e喅鎼滅储鏁版嵁涓嶅 + Map<String, Object> map = new HashMap<>(); + map.put("list", extracted); + map.put("total", arrayList.size()); + return AjaxResult.success(map); + //________________________瑙e喅鎼滅储鏁版嵁涓嶅 } - if(null !=name){ - wq.like(TjSampling::getCusName,name); + if (null != name) { + wq.like(TjSampling::getCusName, name); + wq.eq(TjSampling::getIsSignFor, isSignFor); List<TjSampling> list = tjSamplingService.list(wq); - List<Map<String, Object>> extracted = extracted(arrayList, list,pageNum,pageSize); - return AjaxResult.success(extracted); + List<Map<String, Object>> extracted = extracted(arrayList, list, pageNum, pageSize); + + //________________________瑙e喅鎼滅储鏁版嵁涓嶅 + Map<String, Object> map = new HashMap<>(); + map.put("list", extracted); + map.put("total", arrayList.size()); + return AjaxResult.success(map); + //________________________瑙e喅鎼滅储鏁版嵁涓嶅 } - List<Map<String, Object>> cacheMapValue =null; - if(isSignFor==0) { + List<Map<String, Object>> cacheMapValue = null; + if (isSignFor == 0) { cacheMapValue = redisCache.getCacheMapValue("sampling", "yqs"); } - if(isSignFor==1) { - cacheMapValue = redisCache.getCacheMapValue("sampling", "wqs"); + if (isSignFor == 1) { + cacheMapValue = redisCache.getCacheMapValue("sampling", "wqs"); } asyncService.saveSampling(); - List<Map<String,Object>> collect =new ArrayList<>(); - Map<String,Object>map=new HashMap<>(); - if(null ==cacheMapValue || cacheMapValue.size()==0){ - wq.eq(TjSampling::getIsSignFor,isSignFor); + List<Map<String, Object>> collect = null; + Map<String, Object> map = new HashMap<>(); + if (null == cacheMapValue || cacheMapValue.size() == 0) { + wq.eq(TjSampling::getIsSignFor, isSignFor); List<TjSampling> list = tjSamplingService.list(wq); - collect = extracted(arrayList, list,pageNum,pageSize); - map.put("total",arrayList.size()); - }else { + collect = extracted(arrayList, list, pageNum, pageSize); + map.put("total", arrayList.size()); + } else { collect = cacheMapValue.stream().skip((long) (pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList()); - map.put("total",cacheMapValue.size()); + map.put("total", cacheMapValue.size()); } - if (collect!=null){ - map.put("list",collect); - }else { - map.put("list",new ArrayList<Map<String,Object>>()); - } + map.put("list", collect); return AjaxResult.success(map); } - private List<Map<String,Object>> extracted(List<Map<String, Object>> arrayList, List<TjSampling> list,Integer pageNum,Integer pageSize) { - if(null != list && list.size()>0 ){ + private List<Map<String, Object>> extracted(List<Map<String, Object>> arrayList, List<TjSampling> list, Integer pageNum, Integer pageSize) { + if (null != list && list.size() > 0) { Map<String, List<TjSampling>> stringListMap = list.stream().collect(Collectors.groupingBy(TjSampling::getCusId)); for (Map.Entry<String, List<TjSampling>> entry : stringListMap.entrySet()) { - Map<String,Object>map=new HashMap<>(); + Map<String, Object> map = new HashMap<>(); TjCustomer customer = customerService.getById(entry.getKey()); - if (customer==null){ + if (customer == null) { continue; } customer.setCusName(MatchUtils.hideCusName(customer.getCusName())); @@ -144,32 +169,173 @@ customer.setTjNumber(entry.getValue().get(0).getTjNum()); customer.setApplicationTime(entry.getValue().get(0).getApplicationTime()); List<TjSampling> samplings = entry.getValue(); - if(null !=samplings && samplings.size()>0){ - List<TjSampling> projectList=new ArrayList<>(); + if (null != samplings && samplings.size() > 0) { + List<TjSampling> projectList = new ArrayList<>(); for (TjSampling sampling : samplings) { sampling.setCusName(MatchUtils.hideCusName(sampling.getCusName())); TjProject project = projectService.getById(sampling.getProId()); - if(null !=project && project.getProParentId()==0){ + if (null != project && project.getProParentId() == 0) { projectList.add(sampling); } } - map.put("list",projectList); + map.put("list", projectList); } - map.put("customer",customer); + map.put("customer", customer); arrayList.add(map); } } - List<Map<String, Object>> collect =null; - if(null !=arrayList && arrayList.size()>0){ - collect = arrayList.stream().skip((long) (pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList()); + List<Map<String, Object>> collect = null; + if (null != arrayList && arrayList.size() > 0) { + collect = arrayList.stream().skip((long) (pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList()); } return collect; } /** + * 鑾峰彇閲囨牱瀹㈡埛鍒楄〃 + * + * @param isSignFor + * @param tjNum + * @param name + * @param pageNum + * @param pageSize + * @param beginTime + * @param endTime + * @return + */ + @GetMapping("/getCusList") + @ApiOperation(value = "鑾峰彇閲囨牱瀹㈡埛鍒楄〃") + public AjaxResult getCusList(@RequestParam(defaultValue = "1") @ApiParam(value = "0鏄�1鍚�") Integer isSignFor, + @RequestParam(required = false) @ApiParam(value = "浣撴鍙�") String tjNum, + @RequestParam(required = false) @ApiParam(value = "瀹㈡埛濮撳悕") String name, + @ApiParam(value = "椤电爜鏁�(榛樿1)") @RequestParam(defaultValue = "1") Integer pageNum, + @ApiParam(value = "鏄剧ず鏉℃暟(榛樿10)") @RequestParam(defaultValue = "10") Integer pageSize, + @ApiParam(value = "寮�濮嬫椂闂�") @RequestParam(required = false) String beginTime, + @ApiParam(value = "缁撴潫鏃堕棿") @RequestParam(required = false) String endTime) { + Page<TjSampling> samplingPage = new Page<>(pageNum, pageSize); + LambdaQueryWrapper<TjSampling> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(TjSampling::getIsSignFor, isSignFor); + if (null != tjNum && StrUtil.isNotBlank(tjNum)) + wrapper.like(TjSampling::getTjNum, tjNum); + if (null != name && StrUtil.isNotBlank(name)) + wrapper.like(TjSampling::getCusName, name); + if (null != beginTime && null != endTime && StrUtil.isNotBlank(beginTime) && StrUtil.isNotBlank(endTime)) + wrapper.between(TjSampling::getApplicationTime, beginTime, endTime); + wrapper.groupBy(TjSampling::getCusId); + wrapper.orderByDesc(TjSampling::getCreateTime); +// wrapper.last("LIMIT " + (pageNum - 1) * pageSize + "," + pageSize); + Page<TjSampling> page = tjSamplingService.page(samplingPage, wrapper); + List<TjSampling> list = page.getRecords(); + ArrayList<TjCustomer> tjCustomers = new ArrayList<>(); + for (TjSampling tjSampling : list) { + TjCustomer customer = customerService.getById(tjSampling.getCusId()); + if(null !=customer){ + customer.setCusName(customer.getCusName()); + customer.setCusPhone(MatchUtils.hidePhoneNum(customer.getCusPhone())); + customer.setCusIdcard(MatchUtils.hideIdCardNum(customer.getCusIdcard())); + customer.setTjNumber(tjSampling.getTjNum()); + customer.setApplicationTime(tjSampling.getApplicationTime()); + tjCustomers.add(customer); + } + } + HashMap<String, Object> hashMap = new HashMap<>(); + hashMap.put("list", tjCustomers); + hashMap.put("total", page.getTotal()); + return AjaxResult.success(hashMap); + } + + /** + * 鏍规嵁瀹㈡埛鑾峰彇閲囨牱鍒楄〃 + * + * @param tjNumber + * @return + */ + @GetMapping("/getCusCyList") + @ApiOperation(value = "鏍规嵁瀹㈡埛鑾峰彇閲囨牱鍒楄〃") + public AjaxResult getCusCyList(@RequestParam @ApiParam(value = "瀹㈡埛id") String tjNumber, + @RequestParam(defaultValue = "1") @ApiParam(value = "0鏄�1鍚�") Integer isSignFor) { + if (tjNumber == null || StrUtil.isBlank(tjNumber)) + return AjaxResult.error("鍙傛暟閿欒,鏈紶鍙傛暟"); + LambdaQueryWrapper<TjSampling> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(TjSampling::getTjNum, tjNumber); + wrapper.eq(TjSampling::getIsSignFor,isSignFor); + wrapper.and(i -> i.isNull(TjSampling::getParentId).or().eq(TjSampling::getIsMerge,1)); +// wrapper.eq(TjSampling::getIsPay,1); +// if (isSignFor == 1) +// wrapper.eq(TjSampling::getIsApply,0); + wrapper.orderByDesc(TjSampling::getIsMerge); + List<TjSampling> list = tjSamplingService.list(wrapper); + if (list.isEmpty()){ + logger.info("jtNum ->{}",tjNumber); +// return AjaxResult.error("鏈煡璇㈠埌鏁版嵁锛屼汉鍛樻湭缂磋垂鎴栨病鏈夋湭閲囨牱椤圭洰"); + return AjaxResult.error("鍙傛暟閿欒,鏈煡璇㈠埌鏁版嵁"); + } +// for (TjSampling sampling : list) { +// TjCustomer customer = customerService.getById(sampling.getCusId()); +// TjOrder order = orderService.getOrderByTjNum(sampling.getTjNum()); +// if(null !=order)sampling.setCardId(order.getCardId()); +// sampling.setCustomer(customer); +// } + + if (list.size() >= 2) { + // 杩涜鍚堝苟 + List<String> stringList = list.stream().map(TjSampling::getId).collect(Collectors.toList()); + log.info("鎻愬彇id ->{}",stringList); + for (String s : stringList) { + if (tjSamplingService.isMergeItem(s) != 0) { + list.removeIf(item -> Objects.equals(item.getId(), s)); + } + } + String lis_tmh_prefix = configService.selectConfigByKey("make_lis_tmh_prefix"); + Map<String, List<TjSampling>> map = list.stream().filter(i->StrUtil.isNotBlank(i.getSpecimenTypeCode())).collect(Collectors.groupingBy(item -> item.getSpecimenTypeCode())); + for (Map.Entry<String, List<TjSampling>> entry : map.entrySet()) { + List<TjSampling> entryValue = entry.getValue(); + tjSamplingService.mergeCaiYangTran(entryValue.stream().map(TjSampling::getId).collect(Collectors.toList()),lis_tmh_prefix); + } + } + wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(TjSampling::getTjNum, tjNumber); + wrapper.eq(TjSampling::getIsSignFor,isSignFor); + wrapper.and(i -> i.isNull(TjSampling::getParentId).or().eq(TjSampling::getIsMerge,1)); +// wrapper.orderByDesc(TjSampling::getIsMerge); + wrapper.orderByAsc(TjSampling::getSpecimenTypeCode,TjSampling::getIsMerge); + list = tjSamplingService.list(wrapper); + for (TjSampling sampling : list) { + TjCustomer customer = customerService.getById(sampling.getCusId()); + TjOrder order = orderService.getOrderByTjNum(sampling.getTjNum()); + if(null !=order)sampling.setCardId(order.getCardId()); + sampling.setCustomer(customer); + } + return AjaxResult.success(list); + } + + @PostMapping("/mergeCaiYang") + @ApiOperation(value = "閲囨牱鐧昏鍚堝苟椤圭洰鎺ュ彛") + public AjaxResult mergeCaiYang(@RequestBody List<String> ids) { + String lis_tmh_prefix = configService.selectConfigByKey("make_lis_tmh_prefix"); + return tjSamplingService.mergeCaiYangTran(ids,lis_tmh_prefix); + } + + + @PostMapping("/chexiaoCaiYang") + @ApiOperation(value = "鎾ら攢閲囨牱鐧昏鍚堝苟椤圭洰鎺ュ彛") + @Transactional + public AjaxResult chexiaoCaiYang(@RequestBody List<String> ids) { + if (null != ids && !ids.isEmpty()) { + int pdsfczhbxm = tjSamplingService.pdsfczhbxm(ids); + if (pdsfczhbxm != ids.size()) return AjaxResult.error("瀛樺湪鏈悎骞剁殑椤圭洰涓嶅彲鎾ら攢!!!"); + tjSamplingService.deletedTjSamplingListByHb(ids); + tjSamplingService.updateHeBingXm(ids); + return AjaxResult.success("鎾ら攢鎴愬姛!!!"); + } + return AjaxResult.error("璇烽�夋嫨浣犺鎾ら攢鐨勯」鐩�!!!"); + } + + + /** * 瀵煎嚭浣撴閲囨牱绠$悊鍒楄〃 */ - @PreAuthorize("@ss.hasPermi('sampling:sampling:export')") + //@PreAuthorize("@ss.hasPermi('sampling:sampling:export')") @Log(title = "浣撴閲囨牱绠$悊", businessType = BusinessType.EXPORT) @PostMapping("/export") @ApiOperation(value = "瀵煎嚭浣撴閲囨牱绠$悊鍒楄〃") @@ -182,7 +348,7 @@ /** * 鑾峰彇浣撴閲囨牱绠$悊璇︾粏淇℃伅 */ - @PreAuthorize("@ss.hasPermi('sampling:sampling:query')") + //@PreAuthorize("@ss.hasPermi('sampling:sampling:query')") @GetMapping(value = "/{id}") @ApiOperation(value = "鑾峰彇浣撴閲囨牱绠$悊璇︾粏淇℃伅") public AjaxResult getInfo(@PathVariable("id") String id) { @@ -192,7 +358,7 @@ /** * 鏂板浣撴閲囨牱绠$悊 */ - @PreAuthorize("@ss.hasPermi('sampling:sampling:add')") + //@PreAuthorize("@ss.hasPermi('sampling:sampling:add')") @Log(title = "浣撴閲囨牱绠$悊", businessType = BusinessType.INSERT) @PostMapping @ApiOperation(value = "鏂板浣撴閲囨牱绠$悊") @@ -203,7 +369,7 @@ /** * 淇敼浣撴閲囨牱绠$悊 */ - @PreAuthorize("@ss.hasPermi('sampling:sampling:edit')") + //@PreAuthorize("@ss.hasPermi('sampling:sampling:edit')") @Log(title = "浣撴閲囨牱绠$悊", businessType = BusinessType.UPDATE) @PutMapping @ApiOperation(value = "淇敼浣撴閲囨牱绠$悊") @@ -214,7 +380,7 @@ /** * 鍒犻櫎浣撴閲囨牱绠$悊 */ - @PreAuthorize("@ss.hasPermi('sampling:sampling:remove')") + //@PreAuthorize("@ss.hasPermi('sampling:sampling:remove')") @Log(title = "浣撴閲囨牱绠$悊", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") @ApiOperation(value = "鍒犻櫎浣撴閲囨牱绠$悊") @@ -223,41 +389,15 @@ } - /** * 纭閲囨牱鎺ュ彛 */ @PostMapping("/confirmSampling") @ApiOperation(value = "纭閲囨牱鎺ュ彛") + @Transactional public AjaxResult confirmSampling(@RequestBody List<String> ids) { - if(null==ids || ids.size()==0){ - return AjaxResult.error("璇烽�夋嫨瑕佺‘璁ら」"); - } - for (String id : ids) { - TjSampling sampling = tjSamplingService.getById(id); - if(null !=sampling){ - sampling.setIsSignFor("0"); - LambdaQueryWrapper<TjProject>wq=new LambdaQueryWrapper<>(); - wq.eq(TjProject::getProParentId,sampling.getProId()); - List<TjProject> projectList = projectService.list(wq); - List<String> collect = new ArrayList<>(); - for (TjProject project : projectList) { - Long proId = project.getProId(); - collect.add(String.valueOf(proId)); - } - LambdaQueryWrapper<TjSampling>wq1=new LambdaQueryWrapper<>(); - wq1.eq(TjSampling::getTjNum,sampling.getTjNum()); - wq1.in(TjSampling::getProId,collect); - List<TjSampling> samplingList = tjSamplingService.list(wq1); - if(null !=samplingList && samplingList.size()>0){ - for (TjSampling tjSampling : samplingList) { - tjSampling.setIsSignFor("0"); - tjSamplingService.updateById(tjSampling); - } - } - } - tjSamplingService.updateById(sampling); - } - return AjaxResult.success("鎿嶄綔鎴愬姛"); + String config = configService.selectConfigByKey("sfkqdyhis"); + String mergeRequest = configService.selectConfigByKey("use_lis_pacs_is_auto_merge_request"); + return samplingService.confirm(ids,config,mergeRequest); } } -- Gitblit v1.8.0