血液报废,血袋回收

This commit is contained in:
jiangs 2026-09-08 16:23:00 +08:00
parent 5fb1e91dc8
commit 60f1dd1f1a
28 changed files with 539 additions and 17 deletions

View File

@ -17,4 +17,5 @@ public class BloodSysLogConstants {
public static final String LOG_TYPE_MATCH_BLOOD = "交叉配血";
public static final String LOG_TYPE_BLOOD_OUT = "临床发血";
public static final String LOG_TYPE_BLOOD_BACK = "临床发血退血";
public static final String LOG_TYPE_DISCARD_MAIN = "血液报废";
}

View File

@ -1,7 +1,7 @@
package com.czblood.bus.mapper;
import com.czblood.bus.pojo.XkBackinDetail;
import io.lettuce.core.dynamic.annotation.Param;
import org.apache.ibatis.annotations.Param;
import java.util.List;

View File

@ -1,4 +1,13 @@
package com.czblood.bus.mapper;
import com.czblood.bus.pojo.XkDiscardDetail;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface XkDiscardDetailMapper {
XkDiscardDetail queryDiscardDetail(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
void insert(XkDiscardDetail xkDiscardDetail);
void delete(String billNo);
List<XkDiscardDetail> queryListByBillNo(String billNo);
}

View File

@ -1,4 +1,10 @@
package com.czblood.bus.mapper;
import com.czblood.bus.pojo.XkDiscardMain;
public interface XkDiscardMainMapper {
void insert(XkDiscardMain xkDiscardMain);
XkDiscardMain queryOne(String billNo);
void update(XkDiscardMain xkDiscardMain);
void deleteByBillNo(String billNo);
}

View File

@ -0,0 +1,4 @@
package com.czblood.bus.mapper;
public interface XkRecycleBagDetailMapper {
}

View File

@ -0,0 +1,4 @@
package com.czblood.bus.mapper;
public interface XkRecycleBagMainMapper {
}

View File

@ -1,6 +1,7 @@
package com.czblood.bus.pojo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -16,6 +17,7 @@ public class XkDiscardDetail {
private Integer sid;
private String blood_no;
private BigDecimal price;
@ApiModelProperty("报废原因")
private String reason;
private String product_no;
}

View File

@ -1,6 +1,7 @@
package com.czblood.bus.pojo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -14,16 +15,28 @@ import java.util.Date;
@ApiModel("报废血液主表")
public class XkDiscardMain {
private String bill_no;
@ApiModelProperty("经手人")
private String handle_person;
@ApiModelProperty("总金额")
private BigDecimal total_money;
@ApiModelProperty("报废日期")
private Date discard_date;
@ApiModelProperty("输入人")
private String input_person;
@ApiModelProperty("输入日期")
private Date input_date;
@ApiModelProperty("审核人")
private String audit_person;
@ApiModelProperty("审核日期")
private Date audit_date;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("批准人")
private String ratify_person;
@ApiModelProperty("批准人意见")
private String ratify_attitude;
@ApiModelProperty("报废途径")
private String discard_approach;
@ApiModelProperty("报废方法")
private String discard_method;
}

View File

@ -0,0 +1,30 @@
package com.czblood.bus.pojo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("血袋回收明细表")
public class XkRecycleBagDetail {
private String bill_no;
private Integer sid;
private String blood_no;
@ApiModelProperty("接收人")
private String receive_person;
@ApiModelProperty("接收日期")
private Date receive_date;
private String Exp1;
private String Exp2;
private String product_no;
@ApiModelProperty("销毁人")
private String destroy_person;
@ApiModelProperty("销毁时间")
private Date destroy_time;
}

View File

@ -0,0 +1,30 @@
package com.czblood.bus.pojo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("回收血液主表")
public class XkRecycleBagMain {
private String bill_no;
@ApiModelProperty("送返人")
private String send_person;
@ApiModelProperty("送返日期")
private Date send_date;
@ApiModelProperty("接收人")
private String receive_person;
@ApiModelProperty("接收日期")
private Date receive_date;
@ApiModelProperty("接收数量")
private Integer sum;
private String Exp1;
private String Exp2;
private String bz1;
}

View File

@ -2,5 +2,21 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.czblood.bus.mapper.XkDiscardDetailMapper">
<insert id="insert">
insert into xk_discard_detail (
bill_no,sid,blood_no,product_no,price,reason
)values(
#{bill_no},#{sid},#{blood_no},#{product_no},#{price},#{reason}
)
</insert>
<delete id="delete">
delete from xk_discard_detail where bill_no = #{billNo}
</delete>
<select id="queryDiscardDetail" resultType="com.czblood.bus.pojo.XkDiscardDetail">
select * from xk_discard_detail where blood_no = #{bloodNo} and product_no = #{productNo}
</select>
<select id="queryListByBillNo" resultType="com.czblood.bus.pojo.XkDiscardDetail">
select * from xk_discard_detail where bill_no = #{billNo}
</select>
</mapper>

View File

@ -3,4 +3,44 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.czblood.bus.mapper.XkDiscardMainMapper">
<insert id="insert">
insert into xk_discard_main (
<if test="remark != null">remark,</if>
<if test="ratify_person != null">ratify_person,</if>
<if test="ratify_attitude != null">ratify_attitude,</if>
<if test="discard_approach != null">discard_approach,</if>
<if test="discard_method != null">discard_method,</if>
bill_no,handle_person,total_money,input_person,input_date
)values(
<if test="remark != null">#{remark},</if>
<if test="ratify_person != null">#{ratify_person},</if>
<if test="ratify_attitude != null">#{ratify_attitude},</if>
<if test="discard_approach != null">#{discard_approach},</if>
<if test="discard_method != null">#{discard_method},</if>
bill bill #{bill_no},#{handle_person},#{total_money},#{input_person},#{input_date}
)
</insert>
<update id="update">
update xk_discard_main set
<if test="handle_person != null">handle_person = #{handle_person},</if>
<if test="total_money != null">total_money = #{total_money},</if>
<if test="discard_date != null">discard_date = #{discard_date},</if>
<if test="input_person != null">input_person = #{input_person},</if>
<if test="input_date != null">input_date = #{input_date},</if>
<if test="audit_person != null">audit_person = #{audit_person},</if>
<if test="audit_date != null">audit_date = #{audit_date},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="ratify_person != null">ratify_person = #{ratify_person},</if>
<if test="ratify_attitude != null">ratify_attitude = #{ratify_attitude},</if>
<if test="discard_approach != null">discard_approach = #{discard_approach},</if>
<if test="discard_method != null">discard_method = #{discard_method},</if>
bill_no = #{bill_no}
where bill_no = #{bill_no}
</update>
<delete id="deleteByBillNo">
delete from xk_discard_main where bill_no = #{billNo}
</delete>
<select id="queryOne" resultType="com.czblood.bus.pojo.XkDiscardMain">
select * from xk_discard_main where bill_no = #{billNo}
</select>
</mapper>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!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">
</mapper>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!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">
</mapper>

View File

@ -1,6 +1,7 @@
package com.czblood.busBloodbank.controller;
import com.czblood.bus.constants.BloodSysLogConstants;
import com.czblood.bus.pojo.XkBackinDetail;
import com.czblood.busBloodbank.pojo.DTO.BackinDataDTO;
import com.czblood.busBloodbank.pojo.VO.BackinQueryVO;
import com.czblood.busBloodbank.service.BackinService;
@ -55,6 +56,13 @@ public class BackinController extends BaseController {
return backinService.deleteData(billNo);
}
@Log(title = BloodSysLogConstants.LOG_TYPE_BLOOD_BACK, businessType = BusinessType.DELETE_DETAIL)
@ApiOperation("删除血液信息")
@PostMapping("/deleteBloodInfo")
public Result deleteBloodInfo(@RequestBody XkBackinDetail xkBackinDetail){
return backinService.deleteBloodInfo(xkBackinDetail);
}
@ApiOperation("查询列表")
@GetMapping("/queryList")
public TableDataInfo queryList(BackinQueryVO backinQueryVO){

View File

@ -1,19 +1,23 @@
package com.czblood.busBloodbank.controller;
import com.czblood.bus.constants.BloodSysLogConstants;
import com.czblood.busBloodbank.pojo.VO.DiscardQueryVO;
import com.czblood.busBloodbank.pojo.VO.DiscardVO;
import com.czblood.busBloodbank.service.DiscardMainService;
import com.czblood.common.annotation.Log;
import com.czblood.common.core.controller.BaseController;
import com.czblood.common.core.domain.Result;
import com.czblood.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@Api(tags = "血液报废")
@RestController
@RequestMapping("/bus/bloodbank/discardMain")
public class DiscardMainController {
public class DiscardMainController extends BaseController {
@Resource
private DiscardMainService discardMainService;
@ -24,4 +28,39 @@ public class DiscardMainController {
return discardMainService.queryBloodInfo(bloodNo,productNo);
}
@Log(title = BloodSysLogConstants.LOG_TYPE_DISCARD_MAIN, businessType = BusinessType.INSERT)
@ApiOperation("保存报废信息")
@PostMapping("/saveData")
public Result saveData(@RequestBody DiscardVO discardVO){
discardVO.setUserId(getUsername());
return discardMainService.saveData(discardVO);
}
@Log(title = BloodSysLogConstants.LOG_TYPE_DISCARD_MAIN, businessType = BusinessType.CHECK)
@ApiOperation("审核单据")
@GetMapping("/auditData")
public Result auditData(String billNo){
String userId = getUsername();
return discardMainService.auditData(billNo,userId);
}
@Log(title = BloodSysLogConstants.LOG_TYPE_DISCARD_MAIN, businessType = BusinessType.DELETE)
@ApiOperation("删除报废单")
@GetMapping("/deleteData")
public Result deleteData(String billNo){
return discardMainService.deleteData(billNo);
}
@ApiOperation("查询报废单列表")
@PostMapping("/queryList")
public Result queryList(DiscardQueryVO discardQueryVO){
return discardMainService.queryList(discardQueryVO);
}
@ApiOperation("查询报废单详情")
@GetMapping("/queryInfoOne")
public Result queryInfoOne(String billNo){
return discardMainService.queryInfoOne(billNo);
}
}

View File

@ -0,0 +1,11 @@
package com.czblood.busBloodbank.mapper;
import com.czblood.busBloodbank.pojo.VO.DiscardQueryVO;
import java.util.List;
import java.util.Map;
public interface DiscardMapper {
List<Map<String,Object>> queryList(DiscardQueryVO discardQueryVO);
List<Map<String,Object>> queryDetailList(String billNo);
}

View File

@ -1,6 +1,7 @@
package com.czblood.busBloodbank.pojo.DTO;
import com.czblood.bus.pojo.XkBackinDetail;
import com.czblood.bus.pojo.XkBloodInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
@ -14,6 +15,7 @@ import java.util.Map;
public class BackinBloodDTO {
private XkBackinDetail xkBackinDetail;
private Map<String,Object> patientInfo;
private XkBloodInfo xkBloodInfo;
@ApiModelProperty("标志位,1:新增,2:删除")
private String flag;
}

View File

@ -0,0 +1,15 @@
package com.czblood.busBloodbank.pojo.VO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DiscardQueryVO {
private String stime;
private String etime;
private String billNo;
}

View File

@ -0,0 +1,18 @@
package com.czblood.busBloodbank.pojo.VO;
import com.czblood.bus.pojo.XkDiscardDetail;
import com.czblood.bus.pojo.XkDiscardMain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DiscardVO {
private XkDiscardMain xkDiscardMain;
private List<XkDiscardDetail> xkDiscardDetailList;
private String userId;
}

View File

@ -1,5 +1,6 @@
package com.czblood.busBloodbank.service;
import com.czblood.bus.pojo.XkBackinDetail;
import com.czblood.busBloodbank.pojo.DTO.BackinDataDTO;
import com.czblood.busBloodbank.pojo.VO.BackinQueryVO;
import com.czblood.common.core.domain.Result;
@ -15,4 +16,5 @@ public interface BackinService {
List<Map<String,Object>> queryList(BackinQueryVO backinQueryVO);
Result queryInfo(String billNo);
Result print(String billNo,String templateName,String userId);
Result deleteBloodInfo(XkBackinDetail xkBackinDetail);
}

View File

@ -1,7 +1,14 @@
package com.czblood.busBloodbank.service;
import com.czblood.busBloodbank.pojo.VO.DiscardQueryVO;
import com.czblood.busBloodbank.pojo.VO.DiscardVO;
import com.czblood.common.core.domain.Result;
public interface DiscardMainService {
Result queryBloodInfo(String bloodNo, String productNo);
Result saveData(DiscardVO discardVO);
Result auditData(String billNo,String userId);
Result deleteData(String billNo);
Result queryList(DiscardQueryVO discardQueryVO);
Result queryInfoOne(String billNo);
}

View File

@ -17,6 +17,7 @@ import com.czblood.busBloodbank.pojo.VO.BackinQueryVO;
import com.czblood.busBloodbank.service.BackinService;
import com.czblood.common.core.domain.Result;
import com.czblood.common.utils.spring.SpringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -25,6 +26,7 @@ import java.math.BigDecimal;
import java.util.*;
@Service
@Slf4j
public class BackinServiceImpl implements BackinService {
@Resource
@ -136,6 +138,17 @@ public class BackinServiceImpl implements BackinService {
}else{
//修改
BigDecimal totalMoney = BigDecimal.ZERO;
newBillNo = xkBackinMain.getBill_no();
for (BackinBloodDTO backinBloodDTO : xkBackinDetailList) {
XkBackinDetail xkBackinDetail = backinBloodDTO.getXkBackinDetail();
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());
}
}
xkBackinMain.setTotal_money(totalMoney); //总金额
Result result = SpringUtils.getBean(BackinServiceImpl.class).updateChargeData(xkBackinMain, xkBackinDetailList, backinDataDTO);
if(!result.getCode().equals("0")) return result;
}
@ -230,6 +243,7 @@ public class BackinServiceImpl implements BackinService {
BackinBloodDTO backinBloodDTO = new BackinBloodDTO();
backinBloodDTO.setPatientInfo(patientInfoList.get(0));
backinBloodDTO.setXkBackinDetail(xkBackinDetail);
backinBloodDTO.setXkBloodInfo(bloodBankUtil.queryBloodInfoOne(bloodNo, productNo));
backinBloodDTOList.add(backinBloodDTO);
}
backinDataDTO.setXkBackinDetailList(backinBloodDTOList);
@ -243,7 +257,20 @@ public class BackinServiceImpl implements BackinService {
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","打印成功!");
return new Result("0","打印成功!",result2.getData());
}
@Override
public Result deleteBloodInfo(XkBackinDetail xkBackinDetail) {
String billNo = BloodBankUtil.isBank(xkBackinDetail.getBill_no());
if(billNo.equals("")) return new Result("0","删除成功!"); //新增的数据就做数据库处理了
String bloodNo = xkBackinDetail.getBlood_no();
String productNo = xkBackinDetail.getProduct_no();
String chargeBillNo = xkBackinDetail.getCharge_billno();
xkBackinDetailMapper.deleteOne(billNo,bloodNo,productNo);
xkChargeMainMapper.deleteByBillNo(chargeBillNo);
xkChargeDetailMapper.deleteByBillNo(chargeBillNo);
return new Result("0","删除成功!");
}
@Transactional(rollbackFor = Exception.class)
@ -279,7 +306,7 @@ public class BackinServiceImpl implements BackinService {
xkBackinMainMapper.update(xkBackinMain);
for (BackinBloodDTO backinBloodDTO : xkBackinDetailList) {
XkBackinDetail xkBackinDetail = backinBloodDTO.getXkBackinDetail();
String flag = backinBloodDTO.getFlag();
String flag = BloodBankUtil.isBank(backinBloodDTO.getFlag());
if(flag.equals("1")){
//新增
Result result = insertChargeInfo(backinBloodDTO,backinDataDTO.getUserId());
@ -294,19 +321,26 @@ public class BackinServiceImpl implements BackinService {
if(xkChargeMain != null) xkChargeMainMapper.insert(xkChargeMain);
if(xkChargeDetail != null) xkChargeDetailMapper.insert(xkChargeDetail);
//回写单号
xkBackinDetail.setCharge_billno(xkChargeMain.getBill_no());
if(xkChargeMain != null) xkBackinDetail.setCharge_billno(xkChargeMain.getBill_no());
xkBackinDetailMapper.insert(xkBackinDetail);
}else if(flag.equals("2")){
//删除
xkBackinDetailMapper.deleteOne(xkBackinDetail.getBill_no(),xkBackinDetail.getBlood_no(),xkBackinDetail.getProduct_no());
xkChargeMainMapper.deleteByBillNo(xkBackinDetail.getCharge_billno());
xkChargeDetailMapper.deleteByBillNo(xkBackinDetail.getCharge_billno());
}
}
return new Result("0","更新成功!");
}
@Transactional(rollbackFor = Exception.class)
// public void deleteBloodInfo(XkBackinDetail xkBackinDetail){
// String billNo = BloodBankUtil.isBank(xkBackinDetail.getBill_no());
// if(billNo.equals("")) return; //新增的数据就做数据库处理了
// String bloodNo = xkBackinDetail.getBlood_no();
// String productNo = xkBackinDetail.getProduct_no();
// String chargeBillNo = xkBackinDetail.getCharge_billno();
// xkBackinDetailMapper.deleteOne(billNo,bloodNo,productNo);
// xkChargeMainMapper.deleteByBillNo(chargeBillNo);
// xkChargeDetailMapper.deleteByBillNo(chargeBillNo);
// }
/**
* 组装退费信息数据
* @param backinBloodDTO

View File

@ -1,13 +1,184 @@
package com.czblood.busBloodbank.service.impl;
import com.czblood.bus.mapper.XkBloodInfoMapper;
import com.czblood.bus.mapper.XkDiscardDetailMapper;
import com.czblood.bus.mapper.XkDiscardMainMapper;
import com.czblood.bus.mapper.XkInstorageDetailMapper;
import com.czblood.bus.pojo.XkBloodInfo;
import com.czblood.bus.pojo.XkDiscardDetail;
import com.czblood.bus.pojo.XkDiscardMain;
import com.czblood.bus.pojo.XkInstorageDetail;
import com.czblood.bus.utils.BloodBankUtil;
import com.czblood.busBloodbank.mapper.DiscardMapper;
import com.czblood.busBloodbank.pojo.VO.DiscardQueryVO;
import com.czblood.busBloodbank.pojo.VO.DiscardVO;
import com.czblood.busBloodbank.service.DiscardMainService;
import com.czblood.common.core.domain.Result;
import com.czblood.common.utils.spring.SpringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.swing.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class DiscardMainServiceImpl implements DiscardMainService {
@Resource
BloodBankUtil bloodBankUtil;
@Resource
XkDiscardDetailMapper xkDiscardDetailMapper;
@Resource
XkInstorageDetailMapper xkInstorageDetailMapper;
@Resource
XkDiscardMainMapper xkDiscardMainMapper;
@Resource
XkBloodInfoMapper xkBloodInfoMapper;
@Resource
DiscardMapper discardMapper;
@Override
public Result queryBloodInfo(String bloodNo, String productNo) {
return null;
XkBloodInfo xkBloodInfo = bloodBankUtil.queryBloodInfoOne(bloodNo, productNo);
if(xkBloodInfo == null) return new Result("-1","血液信息不存在!!!");
XkDiscardDetail xkDiscardDetail = xkDiscardDetailMapper.queryDiscardDetail(bloodNo, productNo);
if(xkDiscardDetail != null) return new Result("-1","血液流水号:"+bloodNo+",产品号:"+productNo+"的报废信息已经存在!!!");
String bloodStatus = xkBloodInfo.getBlood_status();
switch (bloodStatus){
case "2":
return new Result("-1","该血液已经报废!!!");
case "4":
return new Result("-1","该血液已经出库!!!");
}
return new Result("0","查询成功",xkBloodInfo);
}
@Override
public Result saveData(DiscardVO discardVO) {
XkDiscardMain xkDiscardMain = discardVO.getXkDiscardMain();
List<XkDiscardDetail> xkDiscardDetailList = discardVO.getXkDiscardDetailList();
String billNo = BloodBankUtil.isBank(xkDiscardMain.getBill_no());
String auditPerson = BloodBankUtil.isBank(xkDiscardMain.getAudit_person());
if(!auditPerson.equals("")) return new Result("-1","单据已经审核,不允许修改!!");
String newBillNo = "";
if(billNo.equals("")){
//新增
BigDecimal totalMoney = BigDecimal.ZERO;
newBillNo = bloodBankUtil.produceBillNo("BFD");
xkDiscardMain.setBill_no(newBillNo);
xkDiscardMain.setInput_person(discardVO.getUserId());
xkDiscardMain.setInput_date(bloodBankUtil.getCurrentTimeDate());
for (XkDiscardDetail xkDiscardDetail : xkDiscardDetailList) {
List<XkInstorageDetail> xkInstorageDetailList = xkInstorageDetailMapper.queryByBloodNo(xkDiscardDetail.getBlood_no(), xkDiscardDetail.getProduct_no());
if(!xkInstorageDetailList.isEmpty()){
xkDiscardDetail.setPrice(xkInstorageDetailList.get(0).getPrice());
totalMoney = totalMoney.add(xkInstorageDetailList.get(0).getPrice());
}
}
xkDiscardMain.setTotal_money(totalMoney);
SpringUtils.getBean(DiscardMainServiceImpl.class).insertData(xkDiscardMain,xkDiscardDetailList);
}else{
//更新
newBillNo = xkDiscardMain.getBill_no();
SpringUtils.getBean(DiscardMainServiceImpl.class).updateData(xkDiscardMain,xkDiscardDetailList);
}
return new Result("0","保存成功",newBillNo);
}
@Override
public Result auditData(String billNo,String userId) {
XkDiscardMain xkDiscardMain = xkDiscardMainMapper.queryOne(billNo);
if(xkDiscardMain == null) return new Result("-1","单据不存在!!!");
String auditPerson = BloodBankUtil.isBank(xkDiscardMain.getAudit_person());
if(!auditPerson.equals("")) return new Result("-1","单据已经审核,不允许重复审核!!");
List<XkDiscardDetail> xkDiscardDetailList = xkDiscardDetailMapper.queryListByBillNo(billNo);
List<XkBloodInfo> xkBloodInfoList = new ArrayList();
for (XkDiscardDetail xkDiscardDetail : xkDiscardDetailList) {
String bloodNo = xkDiscardDetail.getBlood_no();
String productNo = xkDiscardDetail.getProduct_no();
XkBloodInfo xkBloodInfo = bloodBankUtil.queryBloodInfoOne(bloodNo, productNo);
if(xkBloodInfo == null) return new Result("-1","血液信息不存在!!!");
String bloodStatus = xkBloodInfo.getBlood_status();
switch (bloodStatus){
case "2":
return new Result("-1","该血液"+bloodNo+",产品号:"+productNo+"已经报废!!!");
case "4":
return new Result("-1","该血液"+bloodNo+",产品号:"+productNo+"已经出库!!!");
}
XkBloodInfo xkBloodInfoTemp = new XkBloodInfo();
xkBloodInfoTemp.setBlood_status("2");
xkBloodInfoTemp.setBlood_no(bloodNo);
xkBloodInfoTemp.setProduct_no(productNo);
xkBloodInfoList.add(xkBloodInfoTemp);
}
XkDiscardMain xkDiscardMainTemp = new XkDiscardMain();
xkDiscardMainTemp.setAudit_person(userId);
xkDiscardMainTemp.setAudit_date(bloodBankUtil.getCurrentTimeDate());
SpringUtils.getBean(DiscardMainServiceImpl.class).updateAuditData(xkBloodInfoList,xkDiscardMainTemp);
return new Result("0","审核成功");
}
@Override
public Result deleteData(String billNo) {
XkDiscardMain xkDiscardMain = xkDiscardMainMapper.queryOne(billNo);
if(xkDiscardMain == null) return new Result("-1","单据不存在!!!");
String auditPerson = BloodBankUtil.isBank(xkDiscardMain.getAudit_person());
if(!auditPerson.equals("")) return new Result("-1","单据已经审核,不允许删除!!");
SpringUtils.getBean(DiscardMainServiceImpl.class).deleteDataTrans(billNo);
return new Result("0","删除成功");
}
@Override
public Result queryList(DiscardQueryVO discardQueryVO) {
List<Map<String,Object>> list = discardMapper.queryList(discardQueryVO);
return new Result("0","查询成功",list);
}
@Override
public Result queryInfoOne(String billNo) {
XkDiscardMain xkDiscardMain = xkDiscardMainMapper.queryOne(billNo);
List<Map<String, Object>> xkDiscardDetailList = discardMapper.queryDetailList(billNo);
Map<String,Object> map = new HashMap<>();
map.put("xkDiscardMain",xkDiscardMain);
map.put("xkDiscardDetailList",xkDiscardDetailList);
return new Result("0","查询成功",map);
}
@Transactional(rollbackFor = Exception.class)
public void insertData(XkDiscardMain xkDiscardMain,List<XkDiscardDetail> xkDiscardDetailList){
xkDiscardMainMapper.insert(xkDiscardMain);
for (XkDiscardDetail xkDiscardDetail : xkDiscardDetailList) {
xkDiscardDetailMapper.insert(xkDiscardDetail);
}
}
@Transactional(rollbackFor = Exception.class)
public void updateData(XkDiscardMain xkDiscardMain,List<XkDiscardDetail> xkDiscardDetailList){
xkDiscardMainMapper.update(xkDiscardMain);
xkDiscardDetailMapper.delete(xkDiscardMain.getBill_no());
for (XkDiscardDetail xkDiscardDetail : xkDiscardDetailList) {
xkDiscardDetailMapper.insert(xkDiscardDetail);
}
}
@Transactional(rollbackFor = Exception.class)
public void updateAuditData(List<XkBloodInfo> xkBloodInfoList,XkDiscardMain xkDiscardMain){
for (XkBloodInfo xkBloodInfo : xkBloodInfoList) {
xkBloodInfoMapper.update(xkBloodInfo);
}
xkDiscardMainMapper.update(xkDiscardMain);
}
@Transactional(rollbackFor = Exception.class)
public void deleteDataTrans(String billNo){
xkDiscardMainMapper.deleteByBillNo(billNo);
xkDiscardDetailMapper.delete(billNo);
}
}

View File

@ -11,7 +11,7 @@
Where xk_out_main.bill_no =xk_out_detail.bill_no and
xk_out_detail.blood_no = #{bloodNo} and
<![CDATA[xk_out_main.check_sign <> 'ZF' and]]>
xk_out_detail.product_no = #{productNo}
xk_out_detail.product_no = #{productNo} and isnull(xk_out_main.check_sign,'') = 'Y'
</select>
<select id="queryPatientInfo" resultType="java.util.Map">
@ -38,13 +38,15 @@
xk_backin_main.handle_person,
xk_backin_main.total_money,
xk_backin_main.back_date ,
xk_backin_main.audit_person,
xk_backin_main.audit_date,
xk_out_main.beinhos_id,
xk_out_main.patient_name
FROM xk_backin_main ,xk_backin_detail ,xk_out_detail,xk_out_main
WHERE (xk_backin_main.back_date between #{stime} AND #{etime})
and (xk_backin_main.org_type = 'A') and xk_backin_main.bill_no = xk_backin_detail.bill_no
and xk_out_detail.blood_no = xk_backin_detail.blood_no and xk_out_detail.product_no = xk_backin_detail.product_no
and xk_out_main.bill_no = xk_out_detail.bill_no and xk_out_detail.exp1='Y'
and xk_out_main.bill_no = xk_out_detail.bill_no
<if test="billNo != null">AND (xk_backin_main.bill_no = #{billNo})</if>
<if test="dept != null">and xk_backin_main.dept_id = #{dept}</if>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.czblood.busBloodbank.mapper.DiscardMapper">
<select id="queryList" resultType="java.util.Map">
SELECT xk_discard_main.bill_no,
xk_discard_main.handle_person,
xk_discard_main.total_money,
xk_discard_main.discard_date
FROM xk_discard_main
WHERE (xk_discard_main.discard_date between #{stime} and #{etime})
<if test="billNo != null"> AND (xk_discard_main.bill_no = #{billNo})</if>
</select>
<select id="queryDetailList" resultType="java.util.Map">
select a.*,b.blood_breed,b.capacity,b.unit,b.blood_type,b.rh_blood_type,b.valid_date from xk_discard_detail a,xk_blood_info b
where a.bill_no = #{billNo} and a.blood_no = b.blood_no and a.product_no = b.product_no
</select>
</mapper>

View File

@ -0,0 +1,13 @@
package com.czblood.busNurse.controller;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "血袋回收")
@RestController
@RequestMapping("/bus/nurse/recycleBag")
@Slf4j
public class RecycleBagController {
}

View File

@ -214,3 +214,17 @@ update xk_charge_item set module_type = '002' where module_code = '0203'
update xk_charge_item set module_type = '004' where module_code = '0204'
update xk_charge_item set module_type = '003' where module_code = '0501'
update xk_charge_item set module_type = '006' where module_code = '0302'
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_recycle_bag_main' AND type = 'PK' )
BEGIN
ALTER TABLE xk_recycle_bag_main ADD CONSTRAINT PK_xk_recycle_bag_main PRIMARY KEY CLUSTERED (bill_no);
END
GO
ALTER TABLE xk_recycle_bag_detail ALTER COLUMN product_no VARCHAR(18) NOT NULL;
go
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_recycle_bag_detail' AND type = 'PK' )
BEGIN
ALTER TABLE xk_recycle_bag_detail ADD CONSTRAINT PK_xk_recycle_bag_detail PRIMARY KEY CLUSTERED (bill_no,blood_no,product_no);
END
GO