You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udi-wms-java/src/main/java/com/glxp/api/service/collect/IoCollectOriginService.java

152 lines
6.9 KiB
Java

10 months ago
package com.glxp.api.service.collect;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
10 months ago
import cn.hutool.core.lang.Assert;
10 months ago
import cn.hutool.core.util.IdUtil;
10 months ago
import cn.hutool.core.util.StrUtil;
10 months ago
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
10 months ago
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
10 months ago
import com.glxp.api.dao.basic.SysWorkplaceDocumentDao;
10 months ago
import com.glxp.api.entity.basic.BasicSkPrescribeEntity;
import com.glxp.api.entity.basic.BasicSkPrescribeItemEntity;
10 months ago
import com.glxp.api.entity.collect.IoCollectOrder;
10 months ago
import com.glxp.api.entity.collect.IoCollectOrderBiz;
import com.glxp.api.exception.JsonException;
10 months ago
import com.glxp.api.http.ErpBasicClient;
import com.glxp.api.req.basic.GetSickPrescribeRequest;
10 months ago
import com.glxp.api.req.basic.WorkBindBusTypeRequest;
10 months ago
import com.glxp.api.req.collect.CollectOrderRequest;
10 months ago
import com.glxp.api.req.inout.FilterOrderRequest;
10 months ago
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.res.basic.BasicSkPrescribeResponse;
10 months ago
import com.glxp.api.res.basic.SysWorkplaceDocumentResponse;
10 months ago
import com.glxp.api.service.basic.*;
10 months ago
import org.springframework.stereotype.Service;
10 months ago
import org.springframework.transaction.annotation.Transactional;
10 months ago
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
*
*/
@Service
public class IoCollectOriginService {
@Resource
private ErpBasicClient erpBasicClient;
@Resource
10 months ago
private BasicSkPrescribeService basicSkPrescribeService;
10 months ago
@Resource
10 months ago
private BasicSkPrescirbeDetailService basicSkPrescirbeDetailService;
@Resource
private IoCollectOrderService ioCollectOrderService;
10 months ago
@Resource
IoCollectOrderService collectOrderService;
10 months ago
@Resource
IoCollectOrderBizService collectOrderBizService;
10 months ago
@Resource
private DownloadFactory downloadFactory;
10 months ago
@Resource
private SysWorkplaceDocumentDao sysWorkplaceDocumentDao;
10 months ago
public BaseResponse downloadOrder(CollectOrderRequest collectOrderRequest) {
//拉取药品处方
if (collectOrderRequest.getBusType().equals("YPCF002")) {
GetSickPrescribeRequest getSickPrescribeRequest = new GetSickPrescribeRequest();
getSickPrescribeRequest.setPage(1);
getSickPrescribeRequest.setLimit(100);
getSickPrescribeRequest.setCode(collectOrderRequest.getBillNo());
getSickPrescribeRequest.setThirdSys("thirdId");
10 months ago
BaseResponse<PageSimpleResponse<BasicSkPrescribeResponse>> baseResponse = erpBasicClient.getPrescribe(getSickPrescribeRequest);
if (baseResponse.getCode() == 20000) {
List<BasicSkPrescribeResponse> list = baseResponse.getData().getList();
List<BasicSkPrescribeEntity> basicSkPrescribeEntities = new ArrayList<>();
list.forEach(item -> {
BasicSkPrescribeEntity basicSkPrescribeEntity = new BasicSkPrescribeEntity();
BeanUtil.copyProperties(item, basicSkPrescribeEntity);
basicSkPrescribeEntity.setSickerCode(item.getSickCode());
basicSkPrescribeEntity.setUpdateTime(LocalDateTime.now());
List<BasicSkPrescribeItemEntity> skPrescribeItemEntities = item.getItemList();
if (CollUtil.isNotEmpty(skPrescribeItemEntities)) {
basicSkPrescirbeDetailService.remove(new QueryWrapper<BasicSkPrescribeItemEntity>().eq("prescribeCode", item.getCode()));
for (BasicSkPrescribeItemEntity skPrescribeItemEntity : skPrescribeItemEntities) {
skPrescribeItemEntity.setPrescribeCode(item.getCode());
skPrescribeItemEntity.setSickerCode(item.getSickCode());
skPrescribeItemEntity.setAdNum(basicSkPrescribeEntity.getAdNum());
skPrescribeItemEntity.setId(IdUtil.getSnowflakeNextId());
basicSkPrescirbeDetailService.save(skPrescribeItemEntity);
}
}
basicSkPrescribeEntities.add(basicSkPrescribeEntity);
basicSkPrescribeService.saveOrUpdate(basicSkPrescribeEntity);
});
10 months ago
collectOrderService.importPrescribe(basicSkPrescribeEntities);
return ResultVOUtils.success("下载成功");
10 months ago
}
}
10 months ago
return ResultVOUtils.error("下载失败");
10 months ago
}
10 months ago
public BaseResponse downloadOrderV2(CollectOrderRequest collectOrderRequest) {
10 months ago
//条件
10 months ago
String busType = collectOrderRequest.getBusType();
10 months ago
if (StrUtil.isBlank(busType)) {
10 months ago
//下载工位下的类型
WorkBindBusTypeRequest workBindBusTypeRequest = new WorkBindBusTypeRequest();
workBindBusTypeRequest.setWorkplaceCode(collectOrderRequest.getWorkPlaceCode());
List<SysWorkplaceDocumentResponse> sysWorkplaceDocumentResponses = sysWorkplaceDocumentDao.filterList(workBindBusTypeRequest);
10 months ago
if (CollUtil.isNotEmpty(sysWorkplaceDocumentResponses)) {
for (SysWorkplaceDocumentResponse sysWorkplaceDocumentResponse : sysWorkplaceDocumentResponses) {
10 months ago
String documentTypeCode = sysWorkplaceDocumentResponse.getDocumentTypeCode();
collectOrderRequest.setBusType(documentTypeCode);
downloadFactory.downloadOrder(collectOrderRequest);
}
}
return ResultVOUtils.success("下载成功");
10 months ago
} else {
10 months ago
return downloadFactory.downloadOrder(collectOrderRequest);
}
10 months ago
}
10 months ago
/**
*
10 months ago
*
10 months ago
* @param collectOrderRequest
*/
@Transactional(rollbackFor = Exception.class)
public void errorHandle(CollectOrderRequest collectOrderRequest) {
10 months ago
if (StrUtil.isBlank(collectOrderRequest.getBillNo())) {
10 months ago
throw new JsonException(500, "单据号不能为空");
}
10 months ago
if (collectOrderRequest.getTagStatus() != 4) {
10 months ago
throw new JsonException(500, "非异常单据,无需处理");
}
10 months ago
if (StrUtil.isBlank(collectOrderRequest.getBusType())) {
10 months ago
throw new JsonException(500, "单据类型不能为空");
}
10 months ago
if (collectOrderRequest.getWorkPlaceCode() == null) {
10 months ago
throw new JsonException(500, "工位号不能为空");
}
//删除异常单据
collectOrderBizService.remove(new LambdaQueryWrapper<IoCollectOrderBiz>()
10 months ago
.eq(IoCollectOrderBiz::getOrderIdFk, collectOrderRequest.getBillNo()));
10 months ago
collectOrderService.remove(new LambdaQueryWrapper<IoCollectOrder>()
10 months ago
.eq(IoCollectOrder::getBillNo, collectOrderRequest.getBillNo())
.eq(IoCollectOrder::getTagStatus, 4));
10 months ago
//重新拉取
this.downloadOrderV2(collectOrderRequest);
}
10 months ago
}