This commit is contained in:
tangw 2026-01-28 18:49:10 +08:00
parent da02be6aba
commit 7f2d6c5c3e
5 changed files with 151 additions and 37 deletions

View File

@ -4,11 +4,7 @@ import java.beans.PropertyEditorSupport;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import com.czlis.common.core.domain.Result;
import com.czlis.common.core.domain.ResultT;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.InitBinder;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
@ -183,20 +179,5 @@ public class BaseController {
} }
/**
* 带泛型的转换(精细化转换)
*/
public static <T> ResultT<T> toResultT(Result oldResult, Class<T> 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());
}
}
} }

View File

@ -33,7 +33,7 @@ public class LisWorkBase {
return IpUtils.getIpAddr(); return IpUtils.getIpAddr();
} }
/**获取当前登录的医疗机构**/ /**获取当前登录的医疗机构**/
String getYLJG(){ public String getYLJG(){
return loginConfigParamUtil.getLoginConfigParam().getLoginYLJG(); return loginConfigParamUtil.getLoginConfigParam().getLoginYLJG();
} }
/**获取当前会话循环次数**/ /**获取当前会话循环次数**/

View File

@ -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.domain.entity.lis.LabResult;
import com.czlis.common.core.page.TableDataInfo; import com.czlis.common.core.page.TableDataInfo;
import com.czlis.common.enums.BusinessType; import com.czlis.common.enums.BusinessType;
import com.czlis.common.utils.SecurityUtils;
import com.czlis.interfaceCommon.constants.SysLogConstants; import com.czlis.interfaceCommon.constants.SysLogConstants;
import com.czlis.liswork.service.LabResultService; import com.czlis.liswork.service.LabResultService;
import com.czlis.liswork.service.LisWorkService; 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) { public Result setiteminter(Date jyrq, String yq, String ybh, String xmdh, String xmdh0) {
return lisWorkService.setiteminter(jyrq, yq, ybh, xmdh, xmdh0); return lisWorkService.setiteminter(jyrq, yq, ybh, xmdh, xmdh0);
} }
@ApiOperation("签收条码") @ApiOperation("自动签收条码")
@GetMapping("/autosavebarcode")
public ResultT<LabReqmain> 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") @GetMapping("/querybarcode")
public ResultT<LabReqmain> querybarcode(String sqh) { public ResultT querybarcode(String sqh) {
return toResultT(lisWorkService.querybarcode(sqh),LabReqmain.class); return ResultT.fromResult(lisWorkService.querybarcode(sqh),LabReqmain.class);
} }
} }

View File

@ -32,4 +32,7 @@ public interface LisWorkService {
Result setiteminter(Date jyrq, String yq,String ybh,String xmdh,String xmdh0); Result setiteminter(Date jyrq, String yq,String ybh,String xmdh,String xmdh0);
Result clearprintflag(Date jyrq, String yq,String ybh); Result clearprintflag(Date jyrq, String yq,String ybh);
Result querybarcode(String sqh); Result querybarcode(String sqh);
Result autosavebarcode(String sqh);
Result savebarcode(String[] sqhlist,String yhdh);
} }

View File

@ -1,6 +1,7 @@
package com.czlis.liswork.service.impl; package com.czlis.liswork.service.impl;
import com.czlis.common.core.domain.Result; 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.*;
import com.czlis.common.core.domain.entity.lis.*; import com.czlis.common.core.domain.entity.lis.*;
import com.czlis.common.enums.UserStatus; import com.czlis.common.enums.UserStatus;
@ -23,6 +24,7 @@ import com.czlis.liswork.service.LisWorkService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -611,6 +613,37 @@ public class LisWorkServiceImpl implements LisWorkService {
} }
return new Result("0", "成功!"); 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 @Override
public Result querybarcode(String sqh) { public Result querybarcode(String sqh) {
String yhdh = SecurityUtils.getUsername(); String yhdh = SecurityUtils.getUsername();
@ -650,27 +683,113 @@ public class LisWorkServiceImpl implements LisWorkService {
return new Result("-1", "当前条码已签收过了,禁止签收,上次签收时间为:"+sj); 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); 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<String> failList = new ArrayList<>(); // 失败条码
List<String> 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(); String sqh=labReqmain.getSqh();
//3.调用his执行申请单 //3.调用his执行申请单
SetReqStatus setReqStatus = new SetReqStatus(); SetReqStatus setReqStatus = new SetReqStatus();
setReqStatus.setIp(""); setReqStatus.setIp(lisWorkUtils.getIP());
setReqStatus.setSqh(sqh); setReqStatus.setSqh(sqh);
setReqStatus.setUserid(yhdh); setReqStatus.setUserid(yhdh);
setReqStatus.setStatus(LabReqmainConstants.SIGNFOR); setReqStatus.setStatus(LabReqmainConstants.SIGNFOR);
Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.SETREQSTATUS, setReqStatus); return lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.SETREQSTATUS, setReqStatus);
if (!result.getCode().equals("0")) return -1;
return 0;
} }
/**
* 修改申请单签收状态
* @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;
}
} }