diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ApplyOrderController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ApplyOrderController.java index 0fe5c69..4c0980b 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ApplyOrderController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ApplyOrderController.java @@ -73,6 +73,14 @@ public class ApplyOrderController extends BaseController { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); return applyOrderFacade.addOneSieveApplyOrder(applyOrderAddRequest, loginState.getId()); } + @RequestMapping(method = RequestMethod.POST,value = "/sieveapply_huada") + @ResponseBody + @TokenRequired + //增加产筛申请单_华大基因 + public BaseResponse addSieveApplyOrder_huada(@Valid @RequestBody SieveApplyOrderAddRequestHuada sieveApplyOrderAddRequestHuada,HttpServletRequest request) { + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + return applyOrderFacade.addOneSieveApplyOrder_huada(sieveApplyOrderAddRequestHuada, loginState.getId()); + } @RequestMapping(method = RequestMethod.GET, value = "/sieveapply") @ResponseBody @@ -91,7 +99,7 @@ public class ApplyOrderController extends BaseController { * @param orderQueryRequest * @return */ - @RequestMapping(method = RequestMethod.GET, value = "/applyorder") + @RequestMapping(method = RequestMethod.GET, value = "/sieveapply_huada") @ResponseBody @TokenRequired public BaseResponse queryApplyOrder(@Valid ApplyOrderQueryRequest orderQueryRequest, HttpServletRequest request) { diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java index 61bdf9b..ae60bd5 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java @@ -1,5 +1,8 @@ package com.lyms.platform.operate.web.facade; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.lyms.platform.biz.service.*; import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.enums.*; @@ -26,6 +29,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; +import java.text.SimpleDateFormat; import java.util.*; /** @@ -35,11 +39,15 @@ import java.util.*; */ @Component public class ApplyOrderFacade { - + public static final String HUADA_URL = PropertiesUtils.getPropertyValue("huada_url"); + public static final String SYSCODE = PropertiesUtils.getPropertyValue("huada_syscode"); + public static final String SECRET = PropertiesUtils.getPropertyValue("huada_secret"); @Autowired private ApplyOrderService applyOrderService; @Autowired + private ApplyOrderHuadaService applyOrderHuadaService; + @Autowired private PatientsService patientsService; @Autowired private AutoMatchFacade autoMatchFacade; @@ -1358,5 +1366,211 @@ public class ApplyOrderFacade { } return new BaseObjectResponse().setData("").setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); } + public BaseResponse addOneSieveApplyOrder_huada(SieveApplyOrderAddRequestHuada sieveApplyOrderAddRequestHuada, Integer userId) { + SieveApplyOrderHuadaModel sieveApplyOrderHuadaModel = sieveApplyOrderAddRequestHuada.convertToDataModel(); + //修改这块占时不写 + + String hospitalId = autoMatchFacade.getHospitalId(userId); + //表示区域的_暂时不使用(sieveApplyOrderAddRequestHuada, userId, sieveApplyOrderHuadaModel, hospitalId); + + SieveApplyOrderQuery sieveApplyOrderQuery1 = new SieveApplyOrderQuery(); + sieveApplyOrderQuery1.setParentId(sieveApplyOrderAddRequestHuada.getParentId()); + sieveApplyOrderQuery1.setHospitalId(hospitalId); + sieveApplyOrderQuery1.setYn(YnEnums.YES.getId()); + //先查询本院是否已申请 + List list1 = applyOrderHuadaService.querySieveApplyOrderWithQuery(sieveApplyOrderQuery1); + if (CollectionUtils.isEmpty(list1)) { + //增加产筛 + sieveApplyOrderHuadaModel.setCreated(new Date()); + sieveApplyOrderHuadaModel.setHospitalId(hospitalId); + sieveApplyOrderHuadaModel.setInformedConsent("02"); + sieveApplyOrderHuadaModel.setInformedConsentVersion("02"); + sieveApplyOrderHuadaModel.setGestationalWeeks(getWeeks(sieveApplyOrderAddRequestHuada.getGestationalWeeks()));//孕周 + sieveApplyOrderHuadaModel.setChargeType("3"); + Patients patients = patientsService.findOnePatientById(sieveApplyOrderAddRequestHuada.getParentId()); + Date lmp = patients.getFuckLastMens() == null ? patients.getLastMenses() : patients.getFuckLastMens(); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + sieveApplyOrderHuadaModel.setLmp(formatter.format(lmp));//末次月经 + sieveApplyOrderHuadaModel.setAge(patients.getAge().toString()); + SieveApplyOrderHuadaModel sieveApplyOrderHuadaModel1 = applyOrderHuadaService.addOneSieveApplyOrder(sieveApplyOrderHuadaModel); + /*优惠卷改为已使用状态,等看看设计这块有没有这块需求 + if (StringUtils.isNotBlank(sieveApplyOrderAddRequestHuada.getCouponCode())) { + couponService.use(hospitalId, sieveApplyOrderAddRequestHuada.getCouponCode(), userId, sieveApplyOrderHuadaModel1.getId()); + }*/ + operateLogFacade.addAddOptLog(userId, Integer.parseInt(hospitalId), sieveApplyOrderHuadaModel, OptActionEnums.ADD.getId(), "增加产筛申请单"); + + //调用华大基因接口 + sieveApplyOrderHuadaModel.setExtBaseInfoId(sieveApplyOrderHuadaModel1.getId()); + boolean b = huadaSaveSampleInfo(sieveApplyOrderHuadaModel); + if(b){ + System.out.println("华大基因5.1.保存送检单成功"); + //华大基因产筛申请,保存成功后在改变产筛状态 + //产前产筛状态,等看看设计这块有没有这块需求 + // updateSieveStatus(sieveApplyOrderAddRequestHuada, userId, sieveApplyOrderHuadaModel, hospitalId); + + }else { + operateLogFacade.addAddOptLog(userId, Integer.parseInt(hospitalId), sieveApplyOrderHuadaModel, OptActionEnums.ADD.getId(), "华大基因5.1.保存送检单失败"); + } + }else { + return new BaseResponse().setErrorcode(ErrorCodeConstants.DATA_EXIST).setErrormsg("已申请过产筛"); + } + return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); + + } + private String getWeeks(String str) { + String s1=null; + s1 = str.replace("孕", ""); + s1 = s1.replace("周", "w"); + s1 = s1.replace("天", ""); + return s1; + } + + private void 表示区域的_暂时不使用(SieveApplyOrderAddRequestHuada sieveApplyOrderAddRequestHuada, Integer userId, SieveApplyOrderHuadaModel sieveApplyOrderHuadaModel, String hospitalId) { + if (StringUtils.isNotEmpty(groupsFacade.findByCurrentUserId(hospitalId))) { + String parentId = antenatalExaminationFacade.handHideBuild(sieveApplyOrderAddRequestHuada.getPid(), sieveApplyOrderAddRequestHuada.getParentId(), userId, -1); + if (StringUtils.isEmpty(parentId)) { + throw new BusinessException(); + //打印日志 + } else { + sieveApplyOrderHuadaModel.setParentId(parentId); + sieveApplyOrderAddRequestHuada.setParentId(parentId); + Patients p = patientsService.findOnePatientById(parentId); + //加入产筛 + patientsService.validata(p); + } + } + } + + private void updateSieveStatus(SieveApplyOrderAddRequestHuada sieveApplyOrderAddRequestHuada, Integer userId, SieveApplyOrderHuadaModel sieveApplyOrderHuadaModel, String hospitalId) { + SieveQuery sieveQuery = new SieveQuery(); + sieveQuery.setYn(YnEnums.YES.getId()); + sieveQuery.setParentId(sieveApplyOrderAddRequestHuada.getParentId()); + List sieveModels = sieveService.queryList(sieveQuery); + if (CollectionUtils.isNotEmpty(sieveModels)) + { + SieveModel sieveModel = sieveModels.get(0); + sieveModel.setReviceStatus(1); + sieveModel.setSieveHospitalId(sieveApplyOrderAddRequestHuada.getSieveHospitalId()); + sieveModel.setApplyHospitalId(hospitalId); + sieveModel.setApplyTime(sieveApplyOrderHuadaModel.getApplyTime()); + sieveModel.setStatus(2); + if (StringUtils.isNotEmpty(sieveApplyOrderHuadaModel.getCheckDate())) { + sieveModel.setApplyDate(DateUtil.parseYMD(sieveApplyOrderHuadaModel.getCheckDate())); + } + int days = DateUtil.daysBetween(sieveModel.getLastMenses(), sieveModel.getApplyDate()); + sieveModel.setDueWeek(days); + SieveService.handOrder(sieveModel); + sieveService.updateOneChanQianDiaSieve(sieveModel); + operateLogFacade.addModifyOptLog(userId, Integer.parseInt(hospitalId), sieveModels.get(0), sieveModel, OptActionEnums.UPDATE.getId(), "增加产前筛查"); + } + } + + + public boolean huadaSaveSampleInfo(Object o){ + try { + ArrayList paramsList = new ArrayList(); + AllParamsRequest paramsRequest = new AllParamsRequest(); + paramsRequest.setProductLine("3"); + paramsRequest.setSampleInfo(o); + paramsRequest.setIdentifying(""); + paramsList.add(paramsRequest); + String jsonString = JSON.toJSONString(paramsList.toArray()); + HashMap map = new HashMap<>(); + map.put("params", jsonString); + + Map signParams = getSignParams(SYSCODE, SECRET); + String timestamp = signParams.get("timestamp").toString(); + timestamp = timestamp.replaceAll(" ", "%20");//空格替换成 %20 + String syscode = signParams.get("syscode").toString(); + String sign = signParams.get("sign").toString(); + String s = HttpClientUtil.sendPost(HUADA_URL + "/intf?method=saveSampleInfo&"+ "timestamp=" + timestamp + "&syscode=" + syscode + "&sign=" + sign, map); + System.out.println(s); + JSONObject jsonObject = JSONObject.parseObject(s); + JSONObject rows = JSONObject.parseObject(jsonObject.get("rows").toString()); + JSONArray jsonArray = JSONArray.parseArray(rows.get("successedList").toString()); + if (jsonArray.isEmpty()){ + return false; + } + return true; + } catch (Exception e) { + e.printStackTrace(); + } + return false; + } + + /** + * 获取签名map + * @param syscode 系统编码 + * @param secret 系统秘钥 + * @return + */ + public static Map getSignParams(String syscode,String secret) { + Map signParams=new HashMap<>(); + signParams.put("syscode", syscode); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + signParams.put("timestamp", sdf.format(new Date())); + String unencryptedStr=getUnencryptedStr(signParams); + String sign2=MD5.getMD5(secret+unencryptedStr+secret);//获取数字签名 + System.out.println("sign2 "+sign2); + signParams.put("sign", sign2); + return signParams; + } + /** + * 获取待加密字符串 + * @param signParams + * @return + */ + public static String getUnencryptedStr(Map signParams) { + List paramsList = new ArrayList<>(); + for (String key : signParams.keySet()) { + if ("sign".equals(key)) { + continue; + } + String value = (String) signParams.get(key); + paramsList.add(key + value);//将参数转换成key+value格式 + } + Object[] paramsArray = (Object[]) paramsList.toArray(); + Arrays.sort(paramsArray);//ascii码排序 + String unencryptedStr = "";//待加密字符串 + for (Object paramStr : paramsArray) { + unencryptedStr += paramStr; + } + return unencryptedStr; + } + + public BaseResponse callbackLyms(net.sf.json.JSONObject jsonObject) { + System.out.println(jsonObject); + return null; + } + /*拼json使用*/ + class AllParamsRequest{ + private String productLine; + private String identifying; + private Object sampleInfo; + + public String getIdentifying() { + return identifying; + } + + public void setIdentifying(String identifying) { + this.identifying = identifying; + } + + public String getProductLine() { + return productLine; + } + + public void setProductLine(String productLine) { + this.productLine = productLine; + } + + public Object getSampleInfo() { + return sampleInfo; + } + + public void setSampleInfo(Object sampleInfo) { + this.sampleInfo = sampleInfo; + } + } } \ No newline at end of file