| | |
| | | import com.zy.asrs.service.OrderService; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.asrs.utils.OrderInAndOutUtil; |
| | | import com.zy.common.constant.MesConstant; |
| | | import com.zy.common.model.DetlDto; |
| | | import com.zy.common.model.MesPakinParam; |
| | | import com.zy.common.model.MesPakoutParam; |
| | | import com.zy.common.utils.HttpHandler; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | private ApiLogService apiLogService; |
| | | @Autowired |
| | | private DocTypeService docTypeService; |
| | | |
| | | @Transactional |
| | | public ReturnT<String> start(Order order) { |
| | | public ReturnT<String> startOrderIssued(Order order) { |
| | | DocType docType = docTypeService.selectById(order.getDocType()); |
| | | if (null == docType) { |
| | | return SUCCESS; |
| | | } |
| | | List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); |
| | | |
| | | OrderInAndOutUtil.insertOrder(order.getPakinPakoutStatus$(),order); |
| | | // 单据明细档 |
| | | List<DetlDto> list = new ArrayList<>(); |
| | | List<OrderDetl> orderDetlList = new ArrayList<>(); |
| | | |
| | | for (OrderDetl detail : orderDetls) { |
| | | DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(),detail.getBrand(),detail.getStandby1(),detail.getStandby2(),detail.getStandby3(), |
| | | detail.getBoxType1(),detail.getBoxType2(),detail.getBoxType3(), detail.getAnfme()); |
| | | if (DetlDto.has(list, dto)) { |
| | | DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(),dto.getBrand(),dto.getStandby1(),dto.getStandby2(),dto.getStandby3(),dto.getBoxType1(),dto.getBoxType2(),dto.getBoxType3()); |
| | | assert detlDto != null; |
| | | detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme()); |
| | | |
| | | OrderDetl orderDetl = OrderDetl.find(orderDetlList, dto.getMatnr(), dto.getBatch(),dto.getBrand(),dto.getStandby1(),dto.getStandby2(),dto.getStandby3(),dto.getBoxType1(),dto.getBoxType2(),dto.getBoxType3()); |
| | | assert orderDetl != null; |
| | | orderDetl.setAnfme(orderDetl.getAnfme() + detail.getAnfme()); |
| | | } else { |
| | | list.add(dto); |
| | | orderDetlList.add(detail); |
| | | } |
| | | } |
| | | for (OrderDetl orderDetl : orderDetlList){ |
| | | OrderInAndOutUtil.insertOrderDetl(order.getPakinPakoutStatus$(),order,orderDetl); |
| | | } |
| | | // 修改订单状态 1.未作业 ===>> 2.作业中 |
| | | if (!orderService.updateSettle(order.getId(), 2L, null)) { |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | @Transactional |
| | | public ReturnT<String> startOrderInAndOutUtil(Order order) { |
| | | DocType docType = docTypeService.selectById(order.getDocType()); |
| | | if (null == docType) { |
| | | return SUCCESS; |
| | | } |
| | | Order orderSou = orderService.selectByNo(order.getOrderNo()); |
| | | if (!orderSou.getSettle().equals(2L)){ |
| | | return FAIL.setMsg("订单状态不正确,请联系管理员"); |
| | | } |
| | | List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(orderSou.getId()); |
| | | |
| | | List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId()); |
| | | |
| | | for (OrderDetl orderDetlSou : orderDetlList){ |
| | | for (OrderDetl orderDetl : orderDetls){ |
| | | if (orderDetl.getQty().equals(0D)){ |
| | | continue; |
| | | } |
| | | if (orderDetlSou.beSimilar(orderDetl)){ |
| | | double v = orderDetlSou.getAnfme() - orderDetlSou.getQty(); |
| | | if (v<orderDetl.getQty() || orderDetl.getQty().equals(v)){ |
| | | orderDetlSou.setQty(orderDetlSou.getAnfme()); |
| | | orderDetl.setQty(orderDetl.getQty() - v); |
| | | break; |
| | | } else { |
| | | orderDetlSou.setQty(orderDetlSou.getQty()+orderDetl.getQty()); |
| | | orderDetl.setQty(0D); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | for (OrderDetl orderDetlSou : orderDetlList){ |
| | | orderDetlService.updateById(orderDetlSou); |
| | | } |
| | | // 修改订单状态 2.作业中 ===>> 4.待上报 |
| | | if (!orderService.updateSettle(orderSou.getId(), 4L, null)) { |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |
| | | } |
| | | // 修改订单状态 4.完成 ===>> 6.结束 |
| | | OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(),order.getId(),6L,null); |
| | | return SUCCESS; |
| | | } |
| | | @Transactional |
| | | public ReturnT<String> startOrderReport(Order order) { |
| | | DocType docType = docTypeService.selectById(order.getDocType()); |
| | | if (null == docType) { |
| | | return SUCCESS; |
| | |
| | | } |
| | | // 出库完成上报 |
| | | if (docType.getPakout() == 1) { |
| | | if (true) { |
| | | return SUCCESS; |
| | | } |
| | | MesPakoutParam pakoutParam = new MesPakoutParam(); |
| | | pakoutParam.setPakoutTime(DateUtils.convert(order.getUpdateTime())); // todo:luxiaotao |
| | | pakoutParam.setLgortFrom("5008"); // todo:luxiaotao |
| | | pakoutParam.setLgortTo("5006"); // todo:luxiaotao |
| | | pakoutParam.setTag(!order.getDocType$().equalsIgnoreCase("手动出库单")); |
| | | pakoutParam.setPakoutTime(DateUtils.convert(order.getUpdateTime())); |
| | | pakoutParam.setLgortFrom("5006"); |
| | | pakoutParam.setLgortTo("1111"); |
| | | if (!pakoutParam.isTag()) { |
| | | pakoutParam.setKunnr("C1000"); |
| | | } |
| | | pakoutParam.setOrderNo(order.getOrderNo()); |
| | | for (OrderDetl orderDetl : orderDetls) { |
| | | String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch(); |
| | | pakoutParam.getList().add(new MesPakoutParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getAnfme())); |
| | |
| | | try { |
| | | response = new HttpHandler.Builder() |
| | | .setUri(MesConstant.URL) |
| | | .setPath(MesConstant.PAKOUT_URL) // todo:luxiaotao |
| | | .setPath(MesConstant.PAKOUT_URL) |
| | | .setJson(JSON.toJSONString(pakoutParam)) |
| | | .build() |
| | | .doPost(); |