From 5fb1e91dc89431434c474c3afc31598c5cd050b4 Mon Sep 17 00:00:00 2001 From: jiangs <373297395@qq.com> Date: Mon, 7 Sep 2026 16:30:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E5=BA=8A=E5=8F=91=E8=A1=80=E9=80=80?= =?UTF-8?q?=E8=A1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bus/mapper/XkBackinDetailMapper.java | 2 + .../bus/mapper/XkDiscardDetailMapper.java | 4 + .../bus/mapper/XkDiscardMainMapper.java | 4 + .../com/czblood/bus/pojo/XkBackinDetail.java | 3 + .../com/czblood/bus/pojo/XkBackinMain.java | 2 - .../resources/mapper/XkBackinDetailMapper.xml | 9 +- .../resources/mapper/XkBackinMainMapper.xml | 7 +- ...kChargeItem.xml => XkChargeItemMapper.xml} | 0 .../mapper/XkDiscardDetailMapper.xml | 6 + .../resources/mapper/XkDiscardMainMapper.xml | 6 + .../controller/DiscardMainController.java | 27 +++ .../busBloodbank/mapper/BackinMapper.java | 1 + .../busBloodbank/pojo/DTO/BackinBloodDTO.java | 19 ++ .../busBloodbank/pojo/DTO/BackinDataDTO.java | 3 +- .../service/DiscardMainService.java | 7 + .../service/impl/BackinServiceImpl.java | 205 +++++++++++++----- .../service/impl/DiscardMainServiceImpl.java | 13 ++ .../main/resources/mapper/BackinMapper.xml | 6 + .../czblood/common/config/RuoYiConfig.java | 3 +- .../common/utils/file/FileUploadUtils.java | 22 +- .../controller/common/CommonController.java | 16 +- sql/updatedb_blood.sql | 4 +- 22 files changed, 289 insertions(+), 80 deletions(-) create mode 100644 blood_bus/src/main/java/com/czblood/bus/mapper/XkDiscardDetailMapper.java create mode 100644 blood_bus/src/main/java/com/czblood/bus/mapper/XkDiscardMainMapper.java rename blood_bus/src/main/resources/mapper/{XkChargeItem.xml => XkChargeItemMapper.xml} (100%) create mode 100644 blood_bus/src/main/resources/mapper/XkDiscardDetailMapper.xml create mode 100644 blood_bus/src/main/resources/mapper/XkDiscardMainMapper.xml create mode 100644 blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/controller/DiscardMainController.java create mode 100644 blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/DTO/BackinBloodDTO.java create mode 100644 blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/DiscardMainService.java create mode 100644 blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/impl/DiscardMainServiceImpl.java diff --git a/blood_bus/src/main/java/com/czblood/bus/mapper/XkBackinDetailMapper.java b/blood_bus/src/main/java/com/czblood/bus/mapper/XkBackinDetailMapper.java index a251831..c95bc2b 100644 --- a/blood_bus/src/main/java/com/czblood/bus/mapper/XkBackinDetailMapper.java +++ b/blood_bus/src/main/java/com/czblood/bus/mapper/XkBackinDetailMapper.java @@ -1,6 +1,7 @@ package com.czblood.bus.mapper; import com.czblood.bus.pojo.XkBackinDetail; +import io.lettuce.core.dynamic.annotation.Param; import java.util.List; @@ -8,4 +9,5 @@ public interface XkBackinDetailMapper { List queryListByBillNo(String billNo); void insert(XkBackinDetail xkBackinDetail); void deleteByBillNo(String billNo); + void deleteOne(@Param("billNo") String billNo,@Param("bloodNo") String bloodNo,@Param("productNo") String productNo); } diff --git a/blood_bus/src/main/java/com/czblood/bus/mapper/XkDiscardDetailMapper.java b/blood_bus/src/main/java/com/czblood/bus/mapper/XkDiscardDetailMapper.java new file mode 100644 index 0000000..d5958c7 --- /dev/null +++ b/blood_bus/src/main/java/com/czblood/bus/mapper/XkDiscardDetailMapper.java @@ -0,0 +1,4 @@ +package com.czblood.bus.mapper; + +public interface XkDiscardDetailMapper { +} diff --git a/blood_bus/src/main/java/com/czblood/bus/mapper/XkDiscardMainMapper.java b/blood_bus/src/main/java/com/czblood/bus/mapper/XkDiscardMainMapper.java new file mode 100644 index 0000000..345507f --- /dev/null +++ b/blood_bus/src/main/java/com/czblood/bus/mapper/XkDiscardMainMapper.java @@ -0,0 +1,4 @@ +package com.czblood.bus.mapper; + +public interface XkDiscardMainMapper { +} diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/XkBackinDetail.java b/blood_bus/src/main/java/com/czblood/bus/pojo/XkBackinDetail.java index 73f814e..3fbaa9e 100644 --- a/blood_bus/src/main/java/com/czblood/bus/pojo/XkBackinDetail.java +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/XkBackinDetail.java @@ -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; @@ -18,4 +19,6 @@ public class XkBackinDetail { private BigDecimal price; private String reason; private String product_no; + @ApiModelProperty("收费退血单号") + private String charge_billno; } diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/XkBackinMain.java b/blood_bus/src/main/java/com/czblood/bus/pojo/XkBackinMain.java index 8baa7a8..28183fc 100644 --- a/blood_bus/src/main/java/com/czblood/bus/pojo/XkBackinMain.java +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/XkBackinMain.java @@ -34,6 +34,4 @@ public class XkBackinMain { @ApiModelProperty("审核日期") private Date audit_date; private String remark; - @ApiModelProperty("收费退血单号") - private String charge_billno; } diff --git a/blood_bus/src/main/resources/mapper/XkBackinDetailMapper.xml b/blood_bus/src/main/resources/mapper/XkBackinDetailMapper.xml index 5444562..d3d7484 100644 --- a/blood_bus/src/main/resources/mapper/XkBackinDetailMapper.xml +++ b/blood_bus/src/main/resources/mapper/XkBackinDetailMapper.xml @@ -4,15 +4,18 @@ insert into xk_backin_detail ( - bill_no,sid,blood_no,price,reason,product_no + bill_no,sid,blood_no,price,reason,product_no,charge_billno )values( - #{bill_no},#{sid},#{blood_no},#{price},#{reason},#{product_no}) + #{bill_no},#{sid},#{blood_no},#{price},#{reason},#{product_no},#{charge_billno}) delete from xk_backin_detail where bill_no = #{billNo} + + delete from xk_backin_detail where bill_no = #{billNo} and blood_no = #{bloodNo} and product_no = #{productNo} + \ No newline at end of file diff --git a/blood_bus/src/main/resources/mapper/XkBackinMainMapper.xml b/blood_bus/src/main/resources/mapper/XkBackinMainMapper.xml index 7bf219e..1595d25 100644 --- a/blood_bus/src/main/resources/mapper/XkBackinMainMapper.xml +++ b/blood_bus/src/main/resources/mapper/XkBackinMainMapper.xml @@ -14,7 +14,6 @@ audit_person, audit_date, remark, - charge_billno, bill_no )values( #{org_type}, @@ -27,8 +26,7 @@ #{audit_person}, #{audit_date}, #{remark}, - #{charge_billno}, - #{billNo}) + #{bill_no}) update xk_backin_main set @@ -42,9 +40,8 @@ audit_person = #{audit_person}, audit_date = #{audit_date}, remark = #{remark}, - charge_billno = #{charge_billno}, bill_no = #{bill_no} - where bill_no = #{billNo} + where bill_no = #{bill_no} delete from xk_backin_main where bill_no = #{billNo} diff --git a/blood_bus/src/main/resources/mapper/XkChargeItem.xml b/blood_bus/src/main/resources/mapper/XkChargeItemMapper.xml similarity index 100% rename from blood_bus/src/main/resources/mapper/XkChargeItem.xml rename to blood_bus/src/main/resources/mapper/XkChargeItemMapper.xml diff --git a/blood_bus/src/main/resources/mapper/XkDiscardDetailMapper.xml b/blood_bus/src/main/resources/mapper/XkDiscardDetailMapper.xml new file mode 100644 index 0000000..0631f4a --- /dev/null +++ b/blood_bus/src/main/resources/mapper/XkDiscardDetailMapper.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/blood_bus/src/main/resources/mapper/XkDiscardMainMapper.xml b/blood_bus/src/main/resources/mapper/XkDiscardMainMapper.xml new file mode 100644 index 0000000..4fcf9b9 --- /dev/null +++ b/blood_bus/src/main/resources/mapper/XkDiscardMainMapper.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/controller/DiscardMainController.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/controller/DiscardMainController.java new file mode 100644 index 0000000..ee0fed1 --- /dev/null +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/controller/DiscardMainController.java @@ -0,0 +1,27 @@ +package com.czblood.busBloodbank.controller; + +import com.czblood.busBloodbank.service.DiscardMainService; +import com.czblood.common.core.domain.Result; +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 javax.annotation.Resource; + +@Api(tags = "血液报废") +@RestController +@RequestMapping("/bus/bloodbank/discardMain") +public class DiscardMainController { + + @Resource + private DiscardMainService discardMainService; + + @ApiOperation("查询血液信息") + @GetMapping("/queryBloodInfo") + public Result queryBloodInfo(String bloodNo,String productNo){ + return discardMainService.queryBloodInfo(bloodNo,productNo); + } + +} diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/mapper/BackinMapper.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/mapper/BackinMapper.java index 3cc92b3..eb4cd33 100644 --- a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/mapper/BackinMapper.java +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/mapper/BackinMapper.java @@ -13,4 +13,5 @@ public interface BackinMapper { Date queryOutMainDate(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo); List> queryPatientInfo(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo); List> queryList(BackinQueryVO backinQueryVO); + String queryMaxApplyNo(@Param("beinhos_id") String beinhos_id,@Param("bloodNo") String bloodNo, @Param("productNo")String productNo); } diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/DTO/BackinBloodDTO.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/DTO/BackinBloodDTO.java new file mode 100644 index 0000000..05490dc --- /dev/null +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/DTO/BackinBloodDTO.java @@ -0,0 +1,19 @@ +package com.czblood.busBloodbank.pojo.DTO; + +import com.czblood.bus.pojo.XkBackinDetail; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Map; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class BackinBloodDTO { + private XkBackinDetail xkBackinDetail; + private Map patientInfo; + @ApiModelProperty("标志位,1:新增,2:删除") + private String flag; +} diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/DTO/BackinDataDTO.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/DTO/BackinDataDTO.java index 3ee3025..983eff4 100644 --- a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/DTO/BackinDataDTO.java +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/DTO/BackinDataDTO.java @@ -7,12 +7,13 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; +import java.util.Map; @Data @AllArgsConstructor @NoArgsConstructor public class BackinDataDTO { private XkBackinMain xkBackinMain; - private List xkBackinDetailList; + private List xkBackinDetailList; private String userId; } diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/DiscardMainService.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/DiscardMainService.java new file mode 100644 index 0000000..7f85709 --- /dev/null +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/DiscardMainService.java @@ -0,0 +1,7 @@ +package com.czblood.busBloodbank.service; + +import com.czblood.common.core.domain.Result; + +public interface DiscardMainService { + Result queryBloodInfo(String bloodNo, String productNo); +} diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/impl/BackinServiceImpl.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/impl/BackinServiceImpl.java index 1463870..1251def 100644 --- a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/impl/BackinServiceImpl.java +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/impl/BackinServiceImpl.java @@ -10,6 +10,7 @@ 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.BackinBloodDTO; import com.czblood.busBloodbank.pojo.DTO.BackinDTO; import com.czblood.busBloodbank.pojo.DTO.BackinDataDTO; import com.czblood.busBloodbank.pojo.VO.BackinQueryVO; @@ -21,10 +22,7 @@ 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; +import java.util.*; @Service public class BackinServiceImpl implements BackinService { @@ -92,84 +90,57 @@ public class BackinServiceImpl implements BackinService { @Override public Result saveData(BackinDataDTO backinDataDTO) { XkBackinMain xkBackinMain = backinDataDTO.getXkBackinMain(); - List xkBackinDetailList = backinDataDTO.getXkBackinDetailList(); + List 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 xkChargeMainList = new ArrayList<>(); List 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()); BigDecimal totalMoney = BigDecimal.ZERO; - for (XkBackinDetail xkBackinDetail : xkBackinDetailList) { + for (BackinBloodDTO backinBloodDTO : xkBackinDetailList) { + XkBackinDetail xkBackinDetail = backinBloodDTO.getXkBackinDetail(); List 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); + Result result = insertChargeInfo(backinBloodDTO,backinDataDTO.getUserId()); + if(!result.getCode().equals("0")) return result; + XkChargeMain xkChargeMain = null; + XkChargeDetail xkChargeDetail = null; + if(result.getData() != null){ + Map mapData = (Map)result.getData(); + xkChargeMain = (XkChargeMain)mapData.get("xkChargeMain"); + xkChargeDetail = (XkChargeDetail)mapData.get("xkChargeDetail"); + xkChargeMainList.add(xkChargeMain); + xkChargeDetailList.add(xkChargeDetail); + xkBackinDetail.setCharge_billno(xkChargeMain.getBill_no()); + } } xkBackinMain.setTotal_money(totalMoney); //总金额 - 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"); + SpringUtils.getBean(BackinServiceImpl.class).saveChargeData(xkBackinMain,xkBackinDetailList,xkChargeMainList,xkChargeDetailList); }else{ //修改 - newChargeBillNo = chargeBillNo; + Result result = SpringUtils.getBean(BackinServiceImpl.class).updateChargeData(xkBackinMain, xkBackinDetailList, backinDataDTO); + if(!result.getCode().equals("0")) return result; } - XkChargeItem xkChargeItemQuery = new XkChargeItem(); - xkChargeItemQuery.setModule_type("003"); //临床发血收费项目 - List 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); } @@ -251,7 +222,17 @@ public class BackinServiceImpl implements BackinService { List xkBackinDetailList = xkBackinDetailMapper.queryListByBillNo(billNo); BackinDataDTO backinDataDTO = new BackinDataDTO(); backinDataDTO.setXkBackinMain(xkBackinMain); - backinDataDTO.setXkBackinDetailList(xkBackinDetailList); + List backinBloodDTOList = new ArrayList<>(); + for (XkBackinDetail xkBackinDetail : xkBackinDetailList) { + String bloodNo = xkBackinDetail.getBlood_no(); + String productNo = xkBackinDetail.getProduct_no(); + List> patientInfoList = backinMapper.queryPatientInfo(bloodNo, productNo); + BackinBloodDTO backinBloodDTO = new BackinBloodDTO(); + backinBloodDTO.setPatientInfo(patientInfoList.get(0)); + backinBloodDTO.setXkBackinDetail(xkBackinDetail); + backinBloodDTOList.add(backinBloodDTO); + } + backinDataDTO.setXkBackinDetailList(backinBloodDTOList); return new Result("0","查询成功!",backinDataDTO); } @@ -266,13 +247,15 @@ public class BackinServiceImpl implements BackinService { } @Transactional(rollbackFor = Exception.class) - public void saveChargeData(XkBackinMain xkBackinMain,List xkBackinDetailList,XkChargeMain xkChargeMain,List xkChargeDetailList){ + public void saveChargeData(XkBackinMain xkBackinMain,List xkBackinDetailList,List xkChargeMainList,List xkChargeDetailList){ xkBackinMainMapper.insert(xkBackinMain); - for (XkBackinDetail xkBackinDetail : xkBackinDetailList) { + for (BackinBloodDTO backinBloodDTO : xkBackinDetailList) { + XkBackinDetail xkBackinDetail = backinBloodDTO.getXkBackinDetail(); xkBackinDetailMapper.insert(xkBackinDetail); } - xkChargeMainMapper.insert(xkChargeMain); - xkChargeDetailMapper.deleteByBillNo(xkChargeMain.getBill_no()); + for (XkChargeMain xkChargeMain : xkChargeMainList) { + xkChargeMainMapper.insert(xkChargeMain); + } for (XkChargeDetail xkChargeDetail : xkChargeDetailList) { xkChargeDetailMapper.insert(xkChargeDetail); } @@ -291,4 +274,106 @@ public class BackinServiceImpl implements BackinService { xkBackinMainMapper.update(xkBackinMain); } -} + @Transactional(rollbackFor = Exception.class) + public Result updateChargeData(XkBackinMain xkBackinMain,List xkBackinDetailList,BackinDataDTO backinDataDTO){ + xkBackinMainMapper.update(xkBackinMain); + for (BackinBloodDTO backinBloodDTO : xkBackinDetailList) { + XkBackinDetail xkBackinDetail = backinBloodDTO.getXkBackinDetail(); + String flag = backinBloodDTO.getFlag(); + if(flag.equals("1")){ + //新增 + Result result = insertChargeInfo(backinBloodDTO,backinDataDTO.getUserId()); + if(!result.getCode().equals("0")) return new Result("-1",result.getMsg()); + XkChargeMain xkChargeMain = null; + XkChargeDetail xkChargeDetail = null; + if(result.getData() != null){ + Map mapData = (Map)result.getData(); + xkChargeMain = (XkChargeMain)mapData.get("main"); + xkChargeDetail = (XkChargeDetail)mapData.get("detailList"); + } + if(xkChargeMain != null) xkChargeMainMapper.insert(xkChargeMain); + if(xkChargeDetail != null) xkChargeDetailMapper.insert(xkChargeDetail); + //回写单号 + 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","更新成功!"); + } + + /** + * 组装退费信息数据 + * @param backinBloodDTO + * @return + */ + public Result insertChargeInfo(BackinBloodDTO backinBloodDTO,String userId){ + XkChargeItem xkChargeItemQuery = new XkChargeItem(); + xkChargeItemQuery.setModule_type("003"); + List xkChargeItemList = xkChargeItemMapper.queryList(xkChargeItemQuery); + + XkBackinDetail xkBackinDetail = backinBloodDTO.getXkBackinDetail(); + Map patientInfo = backinBloodDTO.getPatientInfo(); + String beinhosId = BloodBankUtil.isBank(patientInfo.get("beinhos_id")); + + String bloodNo = xkBackinDetail.getBlood_no(); + String productNo = xkBackinDetail.getProduct_no(); + XkBloodInfo xkBloodInfo = bloodBankUtil.queryBloodInfoOne(bloodNo, productNo); + if (xkBloodInfo == null) + return new Result("-1", "没有找到血液信息!流水号:" + bloodNo + " 产品码:" + productNo); + + String currentChargeBillNo = bloodBankUtil.produceBillNo("YXSF"); + XkChargeMain currentMain = new XkChargeMain(); + currentMain.setBill_no(currentChargeBillNo); + currentMain.setHandle_person(userId); + currentMain.setOccur_date(bloodBankUtil.getCurrentTimeDate()); + XkDmzd lctxyyCache = bloodBankUtil.getDictCacheOne("lctxyy", xkBackinDetail.getReason()); + currentMain.setRemark(lctxyyCache != null ? lctxyyCache.getWordbook_name() : ""); + currentMain.setSend_flag("N"); + currentMain.setCheck_sign("N"); + currentMain.setBeinhos_id(beinhosId); + + String maxApplyNo = backinMapper.queryMaxApplyNo(beinhosId, bloodNo, productNo); + currentMain.setRelative_billno(maxApplyNo); + + String bloodBreed = xkBloodInfo.getBlood_breed(); + String rhBloodType = xkBloodInfo.getRh_blood_type(); + BigDecimal capacity = xkBloodInfo.getCapacity(); + XkChargeItem xkChargeItemFind = xkChargeItemList.stream() + .filter(item -> BloodBankUtil.isBank(item.getBlood_breed()).equals(bloodBreed) + && BloodBankUtil.isBank(item.getRh_blood_type()).equals(rhBloodType) + && BloodBankUtil.isBank(item.getCure_item()).equals("A") + && item.getSpec() != null + && item.getSpec().compareTo(capacity) == 0) + .findFirst().orElse(null); + if (xkChargeItemFind == null) return new Result("-1", "没有找到该血液的收费项目!"); + + XkChargeDetail xkChargeDetailTemp = new XkChargeDetail(); + xkChargeDetailTemp.setBill_no(currentChargeBillNo); + 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(1); + xkChargeDetailTemp.setBlood_no(xkBloodInfo.getBlood_no()); + xkChargeDetailTemp.setProduct_no(xkBloodInfo.getProduct_no()); + + + Map groupMap = new HashMap<>(); + groupMap.put("xkChargeMain", currentMain); + groupMap.put("xkChargeDetail", xkChargeDetailTemp); + + + return new Result("0", "计算成功!", groupMap); + } + +} \ No newline at end of file diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/impl/DiscardMainServiceImpl.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/impl/DiscardMainServiceImpl.java new file mode 100644 index 0000000..b50692a --- /dev/null +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/impl/DiscardMainServiceImpl.java @@ -0,0 +1,13 @@ +package com.czblood.busBloodbank.service.impl; + +import com.czblood.busBloodbank.service.DiscardMainService; +import com.czblood.common.core.domain.Result; +import org.springframework.stereotype.Service; + +@Service +public class DiscardMainServiceImpl implements DiscardMainService { + @Override + public Result queryBloodInfo(String bloodNo, String productNo) { + return null; + } +} diff --git a/blood_bus_bloodbank/src/main/resources/mapper/BackinMapper.xml b/blood_bus_bloodbank/src/main/resources/mapper/BackinMapper.xml index 4a3a067..c8126ff 100644 --- a/blood_bus_bloodbank/src/main/resources/mapper/BackinMapper.xml +++ b/blood_bus_bloodbank/src/main/resources/mapper/BackinMapper.xml @@ -49,4 +49,10 @@ and xk_backin_main.dept_id = #{dept} + \ No newline at end of file diff --git a/blood_common/src/main/java/com/czblood/common/config/RuoYiConfig.java b/blood_common/src/main/java/com/czblood/common/config/RuoYiConfig.java index cf64f57..40db6f8 100644 --- a/blood_common/src/main/java/com/czblood/common/config/RuoYiConfig.java +++ b/blood_common/src/main/java/com/czblood/common/config/RuoYiConfig.java @@ -184,7 +184,8 @@ public class RuoYiConfig { * 获取上传路径 */ public static String getUploadPath() { - return getProfile() + "/upload"; + //上传文件的路径以存模块的路径为准,后面在这个基础上面添加文件夹 + return getProfile() + "/templates"; } public static String getOpenInterface() { diff --git a/blood_common/src/main/java/com/czblood/common/utils/file/FileUploadUtils.java b/blood_common/src/main/java/com/czblood/common/utils/file/FileUploadUtils.java index 2f2c6c6..cbf95af 100644 --- a/blood_common/src/main/java/com/czblood/common/utils/file/FileUploadUtils.java +++ b/blood_common/src/main/java/com/czblood/common/utils/file/FileUploadUtils.java @@ -77,6 +77,26 @@ public class FileUploadUtils { } } + /** + * 保持原始文件名直接上传到 baseDir 下(不生成日期子目录、不添加随机ID,同名覆盖) + * + * @param baseDir 相对应用的基目录 + * @param file 上传的文件 + * @return 文件名称 + * @throws IOException + */ + public static final String uploadKeepOriginalName(String baseDir, MultipartFile file) throws IOException { + try { + String originalFilename = Objects.requireNonNull(file.getOriginalFilename()); + assertAllowed(file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION); + String absPath = getAbsoluteFile(baseDir, originalFilename).getAbsolutePath(); + file.transferTo(Paths.get(absPath)); + return getPathFileName(baseDir, originalFilename); + } catch (Exception e) { + throw new IOException(e.getMessage(), e); + } + } + /** * 文件上传 * @@ -196,4 +216,4 @@ public class FileUploadUtils { } return extension; } -} +} \ No newline at end of file diff --git a/blood_system/src/main/java/com/czblood/system/web/controller/common/CommonController.java b/blood_system/src/main/java/com/czblood/system/web/controller/common/CommonController.java index 4158c4f..efcec7d 100644 --- a/blood_system/src/main/java/com/czblood/system/web/controller/common/CommonController.java +++ b/blood_system/src/main/java/com/czblood/system/web/controller/common/CommonController.java @@ -78,16 +78,22 @@ public class CommonController { @PostMapping("/upload") public AjaxResult uploadFile(MultipartFile file) throws Exception { try { - // 上传文件路径 String filePath = RuoYiConfig.getUploadPath(); - // 上传并返回新文件名称 - String fileName = FileUploadUtils.upload(filePath, file); + String originalFilename = file.getOriginalFilename(); + String fileName; + + if (originalFilename != null && originalFilename.toLowerCase().endsWith(".jrxml")) { + fileName = FileUploadUtils.uploadKeepOriginalName(filePath, file); + } else { + fileName = FileUploadUtils.upload(filePath, file); + } + String url = serverConfig.getUrl() + fileName; AjaxResult ajax = AjaxResult.success(); ajax.put("url", url); ajax.put("fileName", fileName); ajax.put("newFileName", FileUtils.getName(fileName)); - ajax.put("originalFilename", file.getOriginalFilename()); + ajax.put("originalFilename", originalFilename); return ajax; } catch (Exception e) { return AjaxResult.error(e.getMessage()); @@ -149,4 +155,4 @@ public class CommonController { log.error("下载文件失败", e); } } -} +} \ No newline at end of file diff --git a/sql/updatedb_blood.sql b/sql/updatedb_blood.sql index 25927b9..4170b92 100644 --- a/sql/updatedb_blood.sql +++ b/sql/updatedb_blood.sql @@ -535,8 +535,8 @@ if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'sys_ GO -if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'xk_backin_main' AND COLUMN_NAME = 'charge_billno') +if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'xk_backin_detail' AND COLUMN_NAME = 'charge_billno') BEGIN - alter table xk_backin_main add charge_billno varchar(20) + alter table xk_backin_detail add charge_billno varchar(20) END GO \ No newline at end of file