血袋回收功能

This commit is contained in:
jiangs 2026-09-10 15:42:31 +08:00
parent a50c2a69f4
commit 7a93c10ad0
11 changed files with 151 additions and 10 deletions

View File

@ -6,4 +6,5 @@ import java.util.List;
public interface XkRecycleBagDetailMapper {
List<XkRecycleBagDetail> queryList(String billNo);
void insert(XkRecycleBagDetail xkRecycleBagDetail);
}

View File

@ -4,4 +4,5 @@ import com.czblood.bus.pojo.XkRecycleBagMain;
public interface XkRecycleBagMainMapper {
XkRecycleBagMain queryOne(String billNo);
void insert(XkRecycleBagMain xkRecycleBagMain);
}

View File

@ -22,7 +22,7 @@ public class XkRecycleBagMain {
private String receive_person;
@ApiModelProperty("接收日期")
private Date receive_date;
@ApiModelProperty("接收数量")
@ApiModelProperty("接收数量,总数")
private Integer sum;
private String Exp1;
private String Exp2;

View File

@ -2,6 +2,12 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.czblood.bus.mapper.XkRecycleBagDetailMapper">
<insert id="insert">
insert into xk_recycle_bag_detail (bill_no, SID, blood_no, receive_person, receive_date,product_no,destroy_person,destroy_time
)values(
#{bill_no},#{sid},#{blood_no},#{receive_person},#{receive_date},#{product_no},#{destroy_person},#{destroy_time}
)
</insert>
<select id="queryList" resultType="com.czblood.bus.pojo.XkRecycleBagDetail">
select * from xk_recycle_bag_detail where bill_no = #{billNo}

View File

@ -2,6 +2,16 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.czblood.bus.mapper.XkRecycleBagMainMapper">
<insert id="insert">
insert into xk_recycle_bag_main (bill_no, send_person, send_date,receive_person,receive_date,sum,
<if test="Exp1 != null">Exp1,</if>
<if test="Exp2 != null">Exp2,</if>
)values(
#{bill_no},#{send_person},#{send_date},#{receive_person},#{receive_date},#{sum},
<if test="Exp1 != null">#{Exp1},</if>
<if test="Exp2 != null">#{Exp2},</if>
)
</insert>
<select id="queryOne" resultType="com.czblood.bus.pojo.XkRecycleBagMain">
select * from xk_recycle_bag_main where bill_no = #{billNo}

View File

@ -2,13 +2,14 @@ package com.czblood.busNurse.controller;
import com.czblood.busNurse.pojo.DTO.RecycleBagDTO;
import com.czblood.busNurse.pojo.VO.RecycleBagSearchVO;
import com.czblood.busNurse.pojo.VO.RecycleBagVO;
import com.czblood.busNurse.service.RecycleBagService;
import com.czblood.common.core.controller.BaseController;
import com.czblood.common.core.domain.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@ -17,7 +18,7 @@ import java.util.List;
@RestController
@RequestMapping("/bus/nurse/recycleBag")
@Slf4j
public class RecycleBagController {
public class RecycleBagController extends BaseController {
@Resource
@ -25,22 +26,29 @@ public class RecycleBagController {
@ApiOperation("获取回收血液信息")
@RequestMapping("/getBloodInfo")
@GetMapping("/getBloodInfo")
public Result getBloodInfo(String bloodNo,String productNo) {
return recycleBagService.getBloodInfo(bloodNo,productNo);
}
@ApiOperation("批量查询血液回收单据信息")
@RequestMapping("/batchSearch")
public Result batchSearch(RecycleBagSearchVO recycleBagSearchVO){
@PostMapping("/batchSearch")
public Result batchSearch(@RequestBody RecycleBagSearchVO recycleBagSearchVO){
return recycleBagService.batchSearch(recycleBagSearchVO);
}
@ApiOperation("批量查询血液回收信息列表")
@RequestMapping("/queryBatchBloodInfo")
public Result queryBatchBloodInfoList(List<RecycleBagDTO> recycleBagDTOList){
@PostMapping("/queryBatchBloodInfo")
public Result queryBatchBloodInfoList(@RequestBody List<RecycleBagDTO> recycleBagDTOList){
return recycleBagService.queryBatchBloodInfoList(recycleBagDTOList);
}
@ApiOperation("保存血液回收单据信息")
@PostMapping("/saveData")
public Result saveData(@RequestBody RecycleBagVO recycleBagVO){
recycleBagVO.setUserId(getUsername());
return recycleBagService.saveData(recycleBagVO);
}
}

View File

@ -10,4 +10,5 @@ public interface RecycleBagMapper {
List<Map<String,Object>> getBloodInfo(String bloodNo, String productNo);
List<RecycleBagDTO> queryBatchData(RecycleBagSearchVO recycleBagSearchVO);
List<Map<String,Object>> queryBillNoBloodInfo(String billNo);
int queryRecycleBagCount(String billNo);
}

View File

@ -0,0 +1,23 @@
package com.czblood.busNurse.pojo.VO;
import com.czblood.bus.pojo.XkRecycleBagDetail;
import com.czblood.bus.pojo.XkRecycleBagMain;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RecycleBagVO {
@ApiModelProperty("血袋回收主表")
private XkRecycleBagMain xkRecycleBagMain;
@ApiModelProperty("血袋回收明细表")
private List<XkRecycleBagDetail> xkRecycleBagDetailList;
private String userId;
@ApiModelProperty("选中的发血单号列表")
private List<String> billNoList;
}

View File

@ -2,6 +2,7 @@ package com.czblood.busNurse.service;
import com.czblood.busNurse.pojo.DTO.RecycleBagDTO;
import com.czblood.busNurse.pojo.VO.RecycleBagSearchVO;
import com.czblood.busNurse.pojo.VO.RecycleBagVO;
import com.czblood.common.core.domain.Result;
import java.util.List;
@ -9,6 +10,6 @@ import java.util.List;
public interface RecycleBagService {
Result getBloodInfo(String bloodNo, String productNo);
Result batchSearch(RecycleBagSearchVO recycleBagSearchVO);
Result queryBatchBloodInfoList(List<RecycleBagDTO> recycleBagDTOList);
Result saveData(RecycleBagVO recycleBagVO);
}

View File

@ -1,13 +1,24 @@
package com.czblood.busNurse.service.impl;
import com.czblood.bus.mapper.XkBloodInfoMapper;
import com.czblood.bus.mapper.XkOutMainMapper;
import com.czblood.bus.mapper.XkRecycleBagDetailMapper;
import com.czblood.bus.mapper.XkRecycleBagMainMapper;
import com.czblood.bus.pojo.XkBloodInfo;
import com.czblood.bus.pojo.XkOutMain;
import com.czblood.bus.pojo.XkRecycleBagDetail;
import com.czblood.bus.pojo.XkRecycleBagMain;
import com.czblood.bus.utils.BloodBankUtil;
import com.czblood.busNurse.mapper.RecycleBagMapper;
import com.czblood.busNurse.pojo.DTO.RecycleBagDTO;
import com.czblood.busNurse.pojo.VO.RecycleBagSearchVO;
import com.czblood.busNurse.pojo.VO.RecycleBagVO;
import com.czblood.busNurse.service.RecycleBagService;
import com.czblood.common.core.domain.Result;
import com.czblood.common.utils.spring.SpringUtils;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
@ -19,6 +30,14 @@ public class RecycleBagServiceImpl implements RecycleBagService {
BloodBankUtil bloodBankUtil;
@Resource
RecycleBagMapper recycleBagMapper;
@Resource
XkBloodInfoMapper xkBloodInfoMapper;
@Resource
XkRecycleBagMainMapper xkRecycleBagMainMapper;
@Resource
XkRecycleBagDetailMapper xkRecycleBagDetailMapper;
@Resource
XkOutMainMapper xkOutMainMapper;
@Override
@ -59,4 +78,66 @@ public class RecycleBagServiceImpl implements RecycleBagService {
}
return new Result("0", "操作成功", resultList);
}
@Override
public Result saveData(RecycleBagVO recycleBagVO) {
XkRecycleBagMain xkRecycleBagMain = recycleBagVO.getXkRecycleBagMain();
List<XkRecycleBagDetail> xkRecycleBagDetailList = recycleBagVO.getXkRecycleBagDetailList();
List<String> billNoList = recycleBagVO.getBillNoList();
for (XkRecycleBagDetail xkRecycleBagDetail : xkRecycleBagDetailList) {
String bloodNo = xkRecycleBagDetail.getBlood_no();
String productNo = xkRecycleBagDetail.getProduct_no();
XkBloodInfo xkBloodInfo = bloodBankUtil.queryBloodInfoOne(bloodNo, productNo);
if(xkBloodInfo == null) return new Result("-1","血液信息"+bloodNo+"_"+productNo+"不存在");
String bloodStatus = xkBloodInfo.getBlood_status();
if(!bloodStatus.equals("4")) return new Result("-1","该血液"+bloodNo+"_"+productNo+"尚未出库!");
}
Date currentTimeDate = bloodBankUtil.getCurrentTimeDate();
String newBillNo = bloodBankUtil.produceBillNo("XDHS");
xkRecycleBagMain.setBill_no(newBillNo);
xkRecycleBagMain.setReceive_person(recycleBagVO.getUserId());
xkRecycleBagMain.setReceive_date(currentTimeDate);
xkRecycleBagMain.setSend_date(currentTimeDate);
String sendPerson = xkRecycleBagMain.getSend_person();
List<XkBloodInfo> xkBloodInfoList = new ArrayList<>();
if(sendPerson == null || sendPerson.equals("")){
xkRecycleBagMain.setSend_person(recycleBagVO.getUserId());
}
for (XkRecycleBagDetail xkRecycleBagDetail : xkRecycleBagDetailList) {
String bloodNo = xkRecycleBagDetail.getBlood_no();
String productNo = xkRecycleBagDetail.getProduct_no();
xkRecycleBagDetail.setBill_no(newBillNo);
XkBloodInfo xkBloodInfoTemp = new XkBloodInfo();
xkBloodInfoTemp.setRecycle_sign("Y");
xkBloodInfoTemp.setBlood_no(bloodNo);
xkBloodInfoTemp.setProduct_no(productNo);
xkBloodInfoList.add(xkBloodInfoTemp);
}
SpringUtils.getBean(RecycleBagServiceImpl.class).saveBatchData(xkBloodInfoList,xkRecycleBagMain,xkRecycleBagDetailList);
//判断出库表里面的血液是否都已经回收,如果都回收了 ,就把出库单主表都回收的标志打上
for (String billOutNo : billNoList) {
int recycleBagCount = recycleBagMapper.queryRecycleBagCount(billOutNo);
if(recycleBagCount == 0){
XkOutMain xkOutMainTemp = new XkOutMain();
xkOutMainTemp.setBill_no(billOutNo);
xkOutMainTemp.setAll_recycle_sign("Y");
xkOutMainMapper.update(xkOutMainTemp);
}
}
return new Result("0","保存成功",newBillNo);
}
@Transactional(rollbackFor = Exception.class)
public void saveBatchData(List<XkBloodInfo> xkBloodInfoList,XkRecycleBagMain xkRecycleBagMain,List<XkRecycleBagDetail> xkRecycleBagDetailList) {
for (XkBloodInfo xkBloodInfo : xkBloodInfoList) {
xkBloodInfoMapper.update(xkBloodInfo);
}
xkRecycleBagMainMapper.insert(xkRecycleBagMain);
for (XkRecycleBagDetail xkRecycleBagDetail : xkRecycleBagDetailList) {
xkRecycleBagDetailMapper.insert(xkRecycleBagDetail);
}
}
}

View File

@ -45,4 +45,13 @@
and isnull(xk_blood_info.recycle_sign,'') = 'Y'
</select>
<select id="queryRecycleBagCount" resultType="java.lang.Integer">
SELECT Count ( *)
FROM xk_out_main , xk_out_detail , xk_blood_info
WHERE ( xk_out_main.bill_no =xk_out_detail.bill_no ) AND
( xk_out_detail.blood_no =xk_blood_info.blood_no ) AND
( xk_out_detail.product_no =xk_blood_info.product_no ) AND
( isnull ( xk_blood_info.recycle_sign , 'N' ) ='N' ) AND
( xk_out_main.bill_no = #{billNo} )
</select>
</mapper>