Commit d1913b17805b2196b3a6f06258e6762489e535c7

Authored by wtt
1 parent ec48b61c22

华大基因产筛申请冲突修改

Showing 2 changed files with 224 additions and 2 deletions

platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ApplyOrderController.java View file @ d1913b1
... ... @@ -73,6 +73,14 @@
73 73 LoginContext loginState = (LoginContext) request.getAttribute("loginContext");
74 74 return applyOrderFacade.addOneSieveApplyOrder(applyOrderAddRequest, loginState.getId());
75 75 }
  76 + @RequestMapping(method = RequestMethod.POST,value = "/sieveapply_huada")
  77 + @ResponseBody
  78 + @TokenRequired
  79 + //增加产筛申请单_华大基因
  80 + public BaseResponse addSieveApplyOrder_huada(@Valid @RequestBody SieveApplyOrderAddRequestHuada sieveApplyOrderAddRequestHuada,HttpServletRequest request) {
  81 + LoginContext loginState = (LoginContext) request.getAttribute("loginContext");
  82 + return applyOrderFacade.addOneSieveApplyOrder_huada(sieveApplyOrderAddRequestHuada, loginState.getId());
  83 + }
76 84  
77 85 @RequestMapping(method = RequestMethod.GET, value = "/sieveapply")
78 86 @ResponseBody
... ... @@ -91,7 +99,7 @@
91 99 * @param orderQueryRequest
92 100 * @return
93 101 */
94   - @RequestMapping(method = RequestMethod.GET, value = "/applyorder")
  102 + @RequestMapping(method = RequestMethod.GET, value = "/sieveapply_huada")
95 103 @ResponseBody
96 104 @TokenRequired
97 105 public BaseResponse queryApplyOrder(@Valid ApplyOrderQueryRequest orderQueryRequest, HttpServletRequest request) {
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java View file @ d1913b1
1 1 package com.lyms.platform.operate.web.facade;
2 2  
  3 +import com.alibaba.fastjson.JSON;
  4 +import com.alibaba.fastjson.JSONArray;
  5 +import com.alibaba.fastjson.JSONObject;
3 6 import com.lyms.platform.biz.service.*;
4 7 import com.lyms.platform.common.constants.ErrorCodeConstants;
5 8 import com.lyms.platform.common.enums.*;
... ... @@ -26,6 +29,7 @@
26 29 import javax.servlet.http.HttpServletResponse;
27 30 import java.io.IOException;
28 31 import java.io.OutputStream;
  32 +import java.text.SimpleDateFormat;
29 33 import java.util.*;
30 34  
31 35 /**
32 36  
33 37  
... ... @@ -35,11 +39,15 @@
35 39 */
36 40 @Component
37 41 public class ApplyOrderFacade {
  42 + public static final String HUADA_URL = PropertiesUtils.getPropertyValue("huada_url");
  43 + public static final String SYSCODE = PropertiesUtils.getPropertyValue("huada_syscode");
  44 + public static final String SECRET = PropertiesUtils.getPropertyValue("huada_secret");
38 45  
39   -
40 46 @Autowired
41 47 private ApplyOrderService applyOrderService;
42 48 @Autowired
  49 + private ApplyOrderHuadaService applyOrderHuadaService;
  50 + @Autowired
43 51 private PatientsService patientsService;
44 52 @Autowired
45 53 private AutoMatchFacade autoMatchFacade;
46 54  
... ... @@ -1358,6 +1366,212 @@
1358 1366 }
1359 1367 return new BaseObjectResponse().setData("").setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功");
1360 1368 }
  1369 + public BaseResponse addOneSieveApplyOrder_huada(SieveApplyOrderAddRequestHuada sieveApplyOrderAddRequestHuada, Integer userId) {
  1370 + SieveApplyOrderHuadaModel sieveApplyOrderHuadaModel = sieveApplyOrderAddRequestHuada.convertToDataModel();
  1371 + //修改这块占时不写
1361 1372  
  1373 + String hospitalId = autoMatchFacade.getHospitalId(userId);
  1374 + //表示区域的_暂时不使用(sieveApplyOrderAddRequestHuada, userId, sieveApplyOrderHuadaModel, hospitalId);
  1375 +
  1376 + SieveApplyOrderQuery sieveApplyOrderQuery1 = new SieveApplyOrderQuery();
  1377 + sieveApplyOrderQuery1.setParentId(sieveApplyOrderAddRequestHuada.getParentId());
  1378 + sieveApplyOrderQuery1.setHospitalId(hospitalId);
  1379 + sieveApplyOrderQuery1.setYn(YnEnums.YES.getId());
  1380 + //先查询本院是否已申请
  1381 + List<SieveApplyOrderHuadaModel> list1 = applyOrderHuadaService.querySieveApplyOrderWithQuery(sieveApplyOrderQuery1);
  1382 + if (CollectionUtils.isEmpty(list1)) {
  1383 + //增加产筛
  1384 + sieveApplyOrderHuadaModel.setCreated(new Date());
  1385 + sieveApplyOrderHuadaModel.setHospitalId(hospitalId);
  1386 + sieveApplyOrderHuadaModel.setInformedConsent("02");
  1387 + sieveApplyOrderHuadaModel.setInformedConsentVersion("02");
  1388 + sieveApplyOrderHuadaModel.setGestationalWeeks(getWeeks(sieveApplyOrderAddRequestHuada.getGestationalWeeks()));//孕周
  1389 + sieveApplyOrderHuadaModel.setChargeType("3");
  1390 + Patients patients = patientsService.findOnePatientById(sieveApplyOrderAddRequestHuada.getParentId());
  1391 + Date lmp = patients.getFuckLastMens() == null ? patients.getLastMenses() : patients.getFuckLastMens();
  1392 + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  1393 + sieveApplyOrderHuadaModel.setLmp(formatter.format(lmp));//末次月经
  1394 + sieveApplyOrderHuadaModel.setAge(patients.getAge().toString());
  1395 + SieveApplyOrderHuadaModel sieveApplyOrderHuadaModel1 = applyOrderHuadaService.addOneSieveApplyOrder(sieveApplyOrderHuadaModel);
  1396 + /*优惠卷改为已使用状态,等看看设计这块有没有这块需求
  1397 + if (StringUtils.isNotBlank(sieveApplyOrderAddRequestHuada.getCouponCode())) {
  1398 + couponService.use(hospitalId, sieveApplyOrderAddRequestHuada.getCouponCode(), userId, sieveApplyOrderHuadaModel1.getId());
  1399 + }*/
  1400 + operateLogFacade.addAddOptLog(userId, Integer.parseInt(hospitalId), sieveApplyOrderHuadaModel, OptActionEnums.ADD.getId(), "增加产筛申请单");
  1401 +
  1402 + //调用华大基因接口
  1403 + sieveApplyOrderHuadaModel.setExtBaseInfoId(sieveApplyOrderHuadaModel1.getId());
  1404 + boolean b = huadaSaveSampleInfo(sieveApplyOrderHuadaModel);
  1405 + if(b){
  1406 + System.out.println("华大基因5.1.保存送检单成功");
  1407 + //华大基因产筛申请,保存成功后在改变产筛状态
  1408 + //产前产筛状态,等看看设计这块有没有这块需求
  1409 + // updateSieveStatus(sieveApplyOrderAddRequestHuada, userId, sieveApplyOrderHuadaModel, hospitalId);
  1410 +
  1411 + }else {
  1412 + operateLogFacade.addAddOptLog(userId, Integer.parseInt(hospitalId), sieveApplyOrderHuadaModel, OptActionEnums.ADD.getId(), "华大基因5.1.保存送检单失败");
  1413 + }
  1414 + }else {
  1415 + return new BaseResponse().setErrorcode(ErrorCodeConstants.DATA_EXIST).setErrormsg("已申请过产筛");
  1416 + }
  1417 + return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功");
  1418 +
  1419 + }
  1420 +
  1421 + private String getWeeks(String str) {
  1422 + String s1=null;
  1423 + s1 = str.replace("孕", "");
  1424 + s1 = s1.replace("周", "w");
  1425 + s1 = s1.replace("天", "");
  1426 + return s1;
  1427 + }
  1428 +
  1429 + private void 表示区域的_暂时不使用(SieveApplyOrderAddRequestHuada sieveApplyOrderAddRequestHuada, Integer userId, SieveApplyOrderHuadaModel sieveApplyOrderHuadaModel, String hospitalId) {
  1430 + if (StringUtils.isNotEmpty(groupsFacade.findByCurrentUserId(hospitalId))) {
  1431 + String parentId = antenatalExaminationFacade.handHideBuild(sieveApplyOrderAddRequestHuada.getPid(), sieveApplyOrderAddRequestHuada.getParentId(), userId, -1);
  1432 + if (StringUtils.isEmpty(parentId)) {
  1433 + throw new BusinessException();
  1434 + //打印日志
  1435 + } else {
  1436 + sieveApplyOrderHuadaModel.setParentId(parentId);
  1437 + sieveApplyOrderAddRequestHuada.setParentId(parentId);
  1438 + Patients p = patientsService.findOnePatientById(parentId);
  1439 + //加入产筛
  1440 + patientsService.validata(p);
  1441 + }
  1442 + }
  1443 + }
  1444 +
  1445 + private void updateSieveStatus(SieveApplyOrderAddRequestHuada sieveApplyOrderAddRequestHuada, Integer userId, SieveApplyOrderHuadaModel sieveApplyOrderHuadaModel, String hospitalId) {
  1446 + SieveQuery sieveQuery = new SieveQuery();
  1447 + sieveQuery.setYn(YnEnums.YES.getId());
  1448 + sieveQuery.setParentId(sieveApplyOrderAddRequestHuada.getParentId());
  1449 + List<SieveModel> sieveModels = sieveService.queryList(sieveQuery);
  1450 + if (CollectionUtils.isNotEmpty(sieveModels))
  1451 + {
  1452 + SieveModel sieveModel = sieveModels.get(0);
  1453 + sieveModel.setReviceStatus(1);
  1454 + sieveModel.setSieveHospitalId(sieveApplyOrderAddRequestHuada.getSieveHospitalId());
  1455 + sieveModel.setApplyHospitalId(hospitalId);
  1456 + sieveModel.setApplyTime(sieveApplyOrderHuadaModel.getApplyTime());
  1457 + sieveModel.setStatus(2);
  1458 + if (StringUtils.isNotEmpty(sieveApplyOrderHuadaModel.getCheckDate())) {
  1459 + sieveModel.setApplyDate(DateUtil.parseYMD(sieveApplyOrderHuadaModel.getCheckDate()));
  1460 + }
  1461 + int days = DateUtil.daysBetween(sieveModel.getLastMenses(), sieveModel.getApplyDate());
  1462 + sieveModel.setDueWeek(days);
  1463 + SieveService.handOrder(sieveModel);
  1464 + sieveService.updateOneChanQianDiaSieve(sieveModel);
  1465 + operateLogFacade.addModifyOptLog(userId, Integer.parseInt(hospitalId), sieveModels.get(0), sieveModel, OptActionEnums.UPDATE.getId(), "增加产前筛查");
  1466 + }
  1467 + }
  1468 +
  1469 +
  1470 + public boolean huadaSaveSampleInfo(Object o){
  1471 + try {
  1472 + ArrayList<AllParamsRequest> paramsList = new ArrayList();
  1473 + AllParamsRequest paramsRequest = new AllParamsRequest();
  1474 + paramsRequest.setProductLine("3");
  1475 + paramsRequest.setSampleInfo(o);
  1476 + paramsRequest.setIdentifying("");
  1477 + paramsList.add(paramsRequest);
  1478 + String jsonString = JSON.toJSONString(paramsList.toArray());
  1479 + HashMap<String, String> map = new HashMap<>();
  1480 + map.put("params", jsonString);
  1481 +
  1482 + Map<String, Object> signParams = getSignParams(SYSCODE, SECRET);
  1483 + String timestamp = signParams.get("timestamp").toString();
  1484 + timestamp = timestamp.replaceAll(" ", "%20");//空格替换成 %20
  1485 + String syscode = signParams.get("syscode").toString();
  1486 + String sign = signParams.get("sign").toString();
  1487 + String s = HttpClientUtil.sendPost(HUADA_URL + "/intf?method=saveSampleInfo&"+ "timestamp=" + timestamp + "&syscode=" + syscode + "&sign=" + sign, map);
  1488 + System.out.println(s);
  1489 + JSONObject jsonObject = JSONObject.parseObject(s);
  1490 + JSONObject rows = JSONObject.parseObject(jsonObject.get("rows").toString());
  1491 + JSONArray jsonArray = JSONArray.parseArray(rows.get("successedList").toString());
  1492 + if (jsonArray.isEmpty()){
  1493 + return false;
  1494 + }
  1495 + return true;
  1496 + } catch (Exception e) {
  1497 + e.printStackTrace();
  1498 + }
  1499 + return false;
  1500 + }
  1501 +
  1502 + /**
  1503 + * 获取签名map
  1504 + * @param syscode 系统编码
  1505 + * @param secret 系统秘钥
  1506 + * @return
  1507 + */
  1508 + public static Map<String, Object> getSignParams(String syscode,String secret) {
  1509 + Map<String, Object> signParams=new HashMap<>();
  1510 + signParams.put("syscode", syscode);
  1511 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1512 + signParams.put("timestamp", sdf.format(new Date()));
  1513 + String unencryptedStr=getUnencryptedStr(signParams);
  1514 + String sign2=MD5.getMD5(secret+unencryptedStr+secret);//获取数字签名
  1515 + System.out.println("sign2 "+sign2);
  1516 + signParams.put("sign", sign2);
  1517 + return signParams;
  1518 + }
  1519 + /**
  1520 + * 获取待加密字符串
  1521 + * @param signParams
  1522 + * @return
  1523 + */
  1524 + public static String getUnencryptedStr(Map<String, Object> signParams) {
  1525 + List<String> paramsList = new ArrayList<>();
  1526 + for (String key : signParams.keySet()) {
  1527 + if ("sign".equals(key)) {
  1528 + continue;
  1529 + }
  1530 + String value = (String) signParams.get(key);
  1531 + paramsList.add(key + value);//将参数转换成key+value格式
  1532 + }
  1533 + Object[] paramsArray = (Object[]) paramsList.toArray();
  1534 + Arrays.sort(paramsArray);//ascii码排序
  1535 + String unencryptedStr = "";//待加密字符串
  1536 + for (Object paramStr : paramsArray) {
  1537 + unencryptedStr += paramStr;
  1538 + }
  1539 + return unencryptedStr;
  1540 + }
  1541 +
  1542 + public BaseResponse callbackLyms(net.sf.json.JSONObject jsonObject) {
  1543 + System.out.println(jsonObject);
  1544 + return null;
  1545 + }
  1546 + /*拼json使用*/
  1547 + class AllParamsRequest{
  1548 + private String productLine;
  1549 + private String identifying;
  1550 + private Object sampleInfo;
  1551 +
  1552 + public String getIdentifying() {
  1553 + return identifying;
  1554 + }
  1555 +
  1556 + public void setIdentifying(String identifying) {
  1557 + this.identifying = identifying;
  1558 + }
  1559 +
  1560 + public String getProductLine() {
  1561 + return productLine;
  1562 + }
  1563 +
  1564 + public void setProductLine(String productLine) {
  1565 + this.productLine = productLine;
  1566 + }
  1567 +
  1568 + public Object getSampleInfo() {
  1569 + return sampleInfo;
  1570 + }
  1571 +
  1572 + public void setSampleInfo(Object sampleInfo) {
  1573 + this.sampleInfo = sampleInfo;
  1574 + }
  1575 + }
1362 1576 }