血液品种合并,优化

This commit is contained in:
wuyy 2026-09-16 17:38:09 +08:00
parent f22d0b1382
commit 55c63173e2
6 changed files with 280 additions and 226 deletions

View File

@ -23,6 +23,7 @@ import com.czblood.busBloodbank.pojo.VO.BloodOutQueryVO;
import com.czblood.busBloodbank.service.BloodOutService; import com.czblood.busBloodbank.service.BloodOutService;
import com.czblood.busBloodbank.utils.BloodOutUtil; import com.czblood.busBloodbank.utils.BloodOutUtil;
import com.czblood.busBloodbank.utils.MatchBloodUtil; import com.czblood.busBloodbank.utils.MatchBloodUtil;
import com.czblood.busBloodbank.utils.MergeArrayUtil;
import com.czblood.common.core.domain.Result; import com.czblood.common.core.domain.Result;
import com.czblood.common.core.domain.entity.SysUser; import com.czblood.common.core.domain.entity.SysUser;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -62,7 +63,6 @@ public class BloodOutServiceImpl implements BloodOutService {
ReportUtil reportUtil; ReportUtil reportUtil;
@Override @Override
public Result queryOne(String applyNo, String moreSign) { public Result queryOne(String applyNo, String moreSign) {
XkTransfuseApply xkTransfuseApply = xkTransfuseApplyMapper.queryOne(applyNo); XkTransfuseApply xkTransfuseApply = xkTransfuseApplyMapper.queryOne(applyNo);
@ -90,7 +90,8 @@ public class BloodOutServiceImpl implements BloodOutService {
@Override @Override
public Result queryWaitInfo() { public Result queryWaitInfo() {
List<Map<String, Object>> queryWaitInfoList = bloodOutMapper.queryWaitInfo(); List<Map<String, Object>> queryWaitInfoList = bloodOutMapper.queryWaitInfo();
return new Result("0","操作成功",queryWaitInfoList); List<Map<String, Object>> finalList = MergeArrayUtil.mergeArray(queryWaitInfoList, "bill_no", "blood_breed");
return new Result("0", "操作成功", finalList);
} }
@Override @Override
@ -186,7 +187,9 @@ public class BloodOutServiceImpl implements BloodOutService {
if (checkSign.equals("Y")) return new Result("-1", "该单据已经通过审核,不能作修改!"); if (checkSign.equals("Y")) return new Result("-1", "该单据已经通过审核,不能作修改!");
bloodOutUtil.updateBloodOutInfo(bloodOutInfoVO); bloodOutUtil.updateBloodOutInfo(bloodOutInfoVO);
} }
return new Result("0","保存成功!",newBillNo);
if(billNo.isEmpty()) billNo = newBillNo;
return new Result("0", "保存成功!", billNo);
} }
@Override @Override
@ -386,6 +389,7 @@ public class BloodOutServiceImpl implements BloodOutService {
/** /**
* 判断血液是否已经出库 * 判断血液是否已经出库
*
* @return * @return
*/ */
public Result checkOnOut(String bloodNo, String productNo) { public Result checkOnOut(String bloodNo, String productNo) {
@ -425,7 +429,8 @@ public class BloodOutServiceImpl implements BloodOutService {
if (matchBloodList.isEmpty()) return new Result("-1", "该血液尚未配血,或者所配的血液不是给该病患,请检查!"); if (matchBloodList.isEmpty()) return new Result("-1", "该血液尚未配血,或者所配的血液不是给该病患,请检查!");
String canSend = BloodBankUtil.isBank(matchBloodList.get(0).get("can_send")); String canSend = BloodBankUtil.isBank(matchBloodList.get(0).get("can_send"));
String result = BloodBankUtil.isBank(matchBloodList.get(0).get("result")); String result = BloodBankUtil.isBank(matchBloodList.get(0).get("result"));
if(canSend.equals("") || canSend.equals("N")) return new Result("-1","该血液的配血结果为:"+result+",不能发血!"); if (canSend.equals("") || canSend.equals("N"))
return new Result("-1", "该血液的配血结果为:" + result + ",不能发血!");
bloodOutInfoDTO.setCheck_method(BloodBankUtil.isBank(matchBloodList.get(0).get("check_method"))); bloodOutInfoDTO.setCheck_method(BloodBankUtil.isBank(matchBloodList.get(0).get("check_method")));
bloodOutInfoDTO.setMatch_method(BloodBankUtil.isBank(matchBloodList.get(0).get("match_method"))); bloodOutInfoDTO.setMatch_method(BloodBankUtil.isBank(matchBloodList.get(0).get("match_method")));
bloodOutInfoDTO.setResult(result); bloodOutInfoDTO.setResult(result);
@ -454,6 +459,7 @@ public class BloodOutServiceImpl implements BloodOutService {
/** /**
* 通知护士取血 * 通知护士取血
*
* @param billNo * @param billNo
*/ */
public Result notifyBloodOut(String billNo) { public Result notifyBloodOut(String billNo) {

View File

@ -13,11 +13,14 @@ import com.czblood.busBloodbank.pojo.VO.HistoryQueryVO;
import com.czblood.busBloodbank.pojo.VO.XkCheckBloodtypeVO; import com.czblood.busBloodbank.pojo.VO.XkCheckBloodtypeVO;
import com.czblood.busBloodbank.service.CheckBloodTypeService; import com.czblood.busBloodbank.service.CheckBloodTypeService;
import com.czblood.busBloodbank.utils.CheckBloodTypeUtil; import com.czblood.busBloodbank.utils.CheckBloodTypeUtil;
import com.czblood.busBloodbank.utils.MergeArrayUtil;
import com.czblood.common.core.domain.Result; import com.czblood.common.core.domain.Result;
import com.czblood.common.core.page.TableDataInfo; import com.czblood.common.core.page.TableDataInfo;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -46,7 +49,9 @@ public class CheckBloodTypeServiceImpl implements CheckBloodTypeService {
String bbjszhxxfh = bloodBankUtil.getParameterValue("BBJSZHXXFH"); String bbjszhxxfh = bloodBankUtil.getParameterValue("BBJSZHXXFH");
if (bbjszhxxfh.equals("Y")) xxfh = 1; if (bbjszhxxfh.equals("Y")) xxfh = 1;
List<Map<String, Object>> mapList = checkBloodTypeMapper.queryWaitInfo(xxfh); List<Map<String, Object>> mapList = checkBloodTypeMapper.queryWaitInfo(xxfh);
return new Result("0","获取数据成功!",mapList); //根据单据编号合并血液品种
List<Map<String, Object>> finalList = MergeArrayUtil.mergeArray(mapList, "bill_no", "blood_breed");
return new Result("0", "获取数据成功!", finalList);
} }
@Override @Override
@ -64,6 +69,7 @@ public class CheckBloodTypeServiceImpl implements CheckBloodTypeService {
/** /**
* 保存数据 * 保存数据
*
* @param xkCheckBloodtypeVO * @param xkCheckBloodtypeVO
* @return * @return
*/ */

View File

@ -16,6 +16,7 @@ import com.czblood.busBloodbank.pojo.VO.MatchBloodStockQueryVO;
import com.czblood.busBloodbank.pojo.VO.MatchBloodVO; import com.czblood.busBloodbank.pojo.VO.MatchBloodVO;
import com.czblood.busBloodbank.service.MatchBloodService; import com.czblood.busBloodbank.service.MatchBloodService;
import com.czblood.busBloodbank.utils.MatchBloodUtil; import com.czblood.busBloodbank.utils.MatchBloodUtil;
import com.czblood.busBloodbank.utils.MergeArrayUtil;
import com.czblood.common.core.domain.Result; import com.czblood.common.core.domain.Result;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -50,7 +51,8 @@ public class MatchBloodServiceImpl implements MatchBloodService {
@Override @Override
public Result queryWaitInfo() { public Result queryWaitInfo() {
List<Map<String, Object>> mapList = matchBloodMapper.queryWaitInfo(); List<Map<String, Object>> mapList = matchBloodMapper.queryWaitInfo();
return new Result("0","获取数据成功!",mapList); List<Map<String, Object>> finalList = MergeArrayUtil.mergeArray(mapList, "bill_no", "blood_breed");
return new Result("0", "获取数据成功!", finalList);
} }
@Override @Override
@ -67,11 +69,13 @@ public class MatchBloodServiceImpl implements MatchBloodService {
case "S": case "S":
return new Result("-1", "该申请单已经追加配血,可直接在临床发血中发血!"); return new Result("-1", "该申请单已经追加配血,可直接在临床发血中发血!");
case "D": case "D":
if(matchBloodMapper.checkMatchBloodNotOut(billNo) > 0) return new Result("-1","检测到该申请单尚有配好的血液未出库,请先出库再进行配血!"); if (matchBloodMapper.checkMatchBloodNotOut(billNo) > 0)
return new Result("-1", "检测到该申请单尚有配好的血液未出库,请先出库再进行配血!");
case "BD": case "BD":
return new Result("-1", "该申请单为补单,若要配血,请先复核血型!"); return new Result("-1", "该申请单为补单,若要配血,请先复核血型!");
case "B": case "B":
if(matchBloodMapper.queryCheckBloodTypeCount(billNo) <= 0) return new Result("-1","该申请单尚未复核血型,请先复核血型!"); if (matchBloodMapper.queryCheckBloodTypeCount(billNo) <= 0)
return new Result("-1", "该申请单尚未复核血型,请先复核血型!");
case "A": case "A":
return new Result("-1", "该申请单尚未审核,请先审核!"); return new Result("-1", "该申请单尚未审核,请先审核!");
} }
@ -213,7 +217,7 @@ public class MatchBloodServiceImpl implements MatchBloodService {
Result result1 = BloodInterfaceUtil.invokeBloodInterface(matchBloodTypeRequest); Result result1 = BloodInterfaceUtil.invokeBloodInterface(matchBloodTypeRequest);
if (!result1.getCode().equals("0")) return result1; if (!result1.getCode().equals("0")) return result1;
return new Result("0","保存成功!"); return new Result("0", "保存成功!", billNo);
} }
@Override @Override

View File

@ -0,0 +1,38 @@
package com.czblood.busBloodbank.utils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/*
* 根据字段去重合并数据
* @param list 数据源
* @param field 去重字段
* @param mergeField 合并字段
* */
public class MergeArrayUtil {
public static List<Map<String, Object>> mergeArray(List<Map<String, Object>> list, String field, String mergeField) {
Map<String, Map<String, Object>> resultMap = new HashMap<>();
for (Map<String, Object> item : list) {
String billNo = (String) item.get(field);
// 如果该数据还不存在,直接存入
if (!resultMap.containsKey(billNo)) {
List<String> breedList = new ArrayList<>();
breedList.add((String) item.get(mergeField));
item.put(mergeField, breedList);
resultMap.put(billNo, new HashMap<>(item));
} else {
// 已经存在,取出旧对象
Map<String, Object> existMap = resultMap.get(billNo);
@SuppressWarnings("unchecked")
List<String> breedList = (List<String>) existMap.get(mergeField);
breedList.add((String) item.get(mergeField));
existMap.put(mergeField, breedList);
}
}
return new ArrayList<>(resultMap.values());
}
}

View File

@ -1,7 +1,7 @@
package com.czblood.start; package com.czblood.start;
import com.czblood.bus.mapper.XKHosInfoMapper; //import com.czblood.bus.mapper.XKHosInfoMapper;
import com.czblood.bus.pojo.XkHosInfo; //import com.czblood.bus.pojo.XkHosInfo;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
@ -11,13 +11,13 @@ import java.util.List;
@SpringBootTest @SpringBootTest
public class SpringBootAllTest { public class SpringBootAllTest {
@Resource // @Resource
XKHosInfoMapper xkHosInfoMapper; // XKHosInfoMapper xkHosInfoMapper;
@Test // @Test
public void test1(){ // public void test1(){
XkHosInfo xkHosInfo = new XkHosInfo(); // XkHosInfo xkHosInfo = new XkHosInfo();
List<XkHosInfo> xkHosInfoList = xkHosInfoMapper.query(xkHosInfo); // List<XkHosInfo> xkHosInfoList = xkHosInfoMapper.query(xkHosInfo);
System.out.println(xkHosInfoList); // System.out.println(xkHosInfoList);
} // }
} }