diff --git a/lis-common/src/main/java/com/czlis/common/core/controller/BaseController.java b/lis-common/src/main/java/com/czlis/common/core/controller/BaseController.java index f14f013..4a70027 100644 --- a/lis-common/src/main/java/com/czlis/common/core/controller/BaseController.java +++ b/lis-common/src/main/java/com/czlis/common/core/controller/BaseController.java @@ -4,11 +4,7 @@ import java.beans.PropertyEditorSupport; import java.util.Date; import java.util.List; -import com.czlis.common.core.domain.Result; -import com.czlis.common.core.domain.ResultT; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import com.github.pagehelper.PageHelper; @@ -183,20 +179,5 @@ public class BaseController { } - /** - * 带泛型的转换(精细化转换) - */ - public static ResultT toResultT(Result oldResult, Class clazz) { - // 1. 空值校验:避免 oldResult 为 null 导致 NPE - if (oldResult == null) { - return ResultT.error("旧 Result 对象不能为空"); - } - // 2. 调用 ResultT.fromResult(已实现类型校验+空值处理) - try { - return ResultT.fromResult(oldResult, clazz); - } catch (IllegalArgumentException e) { - // 3. 类型不匹配时的兜底:返回错误结果,避免接口直接抛异常 - return ResultT.error("Result 转换失败:" + e.getMessage()); - } - } + } diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkBase.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkBase.java index f49e4ac..8656daa 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkBase.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisWorkBase.java @@ -33,7 +33,7 @@ public class LisWorkBase { return IpUtils.getIpAddr(); } /**获取当前登录的医疗机构**/ - String getYLJG(){ + public String getYLJG(){ return loginConfigParamUtil.getLoginConfigParam().getLoginYLJG(); } /**获取当前会话循环次数**/ diff --git a/liswork/src/main/java/com/czlis/liswork/controller/work/LisWorkController.java b/liswork/src/main/java/com/czlis/liswork/controller/work/LisWorkController.java index dabe5ea..696f342 100644 --- a/liswork/src/main/java/com/czlis/liswork/controller/work/LisWorkController.java +++ b/liswork/src/main/java/com/czlis/liswork/controller/work/LisWorkController.java @@ -9,6 +9,7 @@ import com.czlis.common.core.domain.entity.lis.LabReqmain; import com.czlis.common.core.domain.entity.lis.LabResult; import com.czlis.common.core.page.TableDataInfo; import com.czlis.common.enums.BusinessType; +import com.czlis.common.utils.SecurityUtils; import com.czlis.interfaceCommon.constants.SysLogConstants; import com.czlis.liswork.service.LabResultService; import com.czlis.liswork.service.LisWorkService; @@ -210,9 +211,19 @@ public class LisWorkController extends BaseController { public Result setiteminter(Date jyrq, String yq, String ybh, String xmdh, String xmdh0) { return lisWorkService.setiteminter(jyrq, yq, ybh, xmdh, xmdh0); } - @ApiOperation("签收条码") + @ApiOperation("自动签收条码") + @GetMapping("/autosavebarcode") + public ResultT autosavebarcode(String sqh) { + return ResultT.fromResult(lisWorkService.autosavebarcode(sqh),LabReqmain.class); + } + @ApiOperation("手动保存签收条码") + @GetMapping("/savebarcode") + public Result savebarcode(String[] sqh,String yhdh) { + return lisWorkService.savebarcode(sqh,yhdh); + } + @ApiOperation("查询条码") @GetMapping("/querybarcode") - public ResultT querybarcode(String sqh) { - return toResultT(lisWorkService.querybarcode(sqh),LabReqmain.class); + public ResultT querybarcode(String sqh) { + return ResultT.fromResult(lisWorkService.querybarcode(sqh),LabReqmain.class); } } diff --git a/liswork/src/main/java/com/czlis/liswork/service/LisWorkService.java b/liswork/src/main/java/com/czlis/liswork/service/LisWorkService.java index 0daf888..6c8d9d9 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/LisWorkService.java +++ b/liswork/src/main/java/com/czlis/liswork/service/LisWorkService.java @@ -32,4 +32,7 @@ public interface LisWorkService { Result setiteminter(Date jyrq, String yq,String ybh,String xmdh,String xmdh0); Result clearprintflag(Date jyrq, String yq,String ybh); Result querybarcode(String sqh); + Result autosavebarcode(String sqh); + Result savebarcode(String[] sqhlist,String yhdh); + } diff --git a/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkServiceImpl.java b/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkServiceImpl.java index 5fecd1a..fe18e65 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkServiceImpl.java +++ b/liswork/src/main/java/com/czlis/liswork/service/impl/LisWorkServiceImpl.java @@ -1,6 +1,7 @@ package com.czlis.liswork.service.impl; import com.czlis.common.core.domain.Result; +import com.czlis.common.core.domain.ResultT; import com.czlis.common.core.domain.entity.*; import com.czlis.common.core.domain.entity.lis.*; import com.czlis.common.enums.UserStatus; @@ -23,6 +24,7 @@ import com.czlis.liswork.service.LisWorkService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.stream.Collectors; @@ -611,6 +613,37 @@ public class LisWorkServiceImpl implements LisWorkService { } return new Result("0", "成功!"); } + + /** + * 自动保存签收 + * @param sqh 条码 + * @return 返回申请单 + */ + @Override + public Result autosavebarcode(String sqh){ + String yhdh = SecurityUtils.getUsername(); + //1.调用接口,获取申请单信息 + Result result=querybarcode(sqh); + if(!"0".equals(result.getCode()))return result; + LabReqmain labReqmainOne =(LabReqmain)result.getData(); + if (labReqmainOne == null) { + return new Result("-1",sqh+"无数据,处理失败"); + } + //2.调用接口,执行申请单收费 + Result result0=reqbilling(labReqmainOne, yhdh); + if (!result0.getCode().equals("0")) return result0; + //3.保存申请单状态,记录日志 + if (savereqmain(labReqmainOne, yhdh) != 0) { + return new Result("-1",sqh+"保存申请单状态失败"+result0.getMsg()); + } + return new Result("0","成功",labReqmainOne); + } + + /** + * 查询条码 + * @param sqh 条码号 + * @return 返回申请单信息 + */ @Override public Result querybarcode(String sqh) { String yhdh = SecurityUtils.getUsername(); @@ -650,27 +683,113 @@ public class LisWorkServiceImpl implements LisWorkService { return new Result("-1", "当前条码已签收过了,禁止签收,上次签收时间为:"+sj); } } - int zx=reqbilling(labReqmainOne); - if(zx==-1)return new Result("-1", "申请单执行失败,禁止签收!"); - if ("2".equals(zt)){ - Date jssj=labReqmainOne.getJssj(); - String sj= DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",jssj); - return new Result("3", "当前条码已签收过了时间为:"+sj,labReqmainOne); - } return new Result("0", "成功!",labReqmainOne); } - public int reqbilling(LabReqmain labReqmain){ - String yhdh = SecurityUtils.getUsername(); + + /** + * 批量保存申请单信息 + * @param sqhlist 申请单列表 + * @param yhdh 保存者 + * @return + */ + @Override + public Result savebarcode(String[] sqhlist,String yhdh) { + String errmsg=""; + // 1. 入参校验:避免空指针 + if (sqhlist == null || sqhlist.length == 0) { + return new Result("0", "条码列表不能为空"); + } + if (yhdh == null || yhdh.isEmpty()) { + return new Result("0", "用户编号不能为空"); + } + // 2. 用List替代数组,避免空间浪费 + List failList = new ArrayList<>(); // 失败条码 + List successList = new ArrayList<>(); // 成功条码 + + // 3. 遍历处理每个条码 + for (String sqh : sqhlist) { + // 1.跳过空条码 + if (sqh == null || sqh.isEmpty()) { + failList.add("空条码"); + continue; + } + LabReqmain labReqmainOne = commonUtil.getLabReqmainOne(sqh); + //2.调用接口,执行申请单收费 + Result result0=reqbilling(labReqmainOne, yhdh); + if (!result0.getCode().equals("0")) { + errmsg=errmsg+"\n"+sqh+result0.getMsg(); + failList.add(sqh); + continue; + } + //3.保存申请单状态,记录日志 + if (savereqmain(labReqmainOne, yhdh) != 0) { + errmsg=errmsg+"\n"+sqh+"保存申请单状态失败"; + failList.add(sqh); + continue; + } + if (!result0.getCode().equals("0")) { + errmsg=errmsg+"\n"+sqh+result0.getMsg(); + failList.add(sqh); + continue; + } + successList.add(sqh); + } + // 5. 返回泛型结果 + String msg = String.format("保存完毕,共成功 %d 笔,失败 %d 笔"+errmsg, successList.size(), failList.size()); + if (failList.size() > 0) { + return new Result("-1", msg,failList); + } + return new Result("0", "保存成功!共处理 " + successList.size() + " 笔"); + } + /** + * 执行申请单收费接口 + * @param labReqmain 申请单 + * @param yhdh 操作人 + * @return 申请单 + */ + public Result reqbilling(LabReqmain labReqmain,String yhdh){ String sqh=labReqmain.getSqh(); //3.调用his执行申请单 SetReqStatus setReqStatus = new SetReqStatus(); - setReqStatus.setIp(""); + setReqStatus.setIp(lisWorkUtils.getIP()); setReqStatus.setSqh(sqh); setReqStatus.setUserid(yhdh); setReqStatus.setStatus(LabReqmainConstants.SIGNFOR); - Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.SETREQSTATUS, setReqStatus); - if (!result.getCode().equals("0")) return -1; - return 0; + return lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.SETREQSTATUS, setReqStatus); } + /** + * 修改申请单签收状态 + * @param labReqmain 申请单表 + * @param yhdh 操作者 + * @return 成功 + */ + @Transactional(rollbackFor = Exception.class) + public int savereqmain(LabReqmain labReqmain,String yhdh){ + String zt=labReqmain.getZt(); + if(zt==null)return -1; + if("9".equals(zt))return -1; + if("4".equals(zt))return 0; + if("2".equals(zt)) { + Date zxsj=labReqmain.getZxsj(); + Date cysj=labReqmain.getCysj(); + Date jssj=labReqmain.getJssj(); + Date bbsjsj=labReqmain.getBbsjsj(); + boolean changefalg=false; + if(jssj!=null) { + if(bbsjsj!=null&&bbsjsj.after(jssj))changefalg=true; + if(cysj!=null&&cysj.after(jssj))changefalg=true; + if(zxsj!=null&&zxsj.after(jssj))changefalg=true; + } + if(!changefalg) return 0; + } + String sqh=labReqmain.getSqh(); + labReqmain.setZt(LabReqmainConstants.SIGNFOR); + labReqmain.setJsys(yhdh); + labReqmain.setQsyljg(lisWorkUtils.getYLJG()); + labReqmain.setJssj(new Date()); + commonUtil.updateLabReqmain(labReqmain); + lisWorkUtils.setlabReqsteplog(sqh,"2",yhdh); + return 0; + } }