package com.glxp.api.service.collect; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.dao.basic.SysWorkplaceDocumentDao; import com.glxp.api.entity.basic.BasicSkPrescribeEntity; import com.glxp.api.entity.basic.BasicSkPrescribeItemEntity; import com.glxp.api.entity.basic.SysWorkplaceDocumentEntity; import com.glxp.api.entity.collect.IoCollectOrder; import com.glxp.api.entity.collect.IoCollectOrderBiz; import com.glxp.api.exception.JsonException; import com.glxp.api.http.ErpBasicClient; import com.glxp.api.req.basic.GetSickPrescribeRequest; import com.glxp.api.req.basic.WorkBindBusTypeRequest; import com.glxp.api.req.collect.CollectOrderRequest; import com.glxp.api.req.inout.FilterOrderRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.BasicSkPrescribeResponse; import com.glxp.api.res.basic.SysWorkplaceDocumentResponse; import com.glxp.api.service.basic.*; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; 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 private BasicSkPrescribeService basicSkPrescribeService; @Resource private BasicSkPrescirbeDetailService basicSkPrescirbeDetailService; @Resource private IoCollectOrderService ioCollectOrderService; @Resource IoCollectOrderService collectOrderService; @Resource IoCollectOrderBizService collectOrderBizService; @Resource private DownloadFactory downloadFactory; @Resource private SysWorkplaceDocumentDao sysWorkplaceDocumentDao; @Resource private SysWorkplaceDocumentService sysWorkplaceDocumentService; public BaseResponse downloadOrderV2(CollectOrderRequest collectOrderRequest) { //条件 String busType = collectOrderRequest.getBusType(); if (StrUtil.isBlank(busType)) { //下载工位下的类型 List list = sysWorkplaceDocumentService.list(); if (CollUtil.isNotEmpty(list)) { for (SysWorkplaceDocumentEntity item : list) { collectOrderRequest.setBusType(item.getDocumentTypeCode()); downloadFactory.downloadOrder(collectOrderRequest); } } else { return ResultVOUtils.error("未配置业务类型"); } return ResultVOUtils.success("下载成功"); } else { return downloadFactory.downloadOrder(collectOrderRequest); } } /** * 异常处理 * * @param collectOrderRequest */ @Transactional(rollbackFor = Exception.class) public void errorHandle(CollectOrderRequest collectOrderRequest) { if (StrUtil.isBlank(collectOrderRequest.getBillNo())) { throw new JsonException(500, "单据号不能为空"); } if (collectOrderRequest.getTagStatus() != 4) { throw new JsonException(500, "非异常单据,无需处理"); } if (StrUtil.isBlank(collectOrderRequest.getBusType())) { throw new JsonException(500, "单据类型不能为空"); } //删除异常单据 collectOrderBizService.remove(new LambdaQueryWrapper() .eq(IoCollectOrderBiz::getOrderIdFk, collectOrderRequest.getBillNo())); collectOrderService.remove(new LambdaQueryWrapper() .eq(IoCollectOrder::getBillNo, collectOrderRequest.getBillNo()) .eq(IoCollectOrder::getTagStatus, 4)); //重新拉取 this.downloadOrderV2(collectOrderRequest); } }