临床退血打印

This commit is contained in:
jiangs 2026-09-04 17:26:58 +08:00
parent 7f96cb848b
commit a0aca66d29
8 changed files with 46 additions and 7 deletions

View File

@ -28,4 +28,8 @@ public class BloodPrintTypeConstants {
* 临床发血单
*/
public static final String BLOOD_OUT = "BLOOD_OUT";
/**
* 临床退血单
*/
public static final String BLOOD_OUT_BACK = "BLOOD_OUT_BACK";
}

View File

@ -15,4 +15,5 @@ public class ReportParam {
private String billNo;
private String beinhosId;
private String bloodSum;
private String userName;
}

View File

@ -29,7 +29,7 @@
<if test="recycle_sign != null">recycle_sign = #{recycle_sign},</if>
<if test="Remark != null">Remark = #{Remark},</if>
hos_id = #{hos_id}
where blood_no = #{blood_no} and product_no = #{blood_no}
where blood_no = #{blood_no} and product_no = #{product_no}
</update>
<select id="queryOne" resultType="com.czblood.bus.pojo.XkBloodInfo">

View File

@ -11,6 +11,7 @@ import com.czblood.common.core.page.TableDataInfo;
import com.czblood.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@ -69,4 +70,12 @@ public class BackinController extends BaseController {
}
@ApiOperation("打印单据")
@GetMapping("/print")
public Result print(@ApiParam(value = "单据编号", required = true) String billNo, @ApiParam(value = "模板名称:BLOOD_OUT_BACK(退血单)", required = true) String templateName){
String userName = getLoginUser().getUser().getNickName();
return backinService.print(billNo,templateName,userName);
}
}

View File

@ -14,4 +14,5 @@ public interface BackinService {
Result deleteData(String billNo);
List<Map<String,Object>> queryList(BackinQueryVO backinQueryVO);
Result queryInfo(String billNo);
Result print(String billNo,String templateName,String userId);
}

View File

@ -1,12 +1,14 @@
package com.czblood.busBloodbank.service.impl;
import cn.hutool.core.date.DateUtil;
import com.czblood.bus.constants.BloodPrintTypeConstants;
import com.czblood.bus.mapper.*;
import com.czblood.bus.pojo.*;
import com.czblood.bus.pojo.inter.BloodBackAuditRequest;
import com.czblood.bus.pojo.xtwh.XkDmzd;
import com.czblood.bus.utils.BloodBankUtil;
import com.czblood.bus.utils.BloodInterfaceUtil;
import com.czblood.bus.utils.ReportUtil;
import com.czblood.busBloodbank.mapper.BackinMapper;
import com.czblood.busBloodbank.pojo.DTO.BackinDTO;
import com.czblood.busBloodbank.pojo.DTO.BackinDataDTO;
@ -47,6 +49,10 @@ public class BackinServiceImpl implements BackinService {
XkBloodInfoMapper xkBloodInfoMapper;
@Resource
XkOutDetailMapper xkOutDetailMapper;
@Resource
ReportUtil reportUtil;
@Resource
XkInstorageDetailMapper xkInstorageDetailMapper;
@Override
@ -106,10 +112,16 @@ public class BackinServiceImpl implements BackinService {
xkBackinMain.setBack_org(backinDataDTO.getUserId());
xkBackinMain.setInput_date(bloodBankUtil.getCurrentTimeDate());
xkBackinMain.setInput_person(backinDataDTO.getUserId());
BigDecimal totalMoney = BigDecimal.ZERO;
for (XkBackinDetail xkBackinDetail : xkBackinDetailList) {
List<XkInstorageDetail> xkInstorageDetailList = xkInstorageDetailMapper.queryByBloodNo(xkBackinDetail.getBlood_no(), xkBackinDetail.getProduct_no());
if(!xkInstorageDetailList.isEmpty()){
totalMoney = totalMoney.add(xkInstorageDetailList.get(0).getPrice());
xkBackinDetail.setPrice(xkInstorageDetailList.get(0).getPrice());
}
xkBackinDetail.setBill_no(newBillNo);
}
xkBackinMain.setTotal_money(totalMoney); //总金额
xkChargeMainTemp = new XkChargeMain();
xkChargeMainTemp.setBill_no(newChargeBillNo);
@ -243,6 +255,16 @@ public class BackinServiceImpl implements BackinService {
return new Result("0","查询成功!",backinDataDTO);
}
@Override
public Result print(String billNo,String templateName,String userName) {
ReportParam reportParam = new ReportParam();
reportParam.setBillNo(billNo);
reportParam.setUserName(userName);
Result result2 = reportUtil.printToPdf(BloodPrintTypeConstants.BLOOD_OUT_BACK, reportParam, true);
if(!result2.getCode().equals("0")) return new Result("-1",result2.getMsg());
return new Result("0","打印成功!");
}
@Transactional(rollbackFor = Exception.class)
public void saveChargeData(XkBackinMain xkBackinMain,List<XkBackinDetail> xkBackinDetailList,XkChargeMain xkChargeMain,List<XkChargeDetail> xkChargeDetailList){
xkBackinMainMapper.insert(xkBackinMain);

View File

@ -204,7 +204,6 @@ public class BloodOutServiceImpl implements BloodOutService {
if(!result1.getCode().equals("0")) return result1;
List<XkBloodInfo> xkBloodInfoList = new ArrayList<>();
List<XkOutDetail> xkOutDetailList = xkOutDetailMapper.queryListByBillNo(billNo);
XkBloodInfo xkBloodInfoTemp = null;
for (XkOutDetail xkOutDetail : xkOutDetailList) {
String bloodNo = xkOutDetail.getBlood_no();
String productNo = xkOutDetail.getProduct_no();
@ -218,7 +217,7 @@ public class BloodOutServiceImpl implements BloodOutService {
}
//修改血液状态
xkBloodInfoTemp = new XkBloodInfo();
XkBloodInfo xkBloodInfoTemp = new XkBloodInfo();
xkBloodInfoTemp.setBlood_status("4");
xkBloodInfoTemp.setBlood_no(bloodNo);
xkBloodInfoTemp.setProduct_no(productNo);
@ -260,7 +259,7 @@ public class BloodOutServiceImpl implements BloodOutService {
xkPatientInfoTemp.setTransfuse_history("Y");
xkPatientInfoTemp.setBeinhos_id(beinhosId);
bloodOutUtil.auditBloodOutInfo(xkBloodInfoTemp,xkTransfuseApplyTemp,xkOutMainTemp,xkCheckBloodtypeTemp,xkPatientInfoTemp,xkMatchMainTemp);
bloodOutUtil.auditBloodOutInfo(xkBloodInfoList,xkTransfuseApplyTemp,xkOutMainTemp,xkCheckBloodtypeTemp,xkPatientInfoTemp,xkMatchMainTemp);
//通知护士取血
notifyBloodOut(billNo);

View File

@ -64,7 +64,7 @@ public class BloodOutUtil {
}
@Transactional(rollbackFor = Exception.class)
public void auditBloodOutInfo(XkBloodInfo xkBloodInfo,XkTransfuseApply xkTransfuseApply,XkOutMain xkOutMain,
public void auditBloodOutInfo(List<XkBloodInfo> xkBloodInfoList,XkTransfuseApply xkTransfuseApply,XkOutMain xkOutMain,
XkCheckBloodtype xkCheckBloodtype,
XkPatientInfo xkPatientInfo,
XkMatchMain xkMatchMain){
@ -72,7 +72,10 @@ public class BloodOutUtil {
xkTransfuseApplyMapper.update(xkTransfuseApply);
if(xkCheckBloodtype != null) xkCheckBloodtypeMapper.update(xkCheckBloodtype);
xkPatientInfoMapper.updateXkPatientInfo(xkPatientInfo);
xkBloodInfoMapper.update(xkBloodInfo);
for (XkBloodInfo xkBloodInfo : xkBloodInfoList) {
xkBloodInfoMapper.update(xkBloodInfo);
}
if(xkMatchMain != null) xkMatchMainMapper.update(xkMatchMain);
}