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.
226 lines
9.4 KiB
Java
226 lines
9.4 KiB
Java
package com.glxp.mipsdl.util;
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.util.ReflectUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.glxp.mipsdl.config.ThirdSysConfig;
|
|
import com.glxp.mipsdl.constant.Constants;
|
|
import com.glxp.mipsdl.dao.basic.BasicProductsDao;
|
|
import com.glxp.mipsdl.dao.basic.BasicUdirelDao;
|
|
import com.glxp.mipsdl.dao.inout.IoOrderDao;
|
|
import com.glxp.mipsdl.dao.inout.IoOrderUploadLogDao;
|
|
import com.glxp.mipsdl.dao.thrsys.ThrProductsDao;
|
|
import com.glxp.mipsdl.entity.basic.BasicProductsEntity;
|
|
import com.glxp.mipsdl.entity.basic.BasicUdirelEntity;
|
|
import com.glxp.mipsdl.entity.inout.IoCodeEntity;
|
|
import com.glxp.mipsdl.entity.inout.IoOrderDetailBizEntity;
|
|
import com.glxp.mipsdl.entity.inout.IoOrderEntity;
|
|
import com.glxp.mipsdl.entity.inout.IoOrderUploadLogEntity;
|
|
import com.glxp.mipsdl.entity.thrsys.ThrProductsEntity;
|
|
import com.glxp.mipsdl.http.HttpClient;
|
|
import com.glxp.mipsdl.req.base.UdiwmsOrderDetailRequest;
|
|
import com.glxp.mipsdl.res.BaseResponse;
|
|
import com.glxp.mipsdl.service.thrsys.ThrSystemDetailService;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import javax.annotation.Resource;
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 提交单据工具类
|
|
*/
|
|
@Slf4j
|
|
@Component
|
|
public class SubmitOrderUtil {
|
|
|
|
@Resource
|
|
private BasicUdirelDao basicUdirelDao;
|
|
@Resource
|
|
private BasicProductsDao basicProductsDao;
|
|
@Resource
|
|
private ThirdSysConfig thirdSysConfig;
|
|
@Resource
|
|
private ThrProductsDao thrProductsDao;
|
|
@Resource
|
|
private HttpClient httpClient;
|
|
@Resource
|
|
private ThrSystemDetailService thrSystemDetailService;
|
|
@Resource
|
|
private IoOrderUploadLogDao orderUploadLogDao;
|
|
@Resource
|
|
private IoOrderDao orderDao;
|
|
|
|
/**
|
|
* 查找产品对应的条码详情
|
|
*
|
|
* @param orderDetailBizEntity
|
|
* @param codeEntities
|
|
* @return
|
|
*/
|
|
public List<IoCodeEntity> filterCodes(IoOrderDetailBizEntity orderDetailBizEntity, List<IoCodeEntity> codeEntities) {
|
|
List<IoCodeEntity> result = new ArrayList<>();
|
|
if (CollUtil.isNotEmpty(codeEntities)) {
|
|
for (IoCodeEntity codeEntity : codeEntities) {
|
|
if ((codeEntity.getRelId() + "").equals(orderDetailBizEntity.getBindRlFk())
|
|
&& StrUtil.trimToEmpty(codeEntity.getBatchNo()).equals(StrUtil.trimToEmpty(orderDetailBizEntity.getBatchNo()))) {
|
|
result.add(codeEntity);
|
|
}
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/**
|
|
* 封装码参数
|
|
*
|
|
* @param ioCodeEntities
|
|
* @param detailBizEntity
|
|
* @param item
|
|
*/
|
|
public void setCodeList(List<IoCodeEntity> ioCodeEntities, IoOrderDetailBizEntity detailBizEntity, UdiwmsOrderDetailRequest item) {
|
|
List<IoCodeEntity> codeList = filterCodes(detailBizEntity, ioCodeEntities);
|
|
if (CollUtil.isNotEmpty(codeList)) {
|
|
List<UdiwmsOrderDetailRequest.CodeDetailEntity> codes = new ArrayList<>();
|
|
codeList.forEach(ioCodeEntity -> {
|
|
UdiwmsOrderDetailRequest.CodeDetailEntity codeDetailEntity = new UdiwmsOrderDetailRequest.CodeDetailEntity();
|
|
BeanUtil.copyProperties(ioCodeEntity, codeDetailEntity);
|
|
codes.add(codeDetailEntity);
|
|
});
|
|
item.setCodeList(codes);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 构造提交单据参数的产品信息参数
|
|
*
|
|
* @param detailBizEntity
|
|
* @return
|
|
*/
|
|
public UdiwmsOrderDetailRequest buildProductInfo(IoOrderDetailBizEntity detailBizEntity) {
|
|
//查询产品信息
|
|
BasicUdirelEntity basicUdirel = basicUdirelDao.selectById(detailBizEntity.getBindRlFk());
|
|
BasicProductsEntity basicProducts = basicProductsDao.selectOne(new LambdaQueryWrapper<BasicProductsEntity>().eq(BasicProductsEntity::getUuid, basicUdirel.getUuid()).last("limit 1"));
|
|
|
|
UdiwmsOrderDetailRequest item = new UdiwmsOrderDetailRequest();
|
|
BeanUtil.copyProperties(detailBizEntity, item);
|
|
|
|
item.setProductDate(DateUtil.formatExpireTime(StrUtil.isBlank(detailBizEntity.getProductDate()) ? null : "20" + detailBizEntity.getProductDate()));
|
|
item.setExpireDate(DateUtil.formatExpireTime(StrUtil.isBlank(detailBizEntity.getExpireDate()) ? null : "20" + detailBizEntity.getExpireDate()));
|
|
|
|
String thirdProductId = (String) ReflectUtil.getFieldValue(basicUdirel, thirdSysConfig.getThirdId());
|
|
item.setProductId(thirdProductId); //产品ID
|
|
//查询第三方产品名称
|
|
ThrProductsEntity thrProductsEntity = thrProductsDao.selectOne(new LambdaQueryWrapper<ThrProductsEntity>()
|
|
.eq(ThrProductsEntity::getCode, thirdProductId).last("limit 1"));
|
|
if (thrProductsEntity == null) {
|
|
log.error("第三方产品编码未关联");
|
|
return null;
|
|
}
|
|
item.setProductName(thrProductsEntity.getName()); //产品名称
|
|
// item.setBindRlFk(detailBizEntity.getBindRlFk());
|
|
item.setStandard(detailBizEntity.getSpec()); //规格型号
|
|
item.setBillNo(detailBizEntity.getOrderIdFk()); //单据号
|
|
item.setRegisterNo(detailBizEntity.getCertCode()); //注册/备案证号
|
|
item.setManufactory(basicProducts.getManufactory()); //生产厂家
|
|
item.setMeasname(basicProducts.getMeasname()); //计量单位
|
|
if (StrUtil.isEmpty(detailBizEntity.getRemark())){
|
|
item.setRemark("");
|
|
}else {
|
|
item.setRemark(detailBizEntity.getRemark());
|
|
}
|
|
if (StrUtil.isEmpty(detailBizEntity.getRemark1())){
|
|
item.setRemark1("");
|
|
}else {
|
|
item.setRemark1(detailBizEntity.getRemark1());
|
|
}
|
|
|
|
if (StrUtil.isEmpty(detailBizEntity.getRemark2())){
|
|
item.setRemark2("");
|
|
}else {
|
|
item.setRemark2(detailBizEntity.getRemark2());
|
|
}
|
|
|
|
if (StrUtil.isEmpty(detailBizEntity.getRemark3())){
|
|
item.setRemark3("");
|
|
}else {
|
|
item.setRemark3(detailBizEntity.getRemark3());
|
|
}
|
|
|
|
// if (StrUtil.isEmpty(basicProducts.getYbbm())){
|
|
// item.setYbbm("");
|
|
// }else {
|
|
// item.setYbbm(basicProducts.getYbbm());
|
|
// }
|
|
|
|
// item.setAllowNoBatch(IntUtil.value(basicProducts.getAllowNoBatch())); //是否允许无批次号
|
|
// item.setManufactoryCode(thrProductsEntity.getManufactoryCode());
|
|
// item.setSupCode(thrProductsEntity.getSupCode());
|
|
// item.setCplb(thrProductsEntity.getFlbm());
|
|
// item.setHslb(thrProductsEntity.getCplb());
|
|
item.setCount(detailBizEntity.getCount());
|
|
return item;
|
|
}
|
|
|
|
/**
|
|
* 处理提交单据,记录日志,解析结果逻辑
|
|
*
|
|
* @param orderEntity
|
|
* @param udiwmsOrderRequest
|
|
* @return
|
|
*/
|
|
public BaseResponse submitOrder(IoOrderEntity orderEntity, Object udiwmsOrderRequest) {
|
|
//记录日志
|
|
IoOrderUploadLogEntity uploadLog = new IoOrderUploadLogEntity();
|
|
uploadLog.setBillDate(orderEntity.getCreateTime());
|
|
uploadLog.setBillType(orderEntity.getAction());
|
|
uploadLog.setSubmitTime(new Date());
|
|
uploadLog.setBillNo(orderEntity.getBillNo());
|
|
uploadLog.setFromType(Constants.THIRD_ORDER_UPLOAD);
|
|
String response = httpClient.postJson(thrSystemDetailService.getUrl(Constants.URL_NAME_ORDER_SUBMIT_URL), udiwmsOrderRequest);
|
|
if (StrUtil.isNotBlank(response)) {
|
|
try {
|
|
BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class);
|
|
if (baseResponse.getCode() == 20000) {
|
|
String thirdBillNo = String.valueOf(baseResponse.getData());
|
|
orderEntity.setThirdBillNo(thirdBillNo);
|
|
orderEntity.setExportStatus(1); //上传成功
|
|
uploadLog.setStatus(2);
|
|
uploadLog.setThrBillNo(thirdBillNo);
|
|
uploadLog.setResult("提交成功");
|
|
orderDao.updateById(orderEntity);
|
|
orderUploadLogDao.insert(uploadLog);
|
|
return ResultVOUtils.success("提交成功");
|
|
}
|
|
orderEntity.setExportStatus(2); //上传失败
|
|
uploadLog.setStatus(3);
|
|
uploadLog.setResult("提交失败,错误信息:" + baseResponse.getMessage());
|
|
orderUploadLogDao.insert(uploadLog);
|
|
return baseResponse;
|
|
} catch (Exception e) {
|
|
log.error("解析提交单据返回结果异常,结果信息:{}", response);
|
|
log.error("异常信息:{}", e);
|
|
uploadLog.setStatus(3);
|
|
uploadLog.setResult("提交失败,错误信息:" + response);
|
|
orderEntity.setExportStatus(2); //上传失败
|
|
orderDao.updateById(orderEntity);
|
|
orderUploadLogDao.insert(uploadLog);
|
|
return ResultVOUtils.error(500, "提交失败");
|
|
}
|
|
} else {
|
|
uploadLog.setStatus(3);
|
|
uploadLog.setResult("提交失败,调用接口返回为空");
|
|
orderEntity.setExportStatus(2); //上传失败
|
|
orderDao.updateById(orderEntity);
|
|
orderUploadLogDao.insert(uploadLog);
|
|
return ResultVOUtils.error(500, "提交失败");
|
|
}
|
|
}
|
|
|
|
}
|