消息系统,临床发血退血

This commit is contained in:
jiangs 2026-09-04 14:46:18 +08:00
parent 27ce2482e6
commit 7f96cb848b
32 changed files with 648 additions and 9 deletions

View File

@ -66,5 +66,9 @@ public class BloodInterfaceTypeConstants {
* 临床发血审核
*/
public static final String BLOOD_OUT_AUDIT = "BLOOD_OUT_AUDIT";
/**
* 临床发血退血审核
*/
public static final String BLOOD_BACK_AUDIT = "BLOOD_BACK_AUDIT";
}

View File

@ -16,4 +16,5 @@ public class BloodSysLogConstants {
public static final String LOG_TYPE_CHECK_BLOOD_TYPE = "血型复核";
public static final String LOG_TYPE_MATCH_BLOOD = "交叉配血";
public static final String LOG_TYPE_BLOOD_OUT = "临床发血";
public static final String LOG_TYPE_BLOOD_BACK = "临床发血退血";
}

View File

@ -6,4 +6,6 @@ import java.util.List;
public interface XkBackinDetailMapper {
List<XkBackinDetail> queryListByBillNo(String billNo);
void insert(XkBackinDetail xkBackinDetail);
void deleteByBillNo(String billNo);
}

View File

@ -7,4 +7,7 @@ import java.util.List;
public interface XkBackinMainMapper {
List<XkBackinMain> queryList(XkBackinMain xkBackinMain);
XkBackinMain queryOne(String billNo);
void insert(XkBackinMain xkBackinMain);
void update(XkBackinMain xkBackinMain);
void deleteByBillNo(String billNo);
}

View File

@ -1,5 +1,8 @@
package com.czblood.bus.mapper;
import com.czblood.bus.pojo.XkChargeDetail;
public interface XkChargeDetailMapper {
void deleteByBillNo(String bill_no);
void insert(XkChargeDetail xkChargeDetail);
}

View File

@ -0,0 +1,10 @@
package com.czblood.bus.mapper;
import com.czblood.bus.pojo.XkChargeItem;
import java.util.List;
public interface XkChargeItemMapper {
List<XkChargeItem> queryList(XkChargeItem xkChargeItem);
XkChargeItem queryOne(String item_id);
}

View File

@ -8,4 +8,5 @@ import java.util.List;
public interface XkChargeMainMapper {
void deleteByBillNo(String bill_no);
List<XkChargeMain> queryList(XkChargeMain xkChargeMain);
void insert(XkChargeMain xkChargeMain);
}

View File

@ -1,7 +1,9 @@
package com.czblood.bus.mapper;
import com.czblood.bus.pojo.XkMsgMain;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
public interface XkMsgMainMapper {
@ -10,4 +12,5 @@ public interface XkMsgMainMapper {
List<XkMsgMain> queryList(XkMsgMain msgMain);
void update(XkMsgMain msgMain);
int queryNoReadCount();
void batchUpdateFlag(@Param("msgVOList") List<Integer> msgVOList,@Param("accept_Person") String accept_Person,@Param("accept_Date") Date accept_Date);
}

View File

@ -9,4 +9,5 @@ public interface XkOutDetailMapper {
void insert(XkOutDetail xkOutDetail);
void deleteByBillNo(String billNo);
List<XkOutDetail> queryList(XkOutDetail xkOutDetail);
void update(XkOutDetail xkOutDetail);
}

View File

@ -34,4 +34,6 @@ public class XkBackinMain {
@ApiModelProperty("审核日期")
private Date audit_date;
private String remark;
@ApiModelProperty("收费退血单号")
private String charge_billno;
}

View File

@ -0,0 +1,49 @@
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.math.BigDecimal;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("收费项目")
public class XkChargeItem {
@ApiModelProperty("收费项目编号")
private String item_id;
@ApiModelProperty("收费项目名称")
private String item_name;
@ApiModelProperty("收费金额")
private BigDecimal money;
@ApiModelProperty("收费规格")
private BigDecimal spec;
@ApiModelProperty("收费单位")
private String Unit;
@ApiModelProperty("模块编号")
private String module_code;
@ApiModelProperty("对应his项目编号")
private String his_code;
@ApiModelProperty("对应血液品种")
private String blood_breed;
@ApiModelProperty("对应RH血型")
private String rh_blood_type;
@ApiModelProperty("对应项目")
private String cure_item;
@ApiModelProperty("收费类型")
private String charge_type;
@ApiModelProperty("使用标志")
private String use_sign;
@ApiModelProperty("对应his项目名称")
private String his_item_name;
@ApiModelProperty("对应his项目规格")
private String his_spec;
private String py;
@ApiModelProperty("对应his项目收费类型")
private String his_charge_type;
@ApiModelProperty("模块类型")
private String module_type;
}

View File

@ -0,0 +1,23 @@
package com.czblood.bus.pojo.inter;
import cn.hutool.json.JSONUtil;
import com.czblood.bus.constants.BloodInterfaceTypeConstants;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BloodBackAuditRequest implements BloodInterfaceType {
private final String method = BloodInterfaceTypeConstants.BLOOD_BACK_AUDIT;
/**
* 单据编号
*/
private String billNo;
@Override
public String serializationJson() {
return JSONUtil.toJsonStr(this);
}
}

View File

@ -2,6 +2,15 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.czblood.bus.mapper.XkBackinDetailMapper">
<insert id="insert">
insert into xk_backin_detail (
bill_no,sid,blood_no,price,reason,product_no
)values(
#{bill_no},#{sid},#{blood_no},#{price},#{reason},#{product_no})
</insert>
<delete id="deleteByBillNo">
delete from xk_backin_detail where bill_no = #{billNo}
</delete>
<select id="queryListByBillNo" resultType="com.czblood.bus.pojo.XkBackinDetail">
select * from xk_backin_detail where bill_no = #{bill_no}

View File

@ -2,6 +2,53 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.czblood.bus.mapper.XkBackinMainMapper">
<insert id="insert">
insert into xk_backin_main (
<if test="org_type != null">org_type,</if>
<if test="back_org != null">back_org,</if>
<if test="handle_person != null">handle_person,</if>
<if test="total_money != null">total_money,</if>
<if test="back_date != null">back_date,</if>
<if test="input_person != null">input_person,</if>
<if test="input_date != null">input_date,</if>
<if test="audit_person != null">audit_person,</if>
<if test="audit_date != null">audit_date,</if>
<if test="remark != null">remark,</if>
<if test="charge_billno != null">charge_billno,</if>
bill_no
)values(
<if test="org_type != null">#{org_type},</if>
<if test="back_org != null">#{back_org},</if>
<if test="handle_person != null">#{handle_person},</if>
<if test="total_money != null">#{total_money},</if>
<if test="back_date != null">#{back_date},</if>
<if test="input_person != null">#{input_person},</if>
<if test="input_date != null">#{input_date},</if>
<if test="audit_person != null">#{audit_person},</if>
<if test="audit_date != null">#{audit_date},</if>
<if test="remark != null">#{remark},</if>
<if test="charge_billno != null">#{charge_billno},</if>
#{billNo})
</insert>
<update id="update">
update xk_backin_main set
<if test="org_type != null">org_type = #{org_type},</if>
<if test="back_org != null">back_org = #{back_org},</if>
<if test="handle_person != null">handle_person = #{handle_person},</if>
<if test="total_money != null">total_money = #{total_money},</if>
<if test="back_date != null">back_date = #{back_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="charge_billno != null">charge_billno = #{charge_billno},</if>
bill_no = #{bill_no}
where bill_no = #{billNo}
</update>
<delete id="deleteByBillNo">
delete from xk_backin_main where bill_no = #{billNo}
</delete>
<select id="queryList" resultType="com.czblood.bus.pojo.XkBackinMain">
select * from xk_backin_main
<where>

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.XkChargeDetailMapper">
<insert id="insert">
insert into xk_charge_detail(
bill_no,sid,serial_number,price,number,sum,remark,item_name,spec,charge_type,unit,charge_flag,blood_no,product_no
)values(
#{bill_no},#{sid},#{serial_number},#{price},#{number},#{sum},#{remark},#{item_name},#{spec},#{charge_type},#{unit},#{charge_flag},#{blood_no},#{product_no})
</insert>
<delete id="deleteByBillNo">
delete from xk_charge_detail where bill_no = #{bill_no}

View File

@ -0,0 +1,24 @@
<?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.XkChargeItemMapper">
<select id="queryList" resultType="com.czblood.bus.pojo.XkChargeItem">
select * from xk_charge_item
<where>
<if test="item_id != null">and item_id = #{item_id}</if>
<if test="item_name != null">and item_name like '%'+#{item_name}+'%'</if>
<if test="module_code != null">and module_code = #{module_code}</if>
<if test="his_code != null">and his_code = #{his_code}</if>
<if test="blood_breed != null">and blood_breed = #{blood_breed}</if>
<if test="rh_blood_type != null">and rh_blood_type = #{rh_blood_type}</if>
<if test="cure_item != null">and cure_item = #{cure_item}</if>
<if test="charge_type != null">and charge_type = #{charge_type}</if>
<if test="use_sign != null">and use_sign = #{use_sign}</if>
<if test="his_item_name != null">and his_item_name like '%'+#{his_item_name}+'%'</if>
</where>
</select>
<select id="queryOne" resultType="com.czblood.bus.pojo.XkChargeItem">
select * from xk_charge_item where item_id = #{item_id}
</select>
</mapper>

View File

@ -2,6 +2,29 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.czblood.bus.mapper.XkChargeMainMapper">
<insert id="insert">
insert into xk_charge_main (
<if test="relative_billno != null">relative_billno,</if>
<if test="remark != null">remark,</if>
<if test="send_flag != null">send_flag,</if>
<if test="check_sign != null">check_sign,</if>
<if test="last_modified != null">last_modified,</if>
<if test="send_time != null">send_time,</if>
<if test="read_time != null">read_time,</if>
<if test="read_flag != null">read_flag,</if>
bill_no,beinhos_id,occur_date,handle_person
)values(
<if test="relative_billno != null">#{relative_billno},</if>
<if test="remark != null">#{remark},</if>
<if test="send_flag != null">#{send_flag},</if>
<if test="check_sign != null">#{check_sign},</if>
<if test="last_modified != null">#{last_modified},</if>
<if test="send_time != null">#{send_time},</if>
<if test="read_time != null">#{read_time},</if>
<if test="read_flag != null">#{read_flag},</if>
#{bill_no},#{beinhos_id},#{occur_date},#{handle_person}
)
</insert>
<delete id="deleteByBillNo">
delete from xk_charge_main where bill_no = #{bill_no}

View File

@ -38,6 +38,13 @@
Msg_Type = #{msg_Type}
where msgid = #{msgid}
</update>
<update id="batchUpdateFlag">
update xk_msg_main set Read_Flag = 'Y', accept_Person = #{accept_Person}, accept_Date = #{accept_Date}
where msgid in
<foreach collection="msgVOList" item="msgid" open="(" separator="," close=")">
#{msgid}
</foreach>
</update>
<select id="queryOne" resultType="com.czblood.bus.pojo.XkMsgMain">
select * from xk_msg_main where msgid = #{msgId}

View File

@ -32,6 +32,23 @@
<if test="product_no != null">#{product_no},</if>
#{bill_no},#{sid} )
</insert>
<update id="update">
update xk_out_detail set
<if test="price != null">price = #{price},</if>
<if test="special_deal != null">special_deal = #{special_deal},</if>
<if test="have_reaction != null">have_reaction = #{have_reaction},</if>
<if test="finish_sign != null">finish_sign = #{finish_sign},</if>
<if test="accept_flag != null">accept_flag = #{accept_flag},</if>
<if test="exp1 != null">exp1 = #{exp1},</if>
<if test="exp2 != null">exp2 = #{exp2},</if>
<if test="exp3 != null">exp3 = #{exp3},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="accept_dept != null">accept_dept = #{accept_dept},</if>
blood_no = #{blood_no},product_no = #{product_no}
where bill_no = #{bill_no} and blood_no = #{blood_no} and product_no = #{product_no}
</update>
<delete id="deleteByBillNo">
delete from xk_out_detail where bill_no = #{billNo}
</delete>

View File

@ -1,19 +1,26 @@
package com.czblood.busBloodbank.controller;
import com.czblood.bus.constants.BloodSysLogConstants;
import com.czblood.busBloodbank.pojo.DTO.BackinDataDTO;
import com.czblood.busBloodbank.pojo.VO.BackinQueryVO;
import com.czblood.busBloodbank.service.BackinService;
import com.czblood.common.annotation.Log;
import com.czblood.common.core.controller.BaseController;
import com.czblood.common.core.domain.Result;
import com.czblood.common.core.page.TableDataInfo;
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;
import java.util.List;
import java.util.Map;
@Api(tags = "临床发血退血")
@RestController
@RequestMapping("/bus/bloodbank/backin")
public class BackinController {
public class BackinController extends BaseController {
@Resource
private BackinService backinService;
@ -23,4 +30,43 @@ public class BackinController {
public Result queryBloodInfo(String bloodNo,String productNo){
return backinService.queryBloodInfo(bloodNo,productNo);
}
@Log(title = BloodSysLogConstants.LOG_TYPE_BLOOD_BACK, businessType = BusinessType.INSERT)
@ApiOperation("保存数据")
@PostMapping("/saveData")
public Result saveData(@RequestBody BackinDataDTO backinDataDTO){
backinDataDTO.setUserId(getUsername());
return backinService.saveData(backinDataDTO);
}
@Log(title = BloodSysLogConstants.LOG_TYPE_BLOOD_OUT, businessType = BusinessType.CHECK)
@ApiOperation("审核数据")
@GetMapping("/auditData")
public Result auditData(String billNo){
String userId = getUsername();
return backinService.auditData(billNo,userId);
}
@Log(title = BloodSysLogConstants.LOG_TYPE_BLOOD_BACK, businessType = BusinessType.DELETE)
@ApiOperation("删除单据")
@GetMapping("/deleteData")
public Result deleteData(String billNo){
return backinService.deleteData(billNo);
}
@ApiOperation("查询列表")
@GetMapping("/queryList")
public TableDataInfo queryList(BackinQueryVO backinQueryVO){
startPage();
List<Map<String,Object>> list = backinService.queryList(backinQueryVO);
return getDataTable(list);
}
@ApiOperation("查询单个申请单信息")
@GetMapping("/queryInfo")
public Result queryInfo(String billNo){
return backinService.queryInfo(billNo);
}
}

View File

@ -2,6 +2,7 @@ package com.czblood.busBloodbank.controller;
import com.czblood.bus.pojo.XkMsgMain;
import com.czblood.busBloodbank.pojo.DTO.MsgDTO;
import com.czblood.busBloodbank.pojo.VO.MsgBatchVO;
import com.czblood.busBloodbank.pojo.VO.MsgVO;
import com.czblood.busBloodbank.service.MsgService;
import com.czblood.common.core.controller.BaseController;
@ -50,4 +51,10 @@ public class MsgController extends BaseController {
return msgService.updateFlag(msgVO);
}
@ApiOperation("批量更新消息状态")
@PostMapping("/batchUpdateFlag")
public Result batchUpdateFlag(@RequestBody MsgBatchVO msgBatchVO){
return msgService.batchUpdateFlag(msgBatchVO);
}
}

View File

@ -1,15 +1,16 @@
package com.czblood.busBloodbank.mapper;
import com.czblood.bus.pojo.XkOutDetail;
import com.czblood.busBloodbank.pojo.VO.BackinQueryVO;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
public interface BackinMapper {
List<XkOutDetail> queryXkOutDetailList(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
Date queryOutMainDate(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
List<Map<String, Object>> queryPatientInfo(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
List<Map<String,Object>> queryList(BackinQueryVO backinQueryVO);
}

View File

@ -0,0 +1,18 @@
package com.czblood.busBloodbank.pojo.DTO;
import com.czblood.bus.pojo.XkBackinDetail;
import com.czblood.bus.pojo.XkBackinMain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BackinDataDTO {
private XkBackinMain xkBackinMain;
private List<XkBackinDetail> xkBackinDetailList;
private String userId;
}

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 BackinQueryVO {
private String stime;
private String etime;
private String billNo;
private String dept;
}

View File

@ -0,0 +1,18 @@
package com.czblood.busBloodbank.pojo.VO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MsgBatchVO {
private List<Integer> msgIdList;
private String accept_Person;
private Date accept_Date;
}

View File

@ -1,7 +1,17 @@
package com.czblood.busBloodbank.service;
import com.czblood.busBloodbank.pojo.DTO.BackinDataDTO;
import com.czblood.busBloodbank.pojo.VO.BackinQueryVO;
import com.czblood.common.core.domain.Result;
import java.util.List;
import java.util.Map;
public interface BackinService {
Result queryBloodInfo(String bloodNo, String productNo);
Result saveData(BackinDataDTO backinDataDTO);
Result auditData(String billNo,String userId);
Result deleteData(String billNo);
List<Map<String,Object>> queryList(BackinQueryVO backinQueryVO);
Result queryInfo(String billNo);
}

View File

@ -2,6 +2,7 @@ package com.czblood.busBloodbank.service;
import com.czblood.bus.pojo.XkMsgMain;
import com.czblood.busBloodbank.pojo.DTO.MsgDTO;
import com.czblood.busBloodbank.pojo.VO.MsgBatchVO;
import com.czblood.busBloodbank.pojo.VO.MsgVO;
import com.czblood.common.core.domain.Result;
@ -13,4 +14,5 @@ public interface MsgService {
Result queryOne(int msgId);
Result updateFlag(MsgVO msgVO);
Result queryNoReadCount();
Result batchUpdateFlag(MsgBatchVO msgBatchVO);
}

View File

@ -1,17 +1,25 @@
package com.czblood.busBloodbank.service.impl;
import cn.hutool.core.date.DateUtil;
import com.czblood.bus.mapper.XkReactionMapper;
import com.czblood.bus.pojo.XkBloodInfo;
import com.czblood.bus.pojo.XkOutDetail;
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.busBloodbank.mapper.BackinMapper;
import com.czblood.busBloodbank.pojo.DTO.BackinDTO;
import com.czblood.busBloodbank.pojo.DTO.BackinDataDTO;
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 org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -25,6 +33,21 @@ public class BackinServiceImpl implements BackinService {
BackinMapper backinMapper;
@Resource
XkReactionMapper xkReactionMapper;
@Resource
XkChargeItemMapper xkChargeItemMapper;
@Resource
XkBackinMainMapper xkBackinMainMapper;
@Resource
XkBackinDetailMapper xkBackinDetailMapper;
@Resource
XkChargeMainMapper xkChargeMainMapper;
@Resource
XkChargeDetailMapper xkChargeDetailMapper;
@Resource
XkBloodInfoMapper xkBloodInfoMapper;
@Resource
XkOutDetailMapper xkOutDetailMapper;
@Override
public Result queryBloodInfo(String bloodNo, String productNo) {
@ -59,4 +82,191 @@ public class BackinServiceImpl implements BackinService {
backinDTO.setPatientInfoList(patientInfoList);
return new Result("0","操作成功",backinDTO);
}
@Override
public Result saveData(BackinDataDTO backinDataDTO) {
XkBackinMain xkBackinMain = backinDataDTO.getXkBackinMain();
List<XkBackinDetail> xkBackinDetailList = backinDataDTO.getXkBackinDetailList();
String billNo = BloodBankUtil.isBank(xkBackinMain.getBill_no());
String chargeBillNo = xkBackinMain.getCharge_billno();
String auditPerson = BloodBankUtil.isBank(xkBackinMain.getAudit_person());
if(!auditPerson.equals("")) return new Result("-1","该单据已经审核,不能修改!");
String newBillNo = "";
List<XkChargeDetail> xkChargeDetailList = new ArrayList<>();
String newChargeBillNo = "";
XkChargeMain xkChargeMainTemp = null;
if(billNo.equals("")){
//新增
newBillNo = bloodBankUtil.produceBillNo("LCTXD");
//保存费用表
newChargeBillNo = bloodBankUtil.produceBillNo("YXSF");
xkBackinMain.setCharge_billno(newChargeBillNo);
xkBackinMain.setBill_no(newBillNo);
xkBackinMain.setOrg_type("A");
xkBackinMain.setBack_org(backinDataDTO.getUserId());
xkBackinMain.setInput_date(bloodBankUtil.getCurrentTimeDate());
xkBackinMain.setInput_person(backinDataDTO.getUserId());
for (XkBackinDetail xkBackinDetail : xkBackinDetailList) {
xkBackinDetail.setBill_no(newBillNo);
}
xkChargeMainTemp = new XkChargeMain();
xkChargeMainTemp.setBill_no(newChargeBillNo);
xkChargeMainTemp.setHandle_person(backinDataDTO.getUserId());
xkChargeMainTemp.setOccur_date(bloodBankUtil.getCurrentTimeDate());
XkDmzd lctxyyCache = bloodBankUtil.getDictCacheOne("lctxyy", xkBackinDetailList.get(0).getReason());
xkChargeMainTemp.setRemark(lctxyyCache.getWordbook_name());
xkChargeMainTemp.setSend_flag("N");
xkChargeMainTemp.setCheck_sign("N");
}else{
//修改
newChargeBillNo = chargeBillNo;
}
XkChargeItem xkChargeItemQuery = new XkChargeItem();
xkChargeItemQuery.setModule_type("003"); //临床发血收费项目
List<XkChargeItem> xkChargeItemList = xkChargeItemMapper.queryList(xkChargeItemQuery);
int i = 0;
for (XkBackinDetail xkBackinDetail : xkBackinDetailList) {
i++;
String bloodNo = xkBackinDetail.getBlood_no();
String productNo = xkBackinDetail.getProduct_no();
XkBloodInfo xkBloodInfo = bloodBankUtil.queryBloodInfoOne(bloodNo, productNo);
String bloodBreed = xkBloodInfo.getBlood_breed();
String rhBloodType = xkBloodInfo.getRh_blood_type();
BigDecimal capacity = xkBloodInfo.getCapacity();
XkChargeItem xkChargeItemFind = xkChargeItemList.stream().filter(xkChargeItem -> xkChargeItem.getBlood_breed().equals(bloodBreed)
&& xkChargeItem.getRh_blood_type().equals(rhBloodType)
&& xkChargeItem.getCure_item().equals("A")
&& xkChargeItem.getSpec().equals(capacity)).findFirst().orElse(null);
if (xkChargeItemFind == null) return new Result("-1","没有找到该血液的收费项目!");
XkChargeDetail xkChargeDetailTemp = new XkChargeDetail();
xkChargeDetailTemp.setBill_no(newChargeBillNo);
xkChargeDetailTemp.setSerial_number(xkChargeItemFind.getItem_id());
xkChargeDetailTemp.setSpec(capacity.toString());
xkChargeDetailTemp.setUnit(xkBloodInfo.getUnit());
xkChargeDetailTemp.setPrice(xkChargeItemFind.getMoney());
xkChargeDetailTemp.setNumber(-1);
xkChargeDetailTemp.setSum(xkChargeItemFind.getMoney().multiply(new BigDecimal(-1)));
xkChargeDetailTemp.setItem_name(xkChargeItemFind.getItem_name());
xkChargeDetailTemp.setCharge_type(xkChargeItemFind.getCharge_type());
xkChargeDetailTemp.setSid(i);
xkChargeDetailTemp.setBlood_no(xkBloodInfo.getBlood_no());
xkChargeDetailTemp.setProduct_no(xkBloodInfo.getProduct_no());
xkChargeDetailList.add(xkChargeDetailTemp);
}
SpringUtils.getBean(BackinServiceImpl.class).saveChargeData(xkBackinMain,xkBackinDetailList,xkChargeMainTemp,xkChargeDetailList);
return new Result("0","保存成功!",newBillNo);
}
@Override
public Result auditData(String billNo,String userId) {
XkBackinMain xkBackinMain = xkBackinMainMapper.queryOne(billNo);
if(xkBackinMain == null) return new Result("-1","该单据不存在!");
String auditPerson = BloodBankUtil.isBank(xkBackinMain.getAudit_person());
if(!auditPerson.equals("")) return new Result("-1","该单据已经审核,不能重复审核!");
List<XkBackinDetail> xkBackinDetailList = xkBackinDetailMapper.queryListByBillNo(billNo);
List<XkBloodInfo> xkBloodInfoTempList = new ArrayList<>();
List<XkOutDetail> xkOutDetailList = new ArrayList<>();
for (XkBackinDetail xkBackinDetail : xkBackinDetailList) {
String bloodNo = xkBackinDetail.getBlood_no();
String productNo = xkBackinDetail.getProduct_no();
int count = xkReactionMapper.queryCount(bloodNo, productNo);
if(count > 0) return new Result("-1","血液流水号:"+bloodNo+"产品码:"+productNo+"已经登记了输血反应!!!");
XkBloodInfo xkBloodInfo = bloodBankUtil.queryBloodInfoOne(bloodNo, productNo);
if(xkBloodInfo == null) return new Result("-1","没有找到血液流水号:"+bloodNo+"产品码:"+productNo+"的该血液的信息!");
String bloodStatus = xkBloodInfo.getBlood_status();
switch (bloodStatus) {
case "1":
return new Result("-1","血液流水号:"+bloodNo+"产品码:"+productNo+"的血液为正常状态!");
case "2":
return new Result("-1","血液流水号:"+bloodNo+"产品码:"+productNo+"的血液已经报废!");
case "3":
return new Result("-1","血液流水号:"+bloodNo+"产品码:"+productNo+"的血液正在制备或者配血!");
case "4":
XkBloodInfo xkBloodInfoTemp = new XkBloodInfo();
xkBloodInfoTemp.setBlood_status("1");
xkBloodInfoTemp.setAbnor_sign("Y");
xkBloodInfoTemp.setBlood_no(xkBloodInfo.getBlood_no());
xkBloodInfoTemp.setProduct_no(xkBloodInfo.getProduct_no());
xkBloodInfoTempList.add(xkBloodInfoTemp);
XkOutDetail xkOutDetailTemp = new XkOutDetail();
xkOutDetailTemp.setExp1("Y");
xkOutDetailTemp.setBlood_no(xkBloodInfo.getBlood_no());
xkOutDetailTemp.setProduct_no(xkBloodInfo.getProduct_no());
xkOutDetailList.add(xkOutDetailTemp);
break;
}
}
XkBackinMain xkBackinMainTemp = new XkBackinMain();
xkBackinMainTemp.setBill_no(billNo);
xkBackinMainTemp.setAudit_person(userId);
xkBackinMainTemp.setAudit_date(bloodBankUtil.getCurrentTimeDate());
SpringUtils.getBean(BackinServiceImpl.class).saveAuditData(xkBloodInfoTempList,xkOutDetailList,xkBackinMainTemp);
//调用外部接口
BloodBackAuditRequest bloodBackAuditRequest = new BloodBackAuditRequest();
bloodBackAuditRequest.setBillNo(billNo);
Result result = BloodInterfaceUtil.invokeBloodInterface(bloodBackAuditRequest);
if(!result.getCode().equals("0")) return new Result("-1",result.getMsg());
return new Result("0","审核成功!");
}
@Override
public Result deleteData(String billNo) {
XkBackinMain xkBackinMain = xkBackinMainMapper.queryOne(billNo);
if(xkBackinMain == null) return new Result("-1","该单据不存在!");
String auditPerson = BloodBankUtil.isBank(xkBackinMain.getAudit_person());
if(!auditPerson.equals("")) return new Result("-1","该单据已经审核,不能删除!");
xkBackinMainMapper.deleteByBillNo(billNo);
xkBackinDetailMapper.deleteByBillNo(billNo);
return new Result("0","删除成功!");
}
@Override
public List<Map<String,Object>> queryList(BackinQueryVO backinQueryVO) {
return backinMapper.queryList(backinQueryVO);
}
@Override
public Result queryInfo(String billNo) {
XkBackinMain xkBackinMain = xkBackinMainMapper.queryOne(billNo);
List<XkBackinDetail> xkBackinDetailList = xkBackinDetailMapper.queryListByBillNo(billNo);
BackinDataDTO backinDataDTO = new BackinDataDTO();
backinDataDTO.setXkBackinMain(xkBackinMain);
backinDataDTO.setXkBackinDetailList(xkBackinDetailList);
return new Result("0","查询成功!",backinDataDTO);
}
@Transactional(rollbackFor = Exception.class)
public void saveChargeData(XkBackinMain xkBackinMain,List<XkBackinDetail> xkBackinDetailList,XkChargeMain xkChargeMain,List<XkChargeDetail> xkChargeDetailList){
xkBackinMainMapper.insert(xkBackinMain);
for (XkBackinDetail xkBackinDetail : xkBackinDetailList) {
xkBackinDetailMapper.insert(xkBackinDetail);
}
xkChargeMainMapper.insert(xkChargeMain);
xkChargeDetailMapper.deleteByBillNo(xkChargeMain.getBill_no());
for (XkChargeDetail xkChargeDetail : xkChargeDetailList) {
xkChargeDetailMapper.insert(xkChargeDetail);
}
}
@Transactional(rollbackFor = Exception.class)
public void saveAuditData(List<XkBloodInfo> xkBloodInfoTempList,List<XkOutDetail> xkOutDetailList,XkBackinMain xkBackinMain){
for (XkBloodInfo xkBloodInfo : xkBloodInfoTempList) {
xkBloodInfoMapper.update(xkBloodInfo);
}
for (XkOutDetail xkOutDetail : xkOutDetailList) {
xkOutDetailMapper.update(xkOutDetail);
}
xkBackinMainMapper.update(xkBackinMain);
}
}

View File

@ -7,12 +7,14 @@ import com.czblood.bus.pojo.XkMsgMain;
import com.czblood.bus.utils.BloodBankUtil;
import com.czblood.busBloodbank.mapper.MsgMapper;
import com.czblood.busBloodbank.pojo.DTO.MsgDTO;
import com.czblood.busBloodbank.pojo.VO.MsgBatchVO;
import com.czblood.busBloodbank.pojo.VO.MsgVO;
import com.czblood.busBloodbank.service.MsgService;
import com.czblood.common.core.domain.Result;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -61,4 +63,13 @@ public class MsgServiceImpl implements MsgService {
int noReadCount = xkMsgMainMapper.queryNoReadCount();
return new Result("0","查询成功",noReadCount);
}
@Override
public Result batchUpdateFlag(MsgBatchVO msgBatchVO) {
List<Integer> msgIdList = msgBatchVO.getMsgIdList();
Date acceptDate = msgBatchVO.getAccept_Date();
String acceptPerson = msgBatchVO.getAccept_Person();
xkMsgMainMapper.batchUpdateFlag(msgIdList,acceptPerson,acceptDate);
return new Result("0","更新成功");
}
}

View File

@ -33,4 +33,20 @@
( xk_out_detail.product_no = #{productNo})
</select>
<select id="queryList" resultType="java.util.Map">
SELECT distinct xk_backin_main.bill_no,
xk_backin_main.handle_person,
xk_backin_main.total_money,
xk_backin_main.back_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'
<if test="billNo != null">AND (xk_backin_main.bill_no = #{billNo})</if>
<if test="dept != null">and xk_backin_main.dept_id = #{dept}</if>
</select>
</mapper>

View File

@ -364,6 +364,19 @@ if not exists(select 1 from dbo.xk_dmzd where wordbook_sign = 'BASE')
('zccc','C','血液中心配血','Y'),
('zccc','W','未做','Y')
insert into xk_dmzd(wordbook_sign,wordbook_code,wordbook_name,use_sign) values('BASE','moduletype','收费模块','Y')
insert into xk_dmzd(wordbook_sign,wordbook_code,wordbook_name,use_sign) values
('moduletype','001','血型复核','Y'),
('moduletype','002','交叉配血','Y'),
('moduletype','003','临床发血','Y'),
('moduletype','004','紧急配血','Y'),
('moduletype','005','紧急发血','Y'),
('moduletype','006','自体血登记','Y'),
('moduletype','007','输血治疗登记','Y'),
('moduletype','008','自体血出库','Y'),
('moduletype','009','血型检定','Y'),
('moduletype','010','其他实验','Y'),
('moduletype','011','HIS收费字典','Y')
END
if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'xk_transfuse_apply_before' AND COLUMN_NAME = 'bill_status')
@ -502,4 +515,28 @@ go
ALTER TABLE xk_msg_detail ADD msgid bigint primary key;
go
ALTER TABLE xk_msg_detail ALTER COLUMN sid int null ;
go
go
if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'xk_charge_item' AND COLUMN_NAME = 'module_type')
BEGIN
alter table xk_charge_item add module_type varchar(10)
END
GO
if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'sys_menu' AND COLUMN_NAME = 'module_type')
BEGIN
alter table sys_menu add module_type varchar(10)
END
GO
if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'xk_backin_main' AND COLUMN_NAME = 'charge_billno')
BEGIN
alter table xk_backin_main add charge_billno varchar(20)
END
GO

View File

@ -201,3 +201,16 @@ IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_backin_deta
ALTER TABLE xk_backin_detail ADD CONSTRAINT PK_xk_backin_detail PRIMARY KEY CLUSTERED (bill_no,blood_no,product_no);
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_charge_item' AND type = 'PK' )
BEGIN
ALTER TABLE xk_charge_item ADD CONSTRAINT PK_xk_charge_item PRIMARY KEY CLUSTERED (item_id);
END
GO
-- 更新module_type字段
update xk_charge_item set module_type = '001' where module_code = '0202'
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'