package com.zy.asrs.task.handler; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.exception.CoolException; import com.zy.asrs.entity.DocType; import com.zy.asrs.entity.Order; import com.zy.asrs.entity.OrderDetl; import com.zy.asrs.service.ApiLogService; import com.zy.asrs.service.DocTypeService; import com.zy.asrs.service.OrderDetlService; import com.zy.asrs.service.OrderService; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.third.entity.ExdInstockTarget; import com.zy.third.entity.ExdOutstockTarget; import com.zy.third.service.ExdInstockTargetService; import com.zy.third.service.ExdOutstockTargetService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; /** * Created by vincent on 2020/7/7 */ @Slf4j @Service public class OrderSyncHandler extends AbstractHandler { @Autowired private OrderService orderService; @Autowired private OrderDetlService orderDetlService; @Autowired private ApiLogService apiLogService; @Autowired private DocTypeService docTypeService; @Autowired private ExdInstockTargetService exdInstockTargetService; @Autowired private ExdOutstockTargetService exdOutstockTargetService; @Transactional public ReturnT start(Order order) { DocType docType = docTypeService.selectById(order.getDocType()); if (null == docType) { return SUCCESS; } List orderDetls = orderDetlService.selectByOrderId(order.getId()); if (orderDetls.isEmpty()) { return SUCCESS; } // 入库完成上报 if (docType.getPakin() == 1) { ExdInstockTarget exdInstockTarge = null; for (OrderDetl orderDetl : orderDetls) { exdInstockTarge = new ExdInstockTarget(); exdInstockTarge.setFinterid(orderDetl.getDeadWarn()); exdInstockTarge.setFbillno(orderDetl.getOrderNo()); exdInstockTarge.setFtrantype(order.getDocType().intValue()); exdInstockTarge.setFdate(DateUtils.convert(order.getOrderTime())); exdInstockTarge.setFrob(orderDetl.getInspect()); exdInstockTarge.setFuserid(Integer.getInteger(orderDetl.getColor())); exdInstockTarge.setWritetime(new Date()); exdInstockTarge.setWritor("WMS"); exdInstockTarge.setStatus(0); exdInstockTargetService.insert(exdInstockTarge); } if (!orderService.updateSettle(order.getId(), 6L, null)) { throw new CoolException("服务器内部错误,请联系管理员"); } } else if (docType.getPakout() == 1) { // 出库完成上报 ExdOutstockTarget exdOutstockTarget = null; for (OrderDetl orderDetl : orderDetls) { exdOutstockTarget = new ExdOutstockTarget(); exdOutstockTarget.setFinterid(orderDetl.getDeadWarn()); exdOutstockTarget.setFbillno(orderDetl.getOrderNo()); if (order.getDocType() == 42) { exdOutstockTarget.setFtrantype(41); } else { exdOutstockTarget.setFtrantype(order.getDocType().intValue()); } exdOutstockTarget.setFdate(DateUtils.convert(order.getOrderTime())); exdOutstockTarget.setFrob(orderDetl.getInspect()); exdOutstockTarget.setFuserid(Integer.getInteger(orderDetl.getColor())); exdOutstockTarget.setWritetime(new Date()); exdOutstockTarget.setWritor("WMS"); exdOutstockTarget.setStatus(0); exdOutstockTargetService.insert(exdOutstockTarget); } if (!orderService.updateSettle(order.getId(), 6L, null)) { throw new CoolException("服务器内部错误,请联系管理员"); } } return SUCCESS; } @Transactional public ReturnT start1(Order order, OrderDetl orderDetl) { DocType docType = docTypeService.selectById(order.getDocType()); if (null == docType) { return SUCCESS; } List orderDetls = orderDetlService.selectByOrderId(order.getId()); if (orderDetls.isEmpty()) { return SUCCESS; } double count = orderDetl.getQty() - (Cools.isEmpty(orderDetl.getUnits()) ? 0.0 : orderDetl.getUnits()); if (docType.getPakout() == 1) { // 出库完成上报 ExdOutstockTarget exdOutstockTarget = null; exdOutstockTarget = new ExdOutstockTarget(); //订单内码 exdOutstockTarget.setFinterid(orderDetl.getDeadWarn()); //单号 = erp订单号+物料编号+上报次数 exdOutstockTarget.setFbillno(orderDetl.getOrderNo() + "--" + orderDetl.getMatnr() + "--" + orderDetl.getInspect()); //部门ID exdOutstockTarget.setFdeptid(0); //供应商/客户ID exdOutstockTarget.setFsupplyid(0); //制单用户ID exdOutstockTarget.setFbillerid(0); //细表ID exdOutstockTarget.setFentryid(0); //物料ID exdOutstockTarget.setFitemid(0); //源单数量 exdOutstockTarget.setFqtymust(0.0); //出库数量 //单据类型 exdOutstockTarget.setFtrantype(21); //单据日期 exdOutstockTarget.setFdate(DateUtils.convert(order.getOrderTime())); //红蓝字 exdOutstockTarget.setFrob(orderDetl.getBeBatch()); //操作用户 exdOutstockTarget.setFuserid(Integer.getInteger(orderDetl.getColor())); //写入时间 exdOutstockTarget.setWritetime(new Date()); //写入者 exdOutstockTarget.setWritor("WMS"); //状态 exdOutstockTarget.setStatus(0); if (exdOutstockTargetService.insert(exdOutstockTarget)) { orderDetl.setInspect((Cools.isEmpty(orderDetl.getInspect()) ? 1 : (orderDetl.getInspect() + 1))); orderDetl.setUnits(count + (Cools.isEmpty(orderDetl.getUnits()) ? 0.0 : orderDetl.getUnits())); orderDetlService.updateById(orderDetl); } } return SUCCESS; } }