diff --git a/src/main/java/com/glxp/api/controller/basic/UdiRelevanceController.java b/src/main/java/com/glxp/api/controller/basic/UdiRelevanceController.java index ece144c28..9758cbc08 100644 --- a/src/main/java/com/glxp/api/controller/basic/UdiRelevanceController.java +++ b/src/main/java/com/glxp/api/controller/basic/UdiRelevanceController.java @@ -423,9 +423,9 @@ public class UdiRelevanceController extends BaseController { try { ThreadUtil.execAsync(() -> { CodeRel codeRel = new CodeRel(); - if(udiProductEntity.getProductsType() == null || udiProductEntity.getProductsType() == 1){ + if (udiProductEntity.getProductsType() == null || udiProductEntity.getProductsType() == 1) { codeRel.setDiNameCode(udiRelevanceSaveRequest.getNameCode()); - }else { + } else { codeRel.setDrugCode(udiRelevanceSaveRequest.getNameCode()); } codeRel.setYbbm(udiRelevanceSaveRequest.getYbbm()); @@ -434,8 +434,8 @@ public class UdiRelevanceController extends BaseController { codeRel.setUpdateTime(new Date()); spsDirectClient.updateCodeRelDetail(codeRel); }); - }catch (Exception e){ - System.out.println("上传多码融合:"+e); + } catch (Exception e) { + System.out.println("上传多码融合:" + e); } return ResultVOUtils.success("更新成功"); diff --git a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java index 62ba6582a..5a5a68411 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -829,9 +829,14 @@ public class IoCodeTempController extends BaseController { } } else { - if (IntUtil.value(udiRelevanceResponse.getDistributeMaxLevel()) < IntUtil.value(udiRelevanceResponse.getPackLevel())) { + if (udiRelevanceResponse.getDistributeMaxLevel() != null && IntUtil.value(udiRelevanceResponse.getDistributeMaxLevel()) < IntUtil.value(udiRelevanceResponse.getPackLevel())) { return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!"); } + + if (udiRelevanceResponse.getDistributeMaxLevel() == null && IntUtil.value(udiRelevanceResponse.getPackLevel()) > 1) { + return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!"); + } + if (IntUtil.value(udiRelevanceResponse.getPackLevel()) < IntUtil.value(udiRelevanceResponse.getDistributeLevel())) { return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!"); } @@ -1366,9 +1371,14 @@ public class IoCodeTempController extends BaseController { } } else { - if (IntUtil.value(udiRelevanceResponse.getDistributeMaxLevel()) < IntUtil.value(udiRelevanceResponse.getPackLevel())) { + if (udiRelevanceResponse.getDistributeMaxLevel() != null && IntUtil.value(udiRelevanceResponse.getDistributeMaxLevel()) < IntUtil.value(udiRelevanceResponse.getPackLevel())) { return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!"); } + + if (udiRelevanceResponse.getDistributeMaxLevel() == null && IntUtil.value(udiRelevanceResponse.getPackLevel()) > 1) { + return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!"); + } + if (IntUtil.value(udiRelevanceResponse.getPackLevel()) < IntUtil.value(udiRelevanceResponse.getDistributeLevel())) { return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!"); } diff --git a/src/main/java/com/glxp/api/http/ErpBasicClient.java b/src/main/java/com/glxp/api/http/ErpBasicClient.java index 3da7a027f..f44eff817 100644 --- a/src/main/java/com/glxp/api/http/ErpBasicClient.java +++ b/src/main/java/com/glxp/api/http/ErpBasicClient.java @@ -286,7 +286,7 @@ public class ErpBasicClient { return listBaseResponse; } catch (Exception e) { log.error("获取医保单据信息", e); - return ResultVOUtils.error(500, "连接第三方系统接口服务出错"+e.getMessage()); + return ResultVOUtils.error(500, "连接第三方系统接口服务出错" + e.getMessage()); } } @@ -503,7 +503,7 @@ public class ErpBasicClient { } } - public BaseResponse> getBuyType(String thirdSys) { + public BaseResponse> getBuyType(String thirdSys) { ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectByThirdId(thirdSys); String url = basicThirdSysEntity.getThridUrl() + "/udiwms/erp/getBuyType"; try { @@ -511,14 +511,14 @@ public class ErpBasicClient { if (StrUtil.isEmpty(response)) { return ResultVOUtils.error(500, "连接第三方系统接口服务出错"); } - BaseResponse> listBaseResponse = - JSONObject.parseObject(response, new TypeReference>>() { + BaseResponse> listBaseResponse = + JSONObject.parseObject(response, new TypeReference>>() { }); return listBaseResponse; } catch (Exception e) { log.error("获取交易类型集合", e); - return ResultVOUtils.error(500, "连接第三方系统接口服务出错"+e.getMessage()); + return ResultVOUtils.error(500, "连接第三方系统接口服务出错" + e.getMessage()); } } } diff --git a/src/main/java/com/glxp/api/service/basic/CompanyProductRelevanceService.java b/src/main/java/com/glxp/api/service/basic/CompanyProductRelevanceService.java index ce04e3631..68c80b9c9 100644 --- a/src/main/java/com/glxp/api/service/basic/CompanyProductRelevanceService.java +++ b/src/main/java/com/glxp/api/service/basic/CompanyProductRelevanceService.java @@ -19,4 +19,6 @@ public interface CompanyProductRelevanceService extends IService().eq("udiRlIdFk", relId)); } + + @Override + public String insertOrReadId(Long udiRlIdFk, String unitId) { + + CompanyProductRelevanceEntity companyProductRelevanceEntity = companyProductRelevanceDao.selectOne(new LambdaQueryWrapper() + .eq(CompanyProductRelevanceEntity::getUdiRlIdFk, udiRlIdFk) + .eq(CompanyProductRelevanceEntity::getUnitFk, unitId).last("limit 1")); + if (companyProductRelevanceEntity != null) { + return companyProductRelevanceEntity.getCustomerId(); + } else { + companyProductRelevanceEntity = new CompanyProductRelevanceEntity(); + companyProductRelevanceEntity.setId(IdUtil.getSnowflakeNextId()); + companyProductRelevanceEntity.setCustomerId(unitId); + companyProductRelevanceEntity.setUnitFk(unitId); + companyProductRelevanceEntity.setUdiRlIdFk(udiRlIdFk); + companyProductRelevanceEntity.setUpdateTime(new Date()); + companyProductRelevanceEntity.setCreateTime(new Date()); + companyProductRelevanceDao.insertCompanyProductRelevance(companyProductRelevanceEntity); + } + return null; + } } diff --git a/src/main/java/com/glxp/api/service/collect/IoCollectOrderBackupService.java b/src/main/java/com/glxp/api/service/collect/IoCollectOrderBackupService.java index ef9ea1d4a..0b98a6540 100644 --- a/src/main/java/com/glxp/api/service/collect/IoCollectOrderBackupService.java +++ b/src/main/java/com/glxp/api/service/collect/IoCollectOrderBackupService.java @@ -19,6 +19,7 @@ import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.entity.basic.CompanyProductRelevanceEntity; import com.glxp.api.entity.basic.SysWorkplaceDocumentEntity; import com.glxp.api.entity.collect.*; +import com.glxp.api.entity.inout.IoCodeEntity; import com.glxp.api.entity.inout.IoCodeTempEntity; import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.system.SystemParamConfigEntity; @@ -32,6 +33,7 @@ import com.glxp.api.req.inout.ReviewFinishRequest; import com.glxp.api.res.basic.BasicSkPrescribeResponse; import com.glxp.api.res.collect.CollectOrderBizResponse; import com.glxp.api.res.collect.IoCollectOrderResponse; +import com.glxp.api.service.basic.CompanyProductRelevanceService; import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.basic.SysWorkplaceDocumentService; import com.glxp.api.service.basic.UdiRlSupService; @@ -40,6 +42,8 @@ import com.glxp.api.service.inout.IoCheckInoutService; import com.glxp.api.service.inout.IoOrderService; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.util.*; +import lombok.extern.slf4j.Slf4j; +import org.jfree.util.Log; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; @@ -47,11 +51,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; +@Slf4j @Service public class IoCollectOrderBackupService extends ServiceImpl { @@ -161,6 +164,9 @@ public class IoCollectOrderBackupService extends ServiceImpl> groupedMap = lossCodesList.stream() + .collect(Collectors.groupingBy(IoCodeTempEntity::getRelId)); + groupedMap.forEach((key, value) -> { + companyProductRelevanceService.insertOrReadId(key, collectOrder.getFromCorp()); + }); + for (IoCodeTempEntity codeTempEntity : lossCodesList) { + codeTempEntity.setSupId(collectOrder.getFromCorp()); + } + } orderService.insertOrder(orderEntity); codesTempDao.insertBatch(lossCodesList); addInoutService.dealProcess(orderEntity); @@ -229,71 +250,9 @@ public class IoCollectOrderBackupService extends ServiceImpl collectOrderBizResponses = combieOrderDetail(collectOrderBizRequest); - collectOrder.setCollectOrderBizResponseList(collectOrderBizResponses); - List list = ioCollectCodeBackService.list(new LambdaQueryWrapper().eq(IoCollectCodeBackup::getBillNo, collectOrder.getBillNo())); - collectOrder.setCodeList(list); - List collectOrderList = new ArrayList<>(); - collectOrderList.add(collectOrder); - orderRequest.setCollectOrderList(collectOrderList); - // 判断此单据 有没有码已经上传过了一个有上传就进行错误返回 - String paramValue = systemParamConfigService.selectValueByParamKey("checkCodeUploading"); - if (StrUtil.isNotEmpty(paramValue) && paramValue.equals("0")) { - List codeList = new ArrayList<>(); - for (CollectOrderBizResponse collectOrderBizResponse : collectOrderBizResponses) { - String[] codes = collectOrderBizResponse.getFinishUdiCode().split(","); - // 遍历fruits数组 - for (String code : codes) { - if (StrUtil.isNotBlank(code)) { - List relCodeDetailList = relCodeDetailService.getAllNext(code); - if (relCodeDetailList != null && relCodeDetailList.size() > 0) { - for (RelCodeDetail relCodeDetail : relCodeDetailList) { - codeList.add(relCodeDetail.getCurCode()); - } - - } - - } - - } - } - BaseResponse baseResponseCheckCode = erpBasicClient.collectOrderCheckCodeUploading(codeList); - if (baseResponseCheckCode.getCode() == 20000) { - List listCheckCode = baseResponseCheckCode.getData(); - if (listCheckCode == null || listCheckCode.size() > 0) { - log.error("单据的所有码有已经传输过医保的,请核实"); - throw new JsonException("此单据的所有码有已经传输过医保的,请核实" + baseResponseCheckCode.getMessage()); - } - } else { - throw new JsonException("查询码关联关系服务出错," + baseResponseCheckCode.getMessage()); - } - } - // 医保上传 - BaseResponse baseResponse = erpBasicClient.postOrder(orderRequest); - log.debug("单据返回=========" + baseResponse); - if (baseResponse.getCode() == 20000) { - // 触发上传 转发至中继服务 到外网 再到国家同步库 - ThreadUtil.execAsync(() -> { - BaseResponse stringBaseResponse = new BaseResponse<>(); - try { - stringBaseResponse = erpBasicClient.collectOrderUpload(orderRequest); - } catch (Exception e) { - throw new JsonException("触发上传 转发至中继服务 到外网 再到国家同步库 接口服务出错:" + stringBaseResponse.getMessage()); - } - }); - - } else { - throw new JsonException("连接第三方系统接口服务出错," + baseResponse.getMessage()); - } - } + + uploadThrid(collectOrder); // //插入处方备份表 // IoCollectOrderBackup ioCollectOrderBackup = new IoCollectOrderBackup(); // BeanUtils.copyProperties(collectOrder, ioCollectOrderBackup); @@ -312,6 +271,72 @@ public class IoCollectOrderBackupService extends ServiceImpl collectOrderBizResponses = combieOrderDetail(collectOrderBizRequest); + collectOrder.setCollectOrderBizResponseList(collectOrderBizResponses); + List list = ioCollectCodeBackService.list(new LambdaQueryWrapper().eq(IoCollectCodeBackup::getBillNo, collectOrder.getBillNo())); + collectOrder.setCodeList(list); + List collectOrderList = new ArrayList<>(); + collectOrderList.add(collectOrder); + orderRequest.setCollectOrderList(collectOrderList); + // 判断此单据 有没有码已经上传过了一个有上传就进行错误返回 + String paramValue = systemParamConfigService.selectValueByParamKey("checkCodeUploading"); + if (StrUtil.isNotEmpty(paramValue) && paramValue.equals("0")) { + List codeList = new ArrayList<>(); + for (CollectOrderBizResponse collectOrderBizResponse : collectOrderBizResponses) { + String[] codes = collectOrderBizResponse.getFinishUdiCode().split(","); + // 遍历fruits数组 + for (String code : codes) { + if (StrUtil.isNotBlank(code)) { + List relCodeDetailList = relCodeDetailService.getAllNext(code); + if (relCodeDetailList != null && relCodeDetailList.size() > 0) { + for (RelCodeDetail relCodeDetail : relCodeDetailList) { + codeList.add(relCodeDetail.getCurCode()); + } + } + } + } + } + BaseResponse baseResponseCheckCode = erpBasicClient.collectOrderCheckCodeUploading(codeList); + if (baseResponseCheckCode.getCode() == 20000) { + List listCheckCode = baseResponseCheckCode.getData(); + if (listCheckCode == null || listCheckCode.size() > 0) { + log.error("单据的所有码有已经传输过医保的,请核实"); + throw new JsonException("此单据的所有码有已经传输过医保的,请核实" + baseResponseCheckCode.getMessage()); + } + } else { + throw new JsonException("查询码关联关系服务出错," + baseResponseCheckCode.getMessage()); + } + } + // 医保上传 + BaseResponse baseResponse = erpBasicClient.postOrder(orderRequest); + log.debug("单据返回=========" + baseResponse); + if (baseResponse.getCode() == 20000) { + // 触发上传 转发至中继服务 到外网 再到国家同步库 + ThreadUtil.execAsync(() -> { + BaseResponse stringBaseResponse = new BaseResponse<>(); + try { + stringBaseResponse = erpBasicClient.collectOrderUpload(orderRequest); + } catch (Exception e) { + throw new JsonException("触发上传 转发至中继服务 到外网 再到国家同步库 接口服务出错:" + stringBaseResponse.getMessage()); + } + }); + } + if (baseResponse.getCode() == 520) { + Log.error("上传失败," + baseResponse.getMessage()); + } else { + throw new JsonException("连接第三方系统接口服务出错," + baseResponse.getMessage()); + } + + } + + @Resource UdiRlSupService udiRlSupService; diff --git a/src/main/resources/schemas/schema_v2.4.sql b/src/main/resources/schemas/schema_v2.4.sql index e126ba623..4c22f24e4 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -4897,5 +4897,5 @@ INSERT IGNORE INTO auth_menu(`menu_id`, `menu_name`, `parent_id`, `order_num`, ` `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) - VALUES (6001, '医保上传统计', 5210, 999, 'inout/split/tag/stats', 'collect/CollectOrderStats', NULL, 1, 0, 'C', '0', '0', NULL, '', '超级用户', '2024-11-18 17:46:08', NULL, NULL, NULL); + VALUES (6001, '医保上传统计', 5210, 999, 'inout/split/tag/stats', 'collect/CollectOrderStatsNew', NULL, 1, 0, 'C', '0', '0', NULL, '', '超级用户', '2024-11-18 17:46:08', NULL, NULL, NULL);