临床退血打印

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 = "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 billNo;
private String beinhosId; private String beinhosId;
private String bloodSum; private String bloodSum;
private String userName;
} }

View File

@ -29,7 +29,7 @@
<if test="recycle_sign != null">recycle_sign = #{recycle_sign},</if> <if test="recycle_sign != null">recycle_sign = #{recycle_sign},</if>
<if test="Remark != null">Remark = #{Remark},</if> <if test="Remark != null">Remark = #{Remark},</if>
hos_id = #{hos_id} 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> </update>
<select id="queryOne" resultType="com.czblood.bus.pojo.XkBloodInfo"> <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 com.czblood.common.enums.BusinessType;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; 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); Result deleteData(String billNo);
List<Map<String,Object>> queryList(BackinQueryVO backinQueryVO); List<Map<String,Object>> queryList(BackinQueryVO backinQueryVO);
Result queryInfo(String billNo); Result queryInfo(String billNo);
Result print(String billNo,String templateName,String userId);
} }

View File

@ -1,12 +1,14 @@
package com.czblood.busBloodbank.service.impl; package com.czblood.busBloodbank.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.czblood.bus.constants.BloodPrintTypeConstants;
import com.czblood.bus.mapper.*; import com.czblood.bus.mapper.*;
import com.czblood.bus.pojo.*; import com.czblood.bus.pojo.*;
import com.czblood.bus.pojo.inter.BloodBackAuditRequest; import com.czblood.bus.pojo.inter.BloodBackAuditRequest;
import com.czblood.bus.pojo.xtwh.XkDmzd; import com.czblood.bus.pojo.xtwh.XkDmzd;
import com.czblood.bus.utils.BloodBankUtil; import com.czblood.bus.utils.BloodBankUtil;
import com.czblood.bus.utils.BloodInterfaceUtil; import com.czblood.bus.utils.BloodInterfaceUtil;
import com.czblood.bus.utils.ReportUtil;
import com.czblood.busBloodbank.mapper.BackinMapper; import com.czblood.busBloodbank.mapper.BackinMapper;
import com.czblood.busBloodbank.pojo.DTO.BackinDTO; import com.czblood.busBloodbank.pojo.DTO.BackinDTO;
import com.czblood.busBloodbank.pojo.DTO.BackinDataDTO; import com.czblood.busBloodbank.pojo.DTO.BackinDataDTO;
@ -47,6 +49,10 @@ public class BackinServiceImpl implements BackinService {
XkBloodInfoMapper xkBloodInfoMapper; XkBloodInfoMapper xkBloodInfoMapper;
@Resource @Resource
XkOutDetailMapper xkOutDetailMapper; XkOutDetailMapper xkOutDetailMapper;
@Resource
ReportUtil reportUtil;
@Resource
XkInstorageDetailMapper xkInstorageDetailMapper;
@Override @Override
@ -106,10 +112,16 @@ public class BackinServiceImpl implements BackinService {
xkBackinMain.setBack_org(backinDataDTO.getUserId()); xkBackinMain.setBack_org(backinDataDTO.getUserId());
xkBackinMain.setInput_date(bloodBankUtil.getCurrentTimeDate()); xkBackinMain.setInput_date(bloodBankUtil.getCurrentTimeDate());
xkBackinMain.setInput_person(backinDataDTO.getUserId()); xkBackinMain.setInput_person(backinDataDTO.getUserId());
BigDecimal totalMoney = BigDecimal.ZERO;
for (XkBackinDetail xkBackinDetail : xkBackinDetailList) { 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); xkBackinDetail.setBill_no(newBillNo);
} }
xkBackinMain.setTotal_money(totalMoney); //总金额
xkChargeMainTemp = new XkChargeMain(); xkChargeMainTemp = new XkChargeMain();
xkChargeMainTemp.setBill_no(newChargeBillNo); xkChargeMainTemp.setBill_no(newChargeBillNo);
@ -243,6 +255,16 @@ public class BackinServiceImpl implements BackinService {
return new Result("0","查询成功!",backinDataDTO); 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) @Transactional(rollbackFor = Exception.class)
public void saveChargeData(XkBackinMain xkBackinMain,List<XkBackinDetail> xkBackinDetailList,XkChargeMain xkChargeMain,List<XkChargeDetail> xkChargeDetailList){ public void saveChargeData(XkBackinMain xkBackinMain,List<XkBackinDetail> xkBackinDetailList,XkChargeMain xkChargeMain,List<XkChargeDetail> xkChargeDetailList){
xkBackinMainMapper.insert(xkBackinMain); xkBackinMainMapper.insert(xkBackinMain);

View File

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

View File

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