diff --git a/src/main/java/com/glxp/mipsdl/client/BaseHttpClient.java b/src/main/java/com/glxp/mipsdl/client/BaseHttpClient.java index 1063533..c2827dc 100644 --- a/src/main/java/com/glxp/mipsdl/client/BaseHttpClient.java +++ b/src/main/java/com/glxp/mipsdl/client/BaseHttpClient.java @@ -1,6 +1,9 @@ package com.glxp.mipsdl.client; import com.glxp.mipsdl.req.base.*; +import com.glxp.mipsdl.req.base.forthird.ForBasicProductsSearchFilter; +import com.glxp.mipsdl.req.base.forthird.ForInvOutScanCodeFilter; +import com.glxp.mipsdl.req.base.forthird.ForInvProductsFilter; import com.glxp.mipsdl.req.ctqyy.DlThirdProjectRequest; import com.glxp.mipsdl.req.ctqyy.FilterThrHslbRequest; import com.glxp.mipsdl.req.ctqyy.GetSickPrescribeRequest; @@ -229,4 +232,24 @@ public interface BaseHttpClient { */ BaseResponse getHsfl(FilterThrHslbRequest hslbRequest); + /** + * B001 查询指定科室高值/普耗库存 + * @param forInvProductsFilter + * @return + */ + BaseResponse queryUdiInvProductsFilter(ForInvProductsFilter forInvProductsFilter); + + /** + * B002 查询耗材字典 + * @param forBasicProductsSearchFilter + * @return + */ + BaseResponse queryUdiBasicProductsSearch(ForBasicProductsSearchFilter forBasicProductsSearchFilter); + + /** + * B003 高值耗材实时出库/退库 + * @param forInvOutScanCodeFilter + * @return + */ + BaseResponse queryUdiInvOutScanCode(ForInvOutScanCodeFilter forInvOutScanCodeFilter); } diff --git a/src/main/java/com/glxp/mipsdl/client/CommonHttpClient.java b/src/main/java/com/glxp/mipsdl/client/CommonHttpClient.java index 6cec2e2..92baace 100644 --- a/src/main/java/com/glxp/mipsdl/client/CommonHttpClient.java +++ b/src/main/java/com/glxp/mipsdl/client/CommonHttpClient.java @@ -25,6 +25,9 @@ import com.glxp.mipsdl.entity.thrsys.ThrInvWarehouseEntity; import com.glxp.mipsdl.entity.thrsys.ThrSystemBusApiEntity; import com.glxp.mipsdl.http.HttpClient; import com.glxp.mipsdl.req.base.*; +import com.glxp.mipsdl.req.base.forthird.ForBasicProductsSearchFilter; +import com.glxp.mipsdl.req.base.forthird.ForInvOutScanCodeFilter; +import com.glxp.mipsdl.req.base.forthird.ForInvProductsFilter; import com.glxp.mipsdl.req.ctqyy.DlThirdProjectRequest; import com.glxp.mipsdl.req.ctqyy.FilterThrHslbRequest; import com.glxp.mipsdl.req.ctqyy.GetSickPrescribeRequest; @@ -235,6 +238,20 @@ public abstract class CommonHttpClient implements BaseHttpClient { return null; } + @Override + public BaseResponse queryUdiInvProductsFilter(ForInvProductsFilter forInvProductsFilter) { + return null; + } + + @Override + public BaseResponse queryUdiBasicProductsSearch(ForBasicProductsSearchFilter forBasicProductsSearchFilter) { + return null; + } + + @Override + public BaseResponse queryUdiInvOutScanCode(ForInvOutScanCodeFilter forInvOutScanCodeFilter) { + return null; + } /** * 获取患者信息 diff --git a/src/main/java/com/glxp/mipsdl/client/njxyy/njxyyClient.java b/src/main/java/com/glxp/mipsdl/client/njxyy/njxyyClient.java new file mode 100644 index 0000000..b3f1464 --- /dev/null +++ b/src/main/java/com/glxp/mipsdl/client/njxyy/njxyyClient.java @@ -0,0 +1,554 @@ +package com.glxp.mipsdl.client.njxyy; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.exceptions.ExceptionUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.glxp.mipsdl.client.CommonHttpClient; +import com.glxp.mipsdl.config.ThirdSysConfig; +import com.glxp.mipsdl.constant.ConstantType; +import com.glxp.mipsdl.constant.Constants; +import com.glxp.mipsdl.dao.auth.AuthWarehouseDao; +import com.glxp.mipsdl.dao.basic.BasicBussinessTypeDao; +import com.glxp.mipsdl.dao.basic.BasicCorpDao; +import com.glxp.mipsdl.dao.basic.BasicUdirelDao; +import com.glxp.mipsdl.dao.inout.IoCodeDao; +import com.glxp.mipsdl.dao.inout.IoOrderDao; +import com.glxp.mipsdl.dao.inout.IoOrderDetailBizDao; +import com.glxp.mipsdl.dao.thrsys.*; +import com.glxp.mipsdl.entity.auth.AuthWarehouseEntity; +import com.glxp.mipsdl.entity.basic.BasicBussinessTypeEntity; +import com.glxp.mipsdl.entity.basic.BasicCorpEntity; +import com.glxp.mipsdl.entity.basic.BasicUdirelEntity; +import com.glxp.mipsdl.entity.inout.*; +import com.glxp.mipsdl.entity.thrsys.ThrInvWarehouseEntity; +import com.glxp.mipsdl.entity.thrsys.ThrOrderUploadBustypesEntity; +import com.glxp.mipsdl.entity.thrsys.ThrProductsEntity; +import com.glxp.mipsdl.entity.thrsys.ThrSystemBusApiEntity; +import com.glxp.mipsdl.http.HttpClient; +import com.glxp.mipsdl.req.base.*; +import com.glxp.mipsdl.req.base.forthird.ForBasicProductsSearchFilter; +import com.glxp.mipsdl.req.base.forthird.ForInvOutScanCodeFilter; +import com.glxp.mipsdl.req.base.forthird.ForInvOutScanCodeRequest; +import com.glxp.mipsdl.req.base.forthird.ForInvProductsFilter; +import com.glxp.mipsdl.req.phxyy.PhBusTypeRequest; +import com.glxp.mipsdl.req.phxyy.PhOrderRequest; +import com.glxp.mipsdl.req.phxyy.PhProductRequest; +import com.glxp.mipsdl.req.phxyy.PhUnitRequest; +import com.glxp.mipsdl.req.post.PostFileThrOrderRequest; +import com.glxp.mipsdl.req.post.PostThrCorpRequest; +import com.glxp.mipsdl.req.post.PostThrInvProductsRequest; +import com.glxp.mipsdl.req.post.PostThrProductsRequest; +import com.glxp.mipsdl.res.BaseResponse; +import com.glxp.mipsdl.res.PageSimpleResponse; +import com.glxp.mipsdl.res.udiwms.*; +import com.glxp.mipsdl.service.auth.AuthWarehouseService; +import com.glxp.mipsdl.service.order.OrderUploadLogService; +import com.glxp.mipsdl.service.thrsys.ThrCorpService; +import com.glxp.mipsdl.service.thrsys.ThrSystemDetailService; +import com.glxp.mipsdl.util.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 南靖县医院对接物资系统Client + */ +@Slf4j +@Service(value = "100012HttpClient") //bean注册名称,使用编码 + HttpClient,文件接口加 FileClient +public class njxyyClient extends CommonHttpClient { + + @Resource + private ThrSystemDetailService thrSystemDetailService; + @Resource + private HttpClient httpClient; + @Resource + private ThrBustypeOriginDao thrBustypeOriginDao; + @Resource + private IoOrderDao orderDao; + @Resource + private ThrSystemBusApiDao thrSystemBusApiDao; + @Resource + private BasicBussinessTypeDao basicBussinessTypeDao; + @Resource + private BasicCorpDao basicCorpDao; + @Resource + private IoCodeDao codeDao; + @Resource + private AuthWarehouseDao authWarehouseDao; + @Resource + private ThrInvWarehouseDao thrInvWarehouseDao; + @Resource + private AuthWarehouseService authWarehouseService; + @Resource + private ThirdSysConfig thirdSysConfig; + @Resource + private ThrCorpService thrCorpService; + @Resource + private IoOrderDetailBizDao orderDetailBizDao; + @Resource + private SubmitOrderUtil submitOrderUtil; + @Resource + private BasicUdirelDao basicUdirelDao; + @Resource + ThrProductsDao thrProductsDao; + @Resource + private OrderUploadLogService orderUploadLogService; + @Resource + private ThrOrderUploadBustypesMapper thrOrderUploadBustypesMapper; + + @Override + public BaseResponse getUnit(UdiwmsUnitRequest udiwmsUnitRequest) { + PhUnitRequest phUnitRequest = new PhUnitRequest(); + BeanUtil.copyProperties(udiwmsUnitRequest, phUnitRequest); + String response = httpClient.postJson(thrSystemDetailService.getUrl(Constants.URL_NAME_CORP_URL), phUnitRequest); + BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); + return baseResponse; + } + + @Override + public BaseResponse getProducts(UdiwmsProductRequest udiwmsProductRequest) { + PhProductRequest phProductRequest = new PhProductRequest(); + BeanUtil.copyProperties(udiwmsProductRequest, phProductRequest); + String response = httpClient.postJson(thrSystemDetailService.getUrl(Constants.URL_NAME_PI_QUERY_URL), phProductRequest); + BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); + return baseResponse; + } + + @Override + public BaseResponse getOrderTypes(UdiwmsBusTypeRequest udiwmsBusTypeRequest) { + PhBusTypeRequest phBusTypeRequest = new PhBusTypeRequest(); + BeanUtil.copyProperties(udiwmsBusTypeRequest, phBusTypeRequest); + String response = httpClient.postJson(thrSystemDetailService.getUrl(Constants.URL_NAME_BUS_TYPE_QUERY_URL), phBusTypeRequest); + BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); + return baseResponse; + } + + @Override + public BaseResponse getOrders(UdiwmsOrderQueryRequest udiwmsOrderQueryRequest) { + if (StrUtil.isBlank(udiwmsOrderQueryRequest.getBillType())) { + return ResultVOUtils.error(500, "单据类型不能为空"); + } + //查询绑定的第三方单据类型 + String thirdAction = thrBustypeOriginDao.findThirdActionByBillType(udiwmsOrderQueryRequest.getBillType(), DictUtl.CURRENT_HOSP_CODE); + udiwmsOrderQueryRequest.setBillType(thirdAction); + String response = httpClient.postJson(thrSystemDetailService.getUrl(Constants.URL_NAME_ORDER_QUERY_URL), udiwmsOrderQueryRequest); + BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); + return baseResponse; + } + + @Override + public BaseResponse submitOrders(UdiwmsOrderRequest udiwmsOrderRequest) { + if (StrUtil.isBlank(udiwmsOrderRequest.getBillNo())) { + return ResultVOUtils.error(500, "单据号不能为空"); + } + + PhOrderRequest phOrderRequest = new PhOrderRequest(); + BeanUtil.copyProperties(udiwmsOrderRequest, phOrderRequest); + + //查询单据和详情信息,组装第三方系统接口参数 + IoOrderEntity orderEntity = orderDao.selectOne(new LambdaQueryWrapper().eq(IoOrderEntity::getBillNo, udiwmsOrderRequest.getBillNo()).last("limit 1")); + if (orderEntity.getAuditTime() == null) + phOrderRequest.setBillDate(DateUtil.formatDateTime(orderEntity.getCreateTime())); + else { + phOrderRequest.setBillDate(DateUtil.formatDateTime(orderEntity.getAuditTime())); + } + //查询对应的第三方单据类型 + ThrSystemBusApiEntity thrSystemBusApiEntity = thrSystemBusApiDao.selectOne(new LambdaQueryWrapper().eq(ThrSystemBusApiEntity::getCode, udiwmsOrderRequest.getBillType())); + if (StrUtil.isBlank(thrSystemBusApiEntity.getUrl())) { + return ResultVOUtils.error(500, "接口未配置,无法提交!"); + } + phOrderRequest.setBillType(thrSystemBusApiEntity.getThirdBuyCode()); + + //查询单据类型,设置往来单位信息 + BasicBussinessTypeEntity basicBussinessTypeEntity = basicBussinessTypeDao.selectByAction(udiwmsOrderRequest.getBillType()); + if (basicBussinessTypeEntity.getCorpType().equals(Constants.CORP_HOSPTIAL)) { + //医院客户 + phOrderRequest.setCorpId(orderEntity.getFromCorp()); + //查询客户名称 + String corpName = basicCorpDao.selectNameByErpId(orderEntity.getFromCorp()); + phOrderRequest.setCorpName(corpName); + } else if (basicBussinessTypeEntity.getCorpType().equals(Constants.CORP_INTTERNAL)) { + //内部科室 + AuthWarehouseEntity warehouseEntity = authWarehouseDao.selectOne(new LambdaQueryWrapper().eq(AuthWarehouseEntity::getCode, udiwmsOrderRequest.getCorpId())); + try { + //根据第三方系统标识,获取对应字段的值 + ThrInvWarehouseEntity thrInvWarehouseEntity = thrInvWarehouseDao.selectOne(new LambdaQueryWrapper() + .eq(ThrInvWarehouseEntity::getCode, authWarehouseService.getThirdInvCode(warehouseEntity)) + .eq(ThrInvWarehouseEntity::getThirdSysFk, thirdSysConfig.getThirdId())); + + phOrderRequest.setCorpId(thrInvWarehouseEntity.getCode()); + phOrderRequest.setCorpName(thrInvWarehouseEntity.getName()); + } catch (Exception e) { + log.error("查询单据对应往来单位的第三方仓库信息异常", e); + } + } else { + //供应商 + BasicCorpEntity basicCorpEntity = basicCorpDao.selectByErpId(orderEntity.getFromCorp()); + if (null != basicCorpEntity) { + phOrderRequest.setCorpId(basicCorpEntity.getThirdId()); + phOrderRequest.setCorpName(basicCorpEntity.getName()); + } else { + String msg = "查询单据对应的第三方往来单位信息异常"; + orderUploadLogService.updateLocalErr(orderEntity, msg); + log.error("----单据提交-----" + orderEntity.getBillNo() + msg); + return ResultVOUtils.error(500, msg); + } +// ThrCorpEntity thrCorp = thrCorpService.getThrCorp(udiwmsOrderRequest.getCorpId()); +// if (null != thrCorp) { +// phOrderRequest.setCorpId(thrCorp.getUnitId()); +// phOrderRequest.setCorpName(thrCorp.getName()); +// } else { +// String msg = "查询单据对应的第三方往来单位信息异常"; +// orderUploadLogService.updateLocalErr(orderEntity, msg); +// log.error("----单据提交-----" + orderEntity.getBillNo() + msg); +// return ResultVOUtils.error(500, msg); +// } + } + + //查询仓库信息 + AuthWarehouseEntity warehouseEntity = authWarehouseDao.selectOne(new LambdaQueryWrapper().eq(AuthWarehouseEntity::getCode, orderEntity.getInvCode())); + try { + ThrInvWarehouseEntity thrInvWarehouseEntity = thrInvWarehouseDao.selectOne(new LambdaQueryWrapper() + .eq(ThrInvWarehouseEntity::getCode, authWarehouseService.getThirdInvCode(warehouseEntity)) + .eq(ThrInvWarehouseEntity::getThirdSysFk, thirdSysConfig.getThirdId())); + if (thrInvWarehouseEntity != null) { + phOrderRequest.setLocInvCode(thrInvWarehouseEntity.getCode()); + phOrderRequest.setLocInvName(thrInvWarehouseEntity.getName()); + + phOrderRequest.setLocStorageCode(thrInvWarehouseEntity.getCode()); + phOrderRequest.setLocStorageName(thrInvWarehouseEntity.getName()); + } else { + orderUploadLogService.updateLocalErr(orderEntity, "查询第三方系统仓库信息异常"); + return ResultVOUtils.error(500, "查询第三方系统仓库信息异常"); + } + } catch (Exception e) { + log.error("查询第三方系统仓库信息异常", ExceptionUtil.stacktraceToString(e)); + orderUploadLogService.updateLocalErr(orderEntity, "查询第三方系统仓库信息异常" + ExceptionUtil.stacktraceToString(e)); + return ResultVOUtils.error(500, "查询第三方系统仓库信息异常"); + } + + phOrderRequest.setBillFlag("1"); + + if (StrUtil.nullToEmpty(thrSystemBusApiEntity.getUrl()).equals("useOut")) { + phOrderRequest.setCorpId(phOrderRequest.getLocStorageCode()); + phOrderRequest.setCorpName(phOrderRequest.getLocStorageName()); + ThrInvWarehouseEntity thrInvWarehouseEntity = thrInvWarehouseDao.selectOne(new LambdaQueryWrapper().eq(ThrInvWarehouseEntity::getCode, "29") + .eq(ThrInvWarehouseEntity::getThirdSysFk, thirdSysConfig.getThirdId())); + phOrderRequest.setLocStorageCode("29"); + phOrderRequest.setLocStorageName(thrInvWarehouseEntity.getName()); + } + + + //设置单据出入库类型 + if (basicBussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_PUT)) { + phOrderRequest.setInoutType(1); //入库 + } else if (basicBussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { + phOrderRequest.setInoutType(2); //出库 + } + + phOrderRequest.setRemark("UDI单据:" + udiwmsOrderRequest.getBillNo()); //备注 + //组装单据明细数据 + List ioCodeEntities = codeDao.selectList(new LambdaQueryWrapper() + .eq(IoCodeEntity::getOrderId, orderEntity.getBillNo()) + ); + + List items = new ArrayList<>(); + //查询业务单据详情 + List detailBizEntities = orderDetailBizDao.selectList(new LambdaQueryWrapper().eq(IoOrderDetailBizEntity::getOrderIdFk, orderEntity.getBillNo())); + +// setOrderDetailList(ioCodeEntities, items, detailBizEntities); + List stockOrderDetailEntities = transferSerList(detailBizEntities, orderEntity.getBillNo()); +// Collections.sort(stockOrderDetailEntities, (o1, o2) -> { +// String o1Str = o1.getCoName() + o1.getSpec() + o1.getBatchNo() + o1.getSerialNo(); +// String o2Str = o2.getCoName() + o2.getSpec() + o2.getBatchNo() + o1.getSerialNo(); +// Integer cp = o1Str.compareTo(o2Str); +// return cp; +// }); + + for (IoOrderDetailBizEntity stockOrderDetailEntity : stockOrderDetailEntities) { + BasicUdirelEntity udiRelevanceEntity = basicUdirelDao.selectById(stockOrderDetailEntity.getBindRlFk()); +// if (StrUtil.isNotEmpty(udiRelevanceEntity.getMainId())) { +// ThrProductsEntity thrProductsEntity = thrProductsDao.selectOne(new QueryWrapper().eq("code", udiRelevanceEntity.getMainId()).last("limit 1")); +// if (thrProductsEntity != null && StrUtil.isNotEmpty(thrProductsEntity.getRegisterNo())) { +// stockOrderDetailEntity.setCertCode(thrProductsEntity.getRegisterNo()); +// } +// } + UdiwmsOrderDetailRequest item = new UdiwmsOrderDetailRequest(); + BeanUtil.copyProperties(stockOrderDetailEntity, item); + item.setManufactory(stockOrderDetailEntity.getManufacturer()); + item.setProductDate(stockOrderDetailEntity.getProductDate()); + item.setExpireDate(stockOrderDetailEntity.getExpireDate()); + item.setBatchNo(stockOrderDetailEntity.getBatchNo()); + if (StrUtil.isNotEmpty(stockOrderDetailEntity.getProductDate())) { +// item.setProductDate(com.glxp.mipsdl.admin.util.DateUtil.formatExpireTime("20" + stockOrderDetailEntity.getProductDate())); + } + if (StrUtil.isNotEmpty(stockOrderDetailEntity.getExpireDate())) { +// item.setExpireDate(com.glxp.mipsdl.admin.util.DateUtil.formatExpireTime("20" + stockOrderDetailEntity.getExpireDate())); + } +// item.setMeasname(udiRelevanceEntity.getMeasname()); + item.setStandard(stockOrderDetailEntity.getSpec()); + item.setRegisterNo(stockOrderDetailEntity.getCertCode().replace(";", "")); + IoOrderUploadLogEntity uploadLog = new IoOrderUploadLogEntity(); + try { + item.setPrice(stockOrderDetailEntity.getPrice()); +// item.setFirstSalesInvNo(stockOrderDetailEntity.getFirstSalesInvNo()); +// item.setSecSalesInvNo(stockOrderDetailEntity.getSecSalesInvNo()); +// item.setInvoiceDate(stockOrderDetailEntity.getInvoiceDate()); +// item.setSecSalesListNo(stockOrderDetailEntity.getSecSalesListNo()); + item.setBillNo(orderEntity.getBillNo()); + String fphm = ""; + String fprq = null; + List invoiceList = IoOrderInvoiceEntity.builder().build() + .selectList(Wrappers.lambdaQuery(IoOrderInvoiceEntity.class).eq(IoOrderInvoiceEntity::getOrderIdFk, orderEntity.getBillNo()) + .eq(IoOrderInvoiceEntity::getBindRlFk, stockOrderDetailEntity.getBindRlFk()) + .eq(StrUtil.isNotEmpty(stockOrderDetailEntity.getBatchNo()), IoOrderInvoiceEntity::getBatchNo, stockOrderDetailEntity.getBatchNo()). + groupBy(IoOrderInvoiceEntity::getInvoiceEncode)); + if (CollectionUtil.isNotEmpty(invoiceList)) { + fphm = invoiceList.stream().map(IoOrderInvoiceEntity::getInvoiceEncode).collect(Collectors.joining(",")); + if (invoiceList.get(0).getInvoiceDate() != null) + fprq = DateUtil.formatDateTime(invoiceList.get(0).getInvoiceDate()); + } + + item.setFirstSalesInvNo(fphm); + item.setSecSalesInvNo(fphm); + item.setInvoiceDate(fprq); + boolean isNeedFp = false; + ThrOrderUploadBustypesEntity thrOrderUploadBustypesEntity = thrOrderUploadBustypesMapper.selectOne(new QueryWrapper().eq("action", basicBussinessTypeEntity.getAction()).last("limit 1")); + if (thrOrderUploadBustypesEntity != null && IntUtil.value(thrOrderUploadBustypesEntity.getOrderStatus()) == 3) { + isNeedFp = true; + } + if (basicBussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_PUT) && StrUtil.isEmpty(fphm) && isNeedFp) { + String errMsg = "提交失败,错误信息:" + stockOrderDetailEntity.getCoName() + "发票缺失,请补齐后重新提交"; + orderUploadLogService.updateLocalErr(orderEntity, errMsg); + return ResultVOUtils.error(500, errMsg); + } + + ThrProductsEntity thrProductsEntity = thrProductsDao.selectOne(new QueryWrapper().eq("code", udiRelevanceEntity.getMainId()).last("limit 1")); + if (StrUtil.isEmpty(udiRelevanceEntity.getMainId()) || thrProductsEntity == null || StrUtil.isEmpty(thrProductsEntity.getCode())) { + String errMsg = "提交失败,错误信息:" + "产品DI未关联第三方产品信息"; + orderUploadLogService.updateLocalErr(orderEntity, errMsg); + return ResultVOUtils.error(500, errMsg); + } else { + item.setProductId(thrProductsEntity.getCode()); + item.setProductName(thrProductsEntity.getName()); + } + items.add(item); + } catch (Exception e) { + log.error(e.getMessage(), e); + uploadLog.setStatus(3); + String errMsg = "提交失败,错误信息:" + e.getMessage(); + uploadLog.setResult(errMsg); + orderUploadLogService.insertOrUpdate(uploadLog); + return ResultVOUtils.error(500, errMsg); + } + } + Collections.reverse(items); + phOrderRequest.setItem(items); + + return submitOrderUtil.submitOrder(orderEntity, phOrderRequest); + } + + + public List transferSerList(List stockOrderDetailEntities, String orderId) { + List resultList = new ArrayList<>(); + List ioCodeEntities = codeDao.selectList(new LambdaQueryWrapper() + .eq(IoCodeEntity::getOrderId, orderId) + ); + + if (CollUtil.isNotEmpty(ioCodeEntities)) { + for (IoCodeEntity codeDetaiEntity : ioCodeEntities) { + if (CollUtil.isNotEmpty(stockOrderDetailEntities)) { + for (IoOrderDetailBizEntity stockOrderDetailEntity : stockOrderDetailEntities) { + if (IntUtil.value(codeDetaiEntity.getRelId()) == IntUtil.value(stockOrderDetailEntity.getBindRlFk()) + && StrUtil.trimToEmpty(codeDetaiEntity.getBatchNo()).equals(StrUtil.trimToEmpty(stockOrderDetailEntity.getBatchNo()))) { + IoOrderDetailBizEntity item = new IoOrderDetailBizEntity(); + BeanUtils.copyProperties(stockOrderDetailEntity, item); + item.setSerialNo(codeDetaiEntity.getSerialNo()); + item.setCount(codeDetaiEntity.getReCount()); + item.setReCount(codeDetaiEntity.getReCount()); + resultList.add(item); + break; + } + } + } + } + } + return resultList; + } + + + @Override + public BaseResponse getInvProducts(UdiwmsInvProductsRequest udiwmsInvProductsRequest) { + String response = httpClient.postJson(thrSystemDetailService.getUrl(Constants.URL_NAME_INV_PI_URL), udiwmsInvProductsRequest); + BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); + return baseResponse; + } + + @Override + public BaseResponse getWarehouse(UdiwmsWarehouseRequest udiwmsWarehouseRequest) { + String response = httpClient.postJson(thrSystemDetailService.getUrl(Constants.URL_NAME_WAREHOUSE_QUERY_URL), udiwmsWarehouseRequest); + BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); + return baseResponse; + } + + @Override + public BaseResponse postProducts(PostThrProductsRequest postThrProductsRequest) { + postThrProductsRequest.setUploadType("文件导入"); + String response = httpClient.postUDIWMSJson(thirdSysConfig.getPostPiUrl(), postThrProductsRequest); + BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); + return baseResponse; + } + + @Override + public BaseResponse postCorps(PostThrCorpRequest postThrCorpRequest) { + postThrCorpRequest.setUploadType("文件导入"); + String response = httpClient.postUDIWMSJson(thirdSysConfig.getPostCorpUrl(), postThrCorpRequest); + BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); + return baseResponse; + } + + @Override + public BaseResponse postOrderDetail(PostFileThrOrderRequest postFileThrOrderRequest) { + postFileThrOrderRequest.setUploadType("文件导入"); + String response = httpClient.postUDIWMSJson(thirdSysConfig.getPostOrderUrl(), postFileThrOrderRequest); + BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); + return baseResponse; + } + + @Override + public BaseResponse postInvProducts(PostThrInvProductsRequest postThrInvProductsRequest) { + String response = httpClient.postUDIWMSJson(thirdSysConfig.getPostInvPiUrl(), postThrInvProductsRequest); + BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); + return baseResponse; + } + + @Override + public BaseResponse queryUdiInvProductsFilter(ForInvProductsFilter forInvProductsFilter) { + //入参业务系统字段控制 + FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest(); + BeanUtils.copyProperties(forInvProductsFilter,filterInvProductRequest); + //调用业务系统http + String response = httpClient.postUDIWMSJson(thirdSysConfig.getPostInvProductsFilterUrl(), filterInvProductRequest); + //业务系统返回参数 字段控制 + BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); + // TODO: 2024/3/15 返回字段过滤控制 + if (baseResponse.getCode() == 20000){ + PageSimpleResponse pageSimpleResponse = + JSONObject.parseObject(String.valueOf(baseResponse.getData()), PageSimpleResponse.class); + List list = pageSimpleResponse.getList(); + //处理list字段 进行实体转换 过滤掉不必要字段 + String json = JSON.toJSONString(list); + List newList = JSON.parseArray(json,ForInvProductsResponse.class); + + PageSimpleResponse newPageSimpleResponse = new PageSimpleResponse<>(); + newPageSimpleResponse.setTotal(pageSimpleResponse.getTotal()); + newPageSimpleResponse.setList(newList); + baseResponse.setData(newPageSimpleResponse); + }else { + + } + return baseResponse; + } + + @Override + public BaseResponse queryUdiBasicProductsSearch(ForBasicProductsSearchFilter forBasicProductsSearchFilter) { + //入参业务系统字段控制 + FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); + BeanUtils.copyProperties(forBasicProductsSearchFilter,filterUdiRelRequest); + //调用业务系统http + String response = httpClient.postUDIWMSJson(thirdSysConfig.getPostBasicProductsSearch(), filterUdiRelRequest); + //业务系统返回参数 字段控制 + BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); + // TODO: 2024/3/15 返回字段过滤控制 + if (baseResponse.getCode() == 20000){ + PageSimpleResponse pageSimpleResponse = + JSONObject.parseObject(String.valueOf(baseResponse.getData()), PageSimpleResponse.class); + List list = pageSimpleResponse.getList(); + //处理list字段 进行实体转换 过滤掉不必要字段 + String json = JSON.toJSONString(list); + List newList = JSON.parseArray(json,ForBasicProductsSearchResponse.class); + + PageSimpleResponse newPageSimpleResponse = new PageSimpleResponse<>(); + newPageSimpleResponse.setTotal(pageSimpleResponse.getTotal()); + newPageSimpleResponse.setList(newList); + baseResponse.setData(newPageSimpleResponse); + }else { + + } + return baseResponse; + } + + @Override + public BaseResponse queryUdiInvOutScanCode(ForInvOutScanCodeFilter forInvOutScanCodeFilter) { + ForInvOutScanCodeRequest forInvOutScanCodeRequest = new ForInvOutScanCodeRequest(); + System.out.println(JSON.toJSONString(forInvOutScanCodeFilter)); + // TODO: 2024/3/15 forInvOutScanCodeFilter 转换为 入参的业务系统的实体 forInvOutScanCodeRequest + + String response = httpClient.postUDIWMSJson(thirdSysConfig.getPostInvOutScanCode(), forInvOutScanCodeRequest); + BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); + if (baseResponse.getCode() == 20000){ + ForInvOutScanCodeResponse forInvOutScanCodeResponse = + JSONObject.parseObject(String.valueOf(baseResponse.getData()), ForInvOutScanCodeResponse.class); + System.out.println(forInvOutScanCodeResponse); + }else { + + } + return baseResponse; + } + + @Override + public BaseResponse testConnect() { + UdiwmsUnitRequest udiwmsUnitRequest = new UdiwmsUnitRequest(); + udiwmsUnitRequest.setPage(1); + udiwmsUnitRequest.setLimit(2); + BaseResponse baseResponse = getUnit(udiwmsUnitRequest); + if (baseResponse.getCode() == 20000) { + return ResultVOUtils.success("连接第三方系统成功!"); + } + return ResultVOUtils.success("连接第三方服务成功,连接第三方系统成功!"); + } + + @Override + public BaseResponse queryUdiInvProducts(UdiwmsQueryUdiInvProductsRequest queryUdiInvProductsRequest) { + String response = httpClient.postUDIWMSJson(thirdSysConfig.getQueryInvUrl(), queryUdiInvProductsRequest); + BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); + return baseResponse; + } + + @Override + public BaseResponse submitProducts(UdiwmsAddProductsRequest udiwmsAddProductsRequest) { + String response = httpClient.postUDIWMSJson(thirdSysConfig.getPostInvPiUrl(), udiwmsAddProductsRequest); + BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); + return baseResponse; + } + + @Override + public BaseResponse submitUnit(UdiwmsAddUnitRequest udiwmsAddUnitRequest) { + String response = httpClient.postUDIWMSJson(thirdSysConfig.getPostInvPiUrl(), udiwmsAddUnitRequest); + BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); + return baseResponse; + } + + @Override + public BaseResponse submitPreInOrders(UdiwmsPreInOrderRequest udiwmsPreInOrderRequest) { + String response = httpClient.postUDIWMSJson(thirdSysConfig.getPostInvPiUrl(), udiwmsPreInOrderRequest); + BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); + return baseResponse; + } + +} diff --git a/src/main/java/com/glxp/mipsdl/config/ThirdSysConfig.java b/src/main/java/com/glxp/mipsdl/config/ThirdSysConfig.java index 2858269..b89f7a9 100644 --- a/src/main/java/com/glxp/mipsdl/config/ThirdSysConfig.java +++ b/src/main/java/com/glxp/mipsdl/config/ThirdSysConfig.java @@ -92,5 +92,31 @@ public class ThirdSysConfig { return udiWmsUrl + Constants.URL_NAME_UDIWMS_PRODUCTS_FILTER_URL; } + /** + * B001 查询指定科室高值/普耗库存 + * + * @return + */ + public String getPostInvProductsFilterUrl() { + return udiWmsUrl + Constants.URL_NAME_FOR_INV_PRODUCTS_FILTER_URL; + } + + /** + * B002 查询耗材字典 + * + * @return + */ + public String getPostBasicProductsSearch() { + return udiWmsUrl + Constants.URL_NAME_FOR_BASiC_PRODUCTS_SEARCH_URL; + } + + /** + * B003 高值耗材实时出库/退库 + * + * @return + */ + public String getPostInvOutScanCode() { + return udiWmsUrl + Constants.URL_NAME_FOR_INV_OUT_SCANCODE_URL; + } } diff --git a/src/main/java/com/glxp/mipsdl/constant/Constants.java b/src/main/java/com/glxp/mipsdl/constant/Constants.java index 01e9c15..b25e77f 100644 --- a/src/main/java/com/glxp/mipsdl/constant/Constants.java +++ b/src/main/java/com/glxp/mipsdl/constant/Constants.java @@ -114,6 +114,24 @@ public interface Constants { */ String URL_NAME_UDIWMS_PRODUCTS_FILTER_URL = "/udiwms/inv/products/filter"; + /** + * B001 查询指定科室高值/普耗库存 + */ + String URL_NAME_FOR_INV_PRODUCTS_FILTER_URL = "/forThirdSysApi/inv/products/filter"; + + + /** + * B002 查询耗材字典 + */ + String URL_NAME_FOR_BASiC_PRODUCTS_SEARCH_URL = "/forThirdSysApi/basic/products/search"; + + + /** + * B003 高值耗材实时出库/退库 + */ + String URL_NAME_FOR_INV_OUT_SCANCODE_URL = "/forThirdSysApi/inv/out/scanCode"; + + //往来单位类型 diff --git a/src/main/java/com/glxp/mipsdl/controller/ExNjxyyController.java b/src/main/java/com/glxp/mipsdl/controller/ExNjxyyController.java new file mode 100644 index 0000000..4655c83 --- /dev/null +++ b/src/main/java/com/glxp/mipsdl/controller/ExNjxyyController.java @@ -0,0 +1,79 @@ +package com.glxp.mipsdl.controller; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.glxp.mipsdl.client.ClientProcessor; +import com.glxp.mipsdl.req.base.UdiwmsQueryUdiInvProductsRequest; +import com.glxp.mipsdl.req.base.forthird.ForBasicProductsSearchFilter; +import com.glxp.mipsdl.req.base.forthird.ForInvOutScanCodeFilter; +import com.glxp.mipsdl.req.base.forthird.ForInvProductsFilter; +import com.glxp.mipsdl.res.BaseResponse; +import com.glxp.mipsdl.util.ResultVOUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + * 南靖县医院--提供给第三方系统调用的接口 + */ +@Slf4j +@RestController +public class ExNjxyyController { + + /** + * B001 查询指定科室高值/普耗库存 + * @param forInvProductsFilter + * @return + */ + @PostMapping("/ex/udiwms/inv/products/filter") + public BaseResponse invProductsFilter(@RequestBody @Valid ForInvProductsFilter forInvProductsFilter) { + if (ObjectUtil.isNull(forInvProductsFilter)) { + return ResultVOUtils.error(500, "查询条件不能为空"); + } + if (StrUtil.isEmpty(forInvProductsFilter.getUdiCode()) && + StrUtil.isEmpty(forInvProductsFilter.getNameCode()) && + StrUtil.isEmpty(forInvProductsFilter.getCpmctymc()) && + StrUtil.isEmpty(forInvProductsFilter.getBatchNo())&& + StrUtil.isEmpty(forInvProductsFilter.getInvCode())&& + StrUtil.isEmpty(forInvProductsFilter.getSupName())) { + return ResultVOUtils.error(500, "查询条件不能为空!"); + } + return ClientProcessor.getHttpClient().queryUdiInvProductsFilter(forInvProductsFilter); + } + + + /** + * B002 查询耗材字典 + * @param forBasicProductsSearchFilter + * @return + */ + @PostMapping("/ex/basic/products/search") + public BaseResponse basicProductsSearch(@RequestBody @Valid ForBasicProductsSearchFilter forBasicProductsSearchFilter) { + if (ObjectUtil.isNull(forBasicProductsSearchFilter)) { + return ResultVOUtils.error(500, "查询条件不能为空"); + } + if (StrUtil.isEmpty(forBasicProductsSearchFilter.getUdiCode()) && + StrUtil.isEmpty(forBasicProductsSearchFilter.getNameCode()) && + StrUtil.isEmpty(forBasicProductsSearchFilter.getCpmctymc()) && + StrUtil.isEmpty(forBasicProductsSearchFilter.getMainId())&& + StrUtil.isEmpty(forBasicProductsSearchFilter.getGgxh())) { + return ResultVOUtils.error(500, "查询条件不能为空!"); + } + return ClientProcessor.getHttpClient().queryUdiBasicProductsSearch(forBasicProductsSearchFilter); + } + + /** + * B003 高值耗材实时出库/退库 + * @param forInvOutScanCodeFilter + * @return + */ + @PostMapping("/ex/inv/out/scanCode") + public BaseResponse invOutScanCode(@RequestBody @Valid ForInvOutScanCodeFilter forInvOutScanCodeFilter) { + return ClientProcessor.getHttpClient().queryUdiInvOutScanCode(forInvOutScanCodeFilter); + } + + +} diff --git a/src/main/java/com/glxp/mipsdl/req/base/FilterInvProductRequest.java b/src/main/java/com/glxp/mipsdl/req/base/FilterInvProductRequest.java new file mode 100644 index 0000000..5b16b2b --- /dev/null +++ b/src/main/java/com/glxp/mipsdl/req/base/FilterInvProductRequest.java @@ -0,0 +1,131 @@ +package com.glxp.mipsdl.req.base; + +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * 库存查询参数 + */ +@Data +public class FilterInvProductRequest extends ListPageRequest { + + private String id; + + /** + * 产品名称 + */ + private String cpmctymc; + + /** + * 产品标识DI + */ + private String nameCode; + + /** + * UDI码 + */ + private String udiCode; + + /** + * 耗材字典ID + */ + private String relIdFk; + + /** + * 规格型号 + */ + private String ggxh; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 生产日期 + */ + private String productionDate; + + /** + * 失效日期 + */ + private String expireDate; + + /** + * 生产厂家 + */ + private String ylqxzcrbarmc; + + /** + * 批准文号 + */ + private String zczbhhzbapzbh; + + /** + * 客户ID + */ + private String customerId; + + /** + * 供应商ID + */ + private String supId; + + /** + * 供应商名称 + */ + private String supName; + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库编码 + */ + private String invCode; + + /** + * 仓库数组 + */ + private List invCodes; + + /** + * 产品类别 + */ + private String cplb; + + /** + * 货位号 + */ + private String invSpaceCode; + + /** + * 是否过滤0库存 + */ + private Integer filterCount; + + private String code; + + private String serialNo; + + private String manufactory; + + private String diCode; + + private String basicPrductRemak1; + private String category; + private Integer filterNoInv; + + private Date startDate; + private Date endDate; + private String thirdSys; + private String thirdSysUrlValue; + + private Long compareId; + + +} diff --git a/src/main/java/com/glxp/mipsdl/req/base/FilterUdiRelRequest.java b/src/main/java/com/glxp/mipsdl/req/base/FilterUdiRelRequest.java new file mode 100644 index 0000000..ad9b757 --- /dev/null +++ b/src/main/java/com/glxp/mipsdl/req/base/FilterUdiRelRequest.java @@ -0,0 +1,117 @@ +package com.glxp.mipsdl.req.base; + +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class FilterUdiRelRequest extends ListPageRequest { + + private String ylqxzcrbarmc; + private String cpmctymc; + private String entireCpmctymc; + private String nameCode; + private String uuid; + private String originUuid; + private String ggxh; + private String thirdId; + private Long id; + + private String thirdId1; + private String thirdId2; + private String thirdId3; + private String thirdId4; + private Boolean isDisable; + + private String thirdCode; + private String thirdSys; + + private String lastUpdateTime; + private String zczbhhzbapzbh; + private String packLevel; + private Integer diType; + + + private String unionCode; + private String udiCode; + private String thrPiId; + + + private Boolean isCheck; + + private Integer filterType; //0:全部,1.对照完成,2.未对照DI,3.未对照产品编码,4.未对照其他产品编码 + private String customerId; + + private String pinyinInitial; + private String code; + + private Integer lockStatus; + private String udplatCode; + private String mainId; + private Boolean isAdavence; + /** + * 采购类型 1:入账产品;2:预验收产品;3:寄售产品 + */ + private Integer purType; + /** + * 产品属性类型 0:未定义;1:设备(用于设备管理);2:耗材;3.伴随服务费 + */ + private Integer attributeType; + /** + * 耗材分类高值 :1:高值耗材;2.普通耗材 + */ + private Integer hcType; + private String corpId; + private String billType; + + private String ybbm; + private String sptm; + private String unionFilterStr;//产品名称,规格,批文,生产厂家联合查询 + private String main; + + List relIds; + private String uniqueNameCode; + private String supName; + private String unitFk; + private String relId; + private String companyName; + + private String bindRlIds; + private String relCode; + private String bindType; + private String certIdFk; + private String manufactory; + private String tyshxydm; + private Boolean dispatch; + private Boolean groupBuy; + private String category; + + private List uuids; + private List ids; + private String flbm; + private String parentCode; + private List existid; + + private String basicPrductRemak1; + private String basicPrductRemak2; + private String basicPrductRemak3; + private String basicPrductRemak4; + private String basicPrductRemak5; + private String basicPrductRemak6; + private String basicPrductRemak7; + private String basicPrductRemak8; + + //定数包参数 + private String destinyId; + private String destinyNo; + private String billNo; + private Date billDate; + private String invCode; + private String remark; + private String key; + + private String deviceRecordKey; + + +} diff --git a/src/main/java/com/glxp/mipsdl/req/base/forthird/ForBasicProductsSearchFilter.java b/src/main/java/com/glxp/mipsdl/req/base/forthird/ForBasicProductsSearchFilter.java new file mode 100644 index 0000000..a6f52a9 --- /dev/null +++ b/src/main/java/com/glxp/mipsdl/req/base/forthird/ForBasicProductsSearchFilter.java @@ -0,0 +1,50 @@ +package com.glxp.mipsdl.req.base.forthird; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.glxp.mipsdl.req.base.ListPageRequest; +import lombok.Data; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; + +@Data +public class ForBasicProductsSearchFilter{ + + /** + * UDI码 + */ + private String udiCode; + + /** + * 第三方产品编码 + */ + private String mainId; + + /** + * DI主标识 + */ + private String nameCode; + + /** + * 产品名称通用名称 + */ + private String cpmctymc; + + /** + * 规格型号 + */ + private String ggxh; + + /** + * 页码 + */ + @Min(message = "分页参数错误", value = 1) + private Integer page; + + /** + * 条数 + */ + @Min(value = 1, message = "分页参数不能小于1") + @Max(value = 500, message = "分页参数不能大于500") + private Integer limit; +} diff --git a/src/main/java/com/glxp/mipsdl/req/base/forthird/ForInvOutScanCodeFilter.java b/src/main/java/com/glxp/mipsdl/req/base/forthird/ForInvOutScanCodeFilter.java new file mode 100644 index 0000000..5ff7f61 --- /dev/null +++ b/src/main/java/com/glxp/mipsdl/req/base/forthird/ForInvOutScanCodeFilter.java @@ -0,0 +1,324 @@ +package com.glxp.mipsdl.req.base.forthird; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +@Data +public class ForInvOutScanCodeFilter { + + /** + * 单据基础信息 + */ + @JsonProperty("BILLBASEINFO") + @NotNull(message = "单据基础信息不可为空!") + private Billbaseinfo billbaseinfo; + + /** + * 病人相关信息 + */ + @JsonProperty("PATIENTINFO") + @NotNull(message = "病人相关信息不可为空!") + private Patientinfo patientinfo; + + /** + * 耗材使用信息列表 + */ + @JsonProperty("HIGHVALUELIST") + @NotNull(message = "耗材使用信息列表不可为空!") + private List highvaluelist; + + + /** + * 单据基础信息 + */ + @Data + static class Billbaseinfo { + /** + * 操作员工号 + */ + @JsonProperty("USERID") + private String userid; + + /** + * his执行科室编码 + */ + @JsonProperty("DEPTID") + private String deptid; + + /** + * 申请时间,格式:yyyy-mm-dd HH:MM:ss + */ + @JsonProperty("APPLYDATE") + private String applydate; + } + + + /** + * 病人相关信息 + */ + @Data + static class Patientinfo { + /** + * 病人ID(首页序号) + */ + @JsonProperty("PATIENTID") + private String patientid; + + /** + * 病人住院号或门诊卡号 + */ + @JsonProperty("INPATIENTID") + private String inpatientid; + + /** + * 门诊或住院1门诊、2住院 + */ + @JsonProperty("MZ_ZY") + private String mzZy; + + /** + * 病人名称 + */ + @JsonProperty("NAME") + private String name; + + /** + * 性别(1:男;2:女) + */ + @JsonProperty("SEX") + private String sex; + + /** + * 病人所在病区编码 + */ + @JsonProperty("INPATIENTDEPT") + private String inpatientdept; + + /** + * 入院时间,格式为yyyy-mm-dd HH:MM:ss + */ + @JsonProperty("INPATIENTDATE") + private String inpatientdate; + + /** + * 入院诊断名称 + */ + @JsonProperty("DIAGNOSIS") + private String diagnosis; + + /** + * 出生年月,格式为yyyy-mm + */ + @JsonProperty("BIRTHDATE") + private String birthdate; + + /** + * 住址 + */ + @JsonProperty("ADDRESS") + private String address; + + /** + * 证件类型,直接使用“身份证号” + */ + @JsonProperty("IDTYPE") + private String idtype; + + /** + * 证件号 + */ + @JsonProperty("IDENTITYNO") + private String identityno; + + /** + * 手机号 + */ + @JsonProperty("CELLPHONENO") + private String cellphoneno; + + /** + * 病人家属 + */ + @JsonProperty("OTHERCONTENT") + private String othercontent; + + /** + * 病人家属联系电话 + */ + @JsonProperty("OTHERPHONE") + private String otherphone; + + /** + * 手术ID(国家标准编码) + */ + @JsonProperty("OPERID") + private String operid; + + /** + * 手术名称 + */ + @JsonProperty("OPERNAME") + private String opername; + + /** + * 主刀医生工号 + */ + @JsonProperty("OPERDOCTORID") + private String operdoctorid; + + /** + * 主刀医生姓名 + */ + @JsonProperty("OPERDOCTOR") + private String operdoctor; + /** + * 主刀医生的科室编码 + */ + @JsonProperty("OPERDOCTORDEPT") + private String operdoctordept; + + /** + * 手术操作护士工号 + */ + @JsonProperty("OPERNURSE") + private String opernurse; + + /** + * 手术室址址 + */ + @JsonProperty("OPERADDRESS") + private String operaddress; + + /** + * 病人所属科室(请使用HIS的科室编码)【申请科室】 + */ + @JsonProperty("APPLYDEPT") + private String applydept; + + /** + * 开单员工工号 + */ + @JsonProperty("APPLYSTAFFID") + private String applystaffid; + + /** + * 执行科室(收费科室) + */ + @JsonProperty("OPERDEPT") + private String operdept; + + /** + * 执行员工工号 + */ + @JsonProperty("OPERSTAFFID") + private String operstaffid; + + /** + * 手术日期,格式为yyyy-mm-dd HH:MM:ss + */ + @JsonProperty("OPERDATE") + private String operdate; + + /** + * 病人所属医疗组代码 + */ + @JsonProperty("YLZDM") + private String ylzdm; + } + + + /** + * 耗材使用信息 + */ + @Data + static class Highvalue { + + /** + * 完整的UDI码 + */ + @JsonProperty("UDICODE") + private String udicode; + + /** + * 主条码 + */ + @JsonProperty("FIRSTID") + private String firstid; + + /** + * 次条码 + */ + @JsonProperty("SECONDID") + private String secondid; + + /** + * HIS项目编码 + */ + @JsonProperty("THIRDID") + private String thirdid; + + /** + * 收费金额 + */ + @JsonProperty("FEE") + private String fee; + + /** + * 收费单价 + */ + @JsonProperty("PRICE") + private String price; + + /** + * 数量 正数代表收费,负数代表退费 + */ + @JsonProperty("QUANTITY") + private String quantity; + + /** + * 供应商ID 从库存中获取 + */ + @JsonProperty("PROVIDERID") + private String providerid; + + /** + * 收费IDHIS每一次收费的唯一标识 + */ + @JsonProperty("CHARGINGID") + private String chargingid; + + /** + * 原收费ID退费的时候 对应原来的收费ID + */ + @JsonProperty("CHARGINGOLDID") + private String chargingoldid; + + /** + * 收费时间 + */ + @JsonProperty("CHARGINGTIME") + private String chargingtime; + + /** + * 收费小项目编码 + */ + @JsonProperty("FEEITEMID") + private String feeitemid; + + /** + * 批号 + */ + @JsonProperty("PH") + private String ph; + + /** + * 有效期 + */ + @JsonProperty("YXQ") + private String yxq; + } + +} diff --git a/src/main/java/com/glxp/mipsdl/req/base/forthird/ForInvOutScanCodeRequest.java b/src/main/java/com/glxp/mipsdl/req/base/forthird/ForInvOutScanCodeRequest.java new file mode 100644 index 0000000..f7c0a38 --- /dev/null +++ b/src/main/java/com/glxp/mipsdl/req/base/forthird/ForInvOutScanCodeRequest.java @@ -0,0 +1,457 @@ +package com.glxp.mipsdl.req.base.forthird; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class ForInvOutScanCodeRequest { + + private IoOrderRequest ioOrderRequest; + + private List codeRequestList; + + + + @Data + static class IoOrderRequest{ + /** + * 单据号 + */ + @TableField(value = "billNo") + private String billNo; + + /** + * 手持终端订单号 + */ + @TableField(value = "corpOrderId") + private String corpOrderId; + + /** + * 主业务类型 + */ + @TableField(value = "mainAction") + private String mainAction; + + /** + * 业务类型 + */ + @TableField(value = "`action`") + private String action; + + /** + * 往来单位 + */ + @TableField(value = "fromCorp") + private String fromCorp; + + /** + * 往来部门 + */ + @TableField(value = "fromDeptCode") + private String fromDeptCode; + + /** + * 往来仓库 + */ + @TableField(value = "fromInvCode") + private String fromInvCode; + + /** + * 单据来源(1.UDIMS平台;2.网页新增;3.pda已校验;4.pda未校验;5.pc端扫码精灵) + */ + @TableField(value = "fromType") + private Integer fromType; + + /** + * 1:草稿;2:已提交待处理;3:处理成功待校验;4:处理异常;5:校验成功待审核;6:校验失败;7:审核通过;8:审核拒绝 + */ + @TableField(value = "`status`") + private Integer status; + + /** + * 1.草稿;2:已提交;3:已审核 + */ + @TableField(value = "dealStatus") + private Integer dealStatus; + + /** + * 创建人 + */ + @TableField(value = "`createUser`") + private String createUser; + + /** + * 创建时间 + */ + @TableField(value = "createTime") + private Date createTime; + + /** + * 更新人 + */ + @TableField(value = "updateUser") + private String updateUser; + + /** + * 更新时间 + */ + @TableField(value = "updateTime") + private Date updateTime; + + /** + * 验收人 + */ + @TableField(value = "reviewUser") + private String reviewUser; + + /** + * 验收时间 + */ + @TableField(value = "auditTime") + private Date auditTime; + + + @TableField(value = "checkUser") + private String checkUser; + + @TableField(value = "checkTime") + private Date checkTime; + + /** + * ID + */ + @TableField(value = "customerId") + private String customerId; + + /** + * 部门编码 + */ + @TableField(value = "deptCode") + private String deptCode; + + /** + * 仓库编码 + */ + @TableField(value = "invCode") + private String invCode; + + /** + * 单据流转 + */ + @TableField(value = "outChangeEnable") + private Boolean outChangeEnable; + + /** + * 单据流转上级单号 + */ + @TableField(value = "originUllageSupNo") + private String originUllageSupNo; + + /** + * 单据流转下级单号 + */ + @TableField(value = "ullageSupNo") + private String ullageSupNo; + + /** + * 平衡补单单号 + */ + @TableField(value = "supplementNo") + private String supplementNo; + + /** + * 第三方系统单号(提交后返回) + */ + @TableField(value = "thirdBillNo") + private String thirdBillNo; + + /** + * 复制单据单号,多个单号之间使用,隔开 + */ + @TableField(value = "replicateNo") + private String replicateNo; + + /** + * 单据打印备注 + */ + @TableField(value = "printRemark") + private String printRemark; + + /** + * 单据备注 + */ + @TableField(value = "remark") + private String remark; + + @TableField(value = "errMsg") + private String errMsg; + + @TableField(value = "preOutBillNo") + private String preOutBillNo; + + @TableField(value = "preInBillNo") + private String preInBillNo; + + @TableField(value = "entrustEnd") + private boolean entrustEnd; + @TableField(value = "reviewSp") + private boolean reviewSp; //是否验收外网单据时,需忽略流转更改为待审核 + + + @TableField(value = "confirmUser") + private String confirmUser; + + + /** + * 单据类型:1.业务单据,2:扫码单据,3.正常处理单据 只有草稿,异常,待处理 + */ + @TableField(value = "orderType") + private Integer orderType; + + //单据同步状态 + @TableField(value = "syncStatus") + private Integer syncStatus; + + + @TableField(value = "fromReceiveBillNo") + private String fromReceiveBillNo; + + @TableField(value = "fromThrBillNo") + private String fromThrBillNo; + + /** + * 导出状态/上传状态(0.未导出,1.已导出,2.导出失败) + */ + @TableField(value = "exportStatus") + private Integer exportStatus; + + + @TableField(value = "busType") + private Integer busType; //1:正常;2:送货;3.到货 + + + @TableField(value = "deliveryStatus") + private Integer deliveryStatus; //单据送货验收状态 + + @TableField(value = "processStatus") + private Integer processStatus; //退货单据处理状态 + @TableField(value = "inCodeStatus") + private Integer inCodeStatus; //内部码生成状态 + + @TableField(value = "relKey") + private String relKey; //关联单据唯一键 + @TableField(value = "suppleCount") + private Integer suppleCount; //补单次数 + + @TableField(value = "checkStatus") + private Integer checkStatus; //确认状态 + + + // 预验收按单出库,退货 + @TableField(value = "checkPreInOrders") + private String checkPreInOrders; + + + // 预验收按货位出库,退货 + @TableField(value = "checkPreInInvCode") + private String checkPreInInvCode; + + // 预验收按货位出库,退货 + @TableField(value = "checkPreInSpaceCode") + private String checkPreInSpaceCode; + + // 当前货位 + @TableField(value = "curSpaceCode") + private String curSpaceCode; + + // 预验收、寄售当前货位 + @TableField(value = "preCurSpaceCode") + private String preCurSpaceCode; + + /** + * 出库病人信息 + */ + @TableField(value = "outSickInfo") + private String outSickInfo; + + @TableField(value = "fromSpmsOrders") + private String fromSpmsOrders; + + + /** + * 是否已被选入 + */ + @TableField(value = "preInSelected") + private Integer preInSelected; + + /** + * 病人住院号 + */ + @TableField(value = "sickerAdNum") + private String sickerAdNum; + + /** + * 往来患者code + */ + @TableField(value = "fromPatientCode") + private String fromPatientCode; + } + + @Data + static class IoOrderCodeRequest{ + + /** + * UDI码 + */ + @TableField(value = "code") + private String code; + + + public void setCode(String code) { + this.code = code; + this.setErrUdiCode(code.replace("\u001D", "")); + } + + /** + * 去掉GS1符号错误条码 + */ + @TableField(value = "errUdiCode") + private String errUdiCode; + + + /** + * 主单据类型(入库,出库) + */ + @TableField(value = "mainAction") + private String mainAction; + + /** + * 单据类型 + */ + @TableField(value = "`action`") + private String action; + + /** + * 订单号外键 + */ + @TableField(value = "orderId") + private String orderId; + + /** + * 手持终端订单号 + */ + @TableField(value = "corpOrderId") + private String corpOrderId; + + /** + * DI标识 + */ + @TableField(value = "nameCode") + private String nameCode; + + + /** + * 批次号 + */ + @TableField(value = "batchNo") + private String batchNo; + + /** + * 生产日期 + */ + @TableField(value = "produceDate") + private String produceDate; + + /** + * 失效日期 + */ + @TableField(value = "expireDate") + private String expireDate; + + /** + * 序列号 + */ + @TableField(value = "serialNo") + private String serialNo; + + /** + * 包装级别 + */ + @TableField(value = "packageLevel") + private String packageLevel; + + /** + * 供应商ID外键 + */ + @TableField(value = "supId") + private String supId; + + /** + * 耗材字典ID外键 + */ + @TableField(value = "relId") + private Long relId; + + /** + * 扫码数量 + */ + @TableField(value = "`count`") + private Integer count; + + /** + * 实际数量 + */ + @TableField(value = "reCount") + private Integer reCount; + + /** + * 部门编码外键 + */ + @TableField(value = "deptCode") + private String deptCode; + + /** + * 仓库编码外键 + */ + @TableField(value = "invCode") + private String invCode; + + /** + * 货位编码外键 + */ + @TableField(value = "warehouseCode") + private String warehouseCode; + + /** + * 预验收,寄售所在货位编码 + */ + @TableField(value = "preSpaceCode") + private String preSpaceCode; + + @TableField(value = "preInSpaceCode") + private String preInSpaceCode; + + /** + * 更新日期 + */ + @TableField(value = "updateTime") + private Date updateTime; + + /** + * 创建日期 + */ + @TableField(value = "createTime") + private Date createTime; + /** + * 入院批号 + */ + @TableField(value = "inBatchNo") + private String inBatchNo; + + + } + +} diff --git a/src/main/java/com/glxp/mipsdl/req/base/forthird/ForInvProductsFilter.java b/src/main/java/com/glxp/mipsdl/req/base/forthird/ForInvProductsFilter.java new file mode 100644 index 0000000..a4d9901 --- /dev/null +++ b/src/main/java/com/glxp/mipsdl/req/base/forthird/ForInvProductsFilter.java @@ -0,0 +1,55 @@ +package com.glxp.mipsdl.req.base.forthird; + +import com.glxp.mipsdl.req.base.ListPageRequest; +import lombok.Data; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; + +@Data +public class ForInvProductsFilter { + + /** + * UDI码(主码+次码) 01069412732363351123050210D230262121D23026201181 + */ + private String udiCode; + + /** + * DI主标识 06941273236335 + */ + private String nameCode; + + /** + * 产品名称 可吸收免打结外科缝线 + */ + private String cpmctymc; + + /** + * 批次号 202006 + */ + private String batchNo; + + /** + * 仓库/科室编码 1001 + */ + private String invCode; + + /** + * 配送商名称 片仔癀诊断 + */ + private String supName; + + + /** + * 页码 + */ + @Min(message = "分页参数错误", value = 1) + private Integer page; + + /** + * 条数 + */ + @Min(value = 1, message = "分页参数不能小于1") + @Max(value = 500, message = "分页参数不能大于500") + private Integer limit; +} diff --git a/src/main/java/com/glxp/mipsdl/res/udiwms/ForBasicProductsSearchResponse.java b/src/main/java/com/glxp/mipsdl/res/udiwms/ForBasicProductsSearchResponse.java new file mode 100644 index 0000000..5da729a --- /dev/null +++ b/src/main/java/com/glxp/mipsdl/res/udiwms/ForBasicProductsSearchResponse.java @@ -0,0 +1,84 @@ +package com.glxp.mipsdl.res.udiwms; + +import lombok.Data; + +@Data +public class ForBasicProductsSearchResponse { + + private Long rlId; + + private String mainId; + + private String nameCode; + + private String cpmctymc; + + private String cplb; + + private String flbm; + + private String ggxh; + + private String qxlb; + + private String tyshxydm; + + private String ylqxzcrbarmc; + + private String zczbhhzbapzbh; + + private String ylqxzcrbarywmc; + + private String ybbm; + + private String sptm; + + private String manufactory; + + private String companyName; + + private String measname; + + private String scbssfbhph; + + private String scbssfbhxlh; + + private String scbssfbhscrq; + + private String scbssfbhsxrq; + + private String cpms; + + private String spmc; + + private String cplx; + + private String hchzsb; + + private String cpdls; + + private String price; + + private boolean dispatch; + + private boolean groupBuy; + + private String sfwblztlcp; + + private String cgzmraqxgxx; + + private String sfbjwycxsy; + + private String zdcfsycs; + + private String sfwwjbz; + + private String syqsfxyjxmj; + + private String mjfs; + + private String categoryName; + + private String cphhhbh; + +} diff --git a/src/main/java/com/glxp/mipsdl/res/udiwms/ForInvOutScanCodeResponse.java b/src/main/java/com/glxp/mipsdl/res/udiwms/ForInvOutScanCodeResponse.java new file mode 100644 index 0000000..3fcdbab --- /dev/null +++ b/src/main/java/com/glxp/mipsdl/res/udiwms/ForInvOutScanCodeResponse.java @@ -0,0 +1,13 @@ +package com.glxp.mipsdl.res.udiwms; + +import lombok.Data; + +@Data +public class ForInvOutScanCodeResponse { + + /** + * UDI管理系统生成的单据号 + */ + private String billNo; + +} diff --git a/src/main/java/com/glxp/mipsdl/res/udiwms/ForInvProductsResponse.java b/src/main/java/com/glxp/mipsdl/res/udiwms/ForInvProductsResponse.java new file mode 100644 index 0000000..10da07b --- /dev/null +++ b/src/main/java/com/glxp/mipsdl/res/udiwms/ForInvProductsResponse.java @@ -0,0 +1,51 @@ +package com.glxp.mipsdl.res.udiwms; + +import lombok.Data; + +@Data +public class ForInvProductsResponse { + + private Long id; + + private String nameCode; + + private String cpmctymc; + + private String relIdFk; + + private String ggxh; + + private String batchNo; + + private String productionDate; + + private String expireDate; + + private String ylqxzcrbarmc; + + private String zczbhhzbapzbh; + + private Integer inCount; + + private Integer outCount; + + private Integer reCount; + + private String customerId; + + private String supName; + + private String supId; + + private String deptName; + + private String invName; + + private String deptCode; + + private String invCode; + + private String measname; + + private String price; +} diff --git a/src/main/java/com/glxp/mipsdl/res/udiwms/InvProductResponse.java b/src/main/java/com/glxp/mipsdl/res/udiwms/InvProductResponse.java new file mode 100644 index 0000000..60994dd --- /dev/null +++ b/src/main/java/com/glxp/mipsdl/res/udiwms/InvProductResponse.java @@ -0,0 +1,130 @@ +package com.glxp.mipsdl.res.udiwms; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 库存数据VO + */ +@Data +public class InvProductResponse { + + private Integer id; + + /** + * 产品标识DI + */ + private String nameCode; + + /** + * 产品名称 + */ + private String cpmctymc; + + /** + * 耗材字典ID + */ + private String relIdFk; + + /** + * 规格型号 + */ + private String ggxh; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 生产日期 + */ + private String productionDate; + private String produceDate; + /** + * 过期时间 + */ + private String expireDate; + + /** + * 生产厂家名称 + */ + private String ylqxzcrbarmc; + + /** + * 批准文号 + */ + private String zczbhhzbapzbh; + + /** + * 入库数量 + */ + private int inCount; + + /** + * 出库数量 + */ + private int outCount; + + /** + * 实际数量 + */ + private int reCount; + + /** + * 客户ID + */ + private String customerId; + + /** + * 供应商名称 + */ + private String supName; + + /** + * 供应商ID + */ + private String supId; + + /** + * 部门名称 + */ + private String deptName; + + /** + * 仓库名称 + */ + private String invName; + + // 货位名称 + private String spaceName; + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库编码 + */ + private String invCode; + + // 货位编号 + private String invSpaceCode; + + private String code; + + private String serialNo; + + private String manufactoryl; + + + /** + * 计量单位 + */ + private String measname; + + private BigDecimal price; + +} diff --git a/src/main/resources/hosp_dict.json b/src/main/resources/hosp_dict.json index 0d0f069..73bad25 100644 --- a/src/main/resources/hosp_dict.json +++ b/src/main/resources/hosp_dict.json @@ -46,5 +46,9 @@ { "code": "100011", "name": "长泰区医院" + }, + { + "code": "100012", + "name": "南靖县医院" } ]