|
|
|
@ -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<IoCollectOrderBackupMapper, IoCollectOrderBackup> {
|
|
|
|
|
|
|
|
|
@ -161,6 +164,9 @@ public class IoCollectOrderBackupService extends ServiceImpl<IoCollectOrderBacku
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
CompanyProductRelevanceService companyProductRelevanceService;
|
|
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void generateOrder(String billNo, AuthAdmin authAdmin) {
|
|
|
|
|
|
|
|
|
@ -201,6 +207,21 @@ public class IoCollectOrderBackupService extends ServiceImpl<IoCollectOrderBacku
|
|
|
|
|
for (IoCollectOrderCodeMan collectOrderCodeMan : collectOrderCodes) {
|
|
|
|
|
lossCodesList.add(buildCodeEntity(collectOrderCodeMan, orderEntity));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 如果单据类型为供应商的话,则进行供应商产品绑定
|
|
|
|
|
*/
|
|
|
|
|
if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_SP) {
|
|
|
|
|
|
|
|
|
|
Map<Long, List<IoCodeTempEntity>> 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<IoCollectOrderBacku
|
|
|
|
|
}
|
|
|
|
|
updateReview(authAdmin, orderEntity);
|
|
|
|
|
}
|
|
|
|
|
} else if (IntUtil.value(sysWorkplaceDocumentEntity.getIsMatching()) == 0) {
|
|
|
|
|
//todo 根据单据类型上传医保或者第三方系统
|
|
|
|
|
PostCollectOrderRequest orderRequest = new PostCollectOrderRequest();
|
|
|
|
|
orderRequest.setThirdSys("thirdId");
|
|
|
|
|
orderRequest.setWebTitle(WEB_TITLE);
|
|
|
|
|
CollectOrderBizRequest collectOrderBizRequest = new CollectOrderBizRequest();
|
|
|
|
|
collectOrderBizRequest.setOrderIdFk(collectOrder.getBillNo());
|
|
|
|
|
List<CollectOrderBizResponse> collectOrderBizResponses = combieOrderDetail(collectOrderBizRequest);
|
|
|
|
|
collectOrder.setCollectOrderBizResponseList(collectOrderBizResponses);
|
|
|
|
|
List<IoCollectCodeBackup> list = ioCollectCodeBackService.list(new LambdaQueryWrapper<IoCollectCodeBackup>().eq(IoCollectCodeBackup::getBillNo, collectOrder.getBillNo()));
|
|
|
|
|
collectOrder.setCodeList(list);
|
|
|
|
|
List<IoCollectOrderBackup> collectOrderList = new ArrayList<>();
|
|
|
|
|
collectOrderList.add(collectOrder);
|
|
|
|
|
orderRequest.setCollectOrderList(collectOrderList);
|
|
|
|
|
// 判断此单据 有没有码已经上传过了一个有上传就进行错误返回
|
|
|
|
|
String paramValue = systemParamConfigService.selectValueByParamKey("checkCodeUploading");
|
|
|
|
|
if (StrUtil.isNotEmpty(paramValue) && paramValue.equals("0")) {
|
|
|
|
|
List<String> codeList = new ArrayList<>();
|
|
|
|
|
for (CollectOrderBizResponse collectOrderBizResponse : collectOrderBizResponses) {
|
|
|
|
|
String[] codes = collectOrderBizResponse.getFinishUdiCode().split(",");
|
|
|
|
|
// 遍历fruits数组
|
|
|
|
|
for (String code : codes) {
|
|
|
|
|
if (StrUtil.isNotBlank(code)) {
|
|
|
|
|
List<RelCodeDetail> relCodeDetailList = relCodeDetailService.getAllNext(code);
|
|
|
|
|
if (relCodeDetailList != null && relCodeDetailList.size() > 0) {
|
|
|
|
|
for (RelCodeDetail relCodeDetail : relCodeDetailList) {
|
|
|
|
|
codeList.add(relCodeDetail.getCurCode());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
BaseResponse<List> 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<BasicSkPrescribeResponse> baseResponse = erpBasicClient.postOrder(orderRequest);
|
|
|
|
|
log.debug("单据返回=========" + baseResponse);
|
|
|
|
|
if (baseResponse.getCode() == 20000) {
|
|
|
|
|
// 触发上传 转发至中继服务 到外网 再到国家同步库
|
|
|
|
|
ThreadUtil.execAsync(() -> {
|
|
|
|
|
BaseResponse<String> 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<IoCollectOrderBacku
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void uploadThrid(IoCollectOrderBackup collectOrder) {
|
|
|
|
|
//todo 根据单据类型上传医保或者第三方系统
|
|
|
|
|
PostCollectOrderRequest orderRequest = new PostCollectOrderRequest();
|
|
|
|
|
orderRequest.setThirdSys("thirdId");
|
|
|
|
|
orderRequest.setWebTitle(WEB_TITLE);
|
|
|
|
|
CollectOrderBizRequest collectOrderBizRequest = new CollectOrderBizRequest();
|
|
|
|
|
collectOrderBizRequest.setOrderIdFk(collectOrder.getBillNo());
|
|
|
|
|
List<CollectOrderBizResponse> collectOrderBizResponses = combieOrderDetail(collectOrderBizRequest);
|
|
|
|
|
collectOrder.setCollectOrderBizResponseList(collectOrderBizResponses);
|
|
|
|
|
List<IoCollectCodeBackup> list = ioCollectCodeBackService.list(new LambdaQueryWrapper<IoCollectCodeBackup>().eq(IoCollectCodeBackup::getBillNo, collectOrder.getBillNo()));
|
|
|
|
|
collectOrder.setCodeList(list);
|
|
|
|
|
List<IoCollectOrderBackup> collectOrderList = new ArrayList<>();
|
|
|
|
|
collectOrderList.add(collectOrder);
|
|
|
|
|
orderRequest.setCollectOrderList(collectOrderList);
|
|
|
|
|
// 判断此单据 有没有码已经上传过了一个有上传就进行错误返回
|
|
|
|
|
String paramValue = systemParamConfigService.selectValueByParamKey("checkCodeUploading");
|
|
|
|
|
if (StrUtil.isNotEmpty(paramValue) && paramValue.equals("0")) {
|
|
|
|
|
List<String> codeList = new ArrayList<>();
|
|
|
|
|
for (CollectOrderBizResponse collectOrderBizResponse : collectOrderBizResponses) {
|
|
|
|
|
String[] codes = collectOrderBizResponse.getFinishUdiCode().split(",");
|
|
|
|
|
// 遍历fruits数组
|
|
|
|
|
for (String code : codes) {
|
|
|
|
|
if (StrUtil.isNotBlank(code)) {
|
|
|
|
|
List<RelCodeDetail> relCodeDetailList = relCodeDetailService.getAllNext(code);
|
|
|
|
|
if (relCodeDetailList != null && relCodeDetailList.size() > 0) {
|
|
|
|
|
for (RelCodeDetail relCodeDetail : relCodeDetailList) {
|
|
|
|
|
codeList.add(relCodeDetail.getCurCode());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
BaseResponse<List> 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<BasicSkPrescribeResponse> baseResponse = erpBasicClient.postOrder(orderRequest);
|
|
|
|
|
log.debug("单据返回=========" + baseResponse);
|
|
|
|
|
if (baseResponse.getCode() == 20000) {
|
|
|
|
|
// 触发上传 转发至中继服务 到外网 再到国家同步库
|
|
|
|
|
ThreadUtil.execAsync(() -> {
|
|
|
|
|
BaseResponse<String> 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;
|
|
|
|
|
|
|
|
|
|