|  |  | 
 |  |  | import com.core.annotations.ManagerAuth; | 
 |  |  | import com.core.common.*; | 
 |  |  | 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.entity.param.OrderDomainParam; | 
 |  |  | import com.zy.asrs.service.DocTypeService; | 
 |  |  | import com.zy.asrs.service.OrderDetlService; | 
 |  |  | import com.zy.asrs.service.OrderService; | 
 |  |  | import com.zy.common.model.DetlDto; | 
 |  |  | import com.zy.common.web.BaseController; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  | 
 |  |  |     private OrderDetlService orderDetlService; | 
 |  |  |     @Autowired | 
 |  |  |     private SnowflakeIdWorker snowflakeIdWorker; | 
 |  |  |     @Autowired | 
 |  |  |     private DocTypeService docTypeService; | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/order/nav/list/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R navList(@RequestParam(required = false) String orderNo){ | 
 |  |  |         EntityWrapper<Order> wrapper = new EntityWrapper<>(); | 
 |  |  |         if (!Cools.isEmpty(orderNo)) { | 
 |  |  |             wrapper.like("order_no", orderNo); | 
 |  |  |         } | 
 |  |  |         wrapper.le("settle", 2).eq("status", 1); | 
 |  |  |         wrapper.orderBy("create_time", false); | 
 |  |  |         List<Order> orders = orderService.selectList(wrapper); | 
 |  |  |         // 保留出库单 | 
 |  |  |         if (!Cools.isEmpty(orders)) { | 
 |  |  |             Iterator<Order> iterator = orders.iterator(); | 
 |  |  |             while (iterator.hasNext()) { | 
 |  |  |                 Order order = iterator.next(); | 
 |  |  |                 if (order.getDocType() != null) { | 
 |  |  |                     DocType docType = docTypeService.selectById(order.getDocType()); | 
 |  |  |                     if (docType != null) { | 
 |  |  |                         if (docType.getPakout() == 0) { | 
 |  |  |                             iterator.remove(); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return R.ok().add(orders); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/order/head/page/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  | 
 |  |  |         excludeTrash(param); | 
 |  |  |         convert(param, wrapper); | 
 |  |  |         if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else { | 
 |  |  |             wrapper.orderBy("create_time", false); | 
 |  |  |             wrapper.orderBy("settle").orderBy("create_time", false); | 
 |  |  |         } | 
 |  |  |         wrapper.eq("status", 1); | 
 |  |  |         return R.ok(orderService.selectPage(new Page<>(curr, limit), wrapper)); | 
 |  |  | 
 |  |  |         if (!orderService.insert(order)) { | 
 |  |  |             throw new CoolException("保存订单主档失败"); | 
 |  |  |         } | 
 |  |  |         List<DetlDto> list = new ArrayList<>(); | 
 |  |  |         for (OrderDetl orderDetl : param.getOrderDetlList()) { | 
 |  |  |             orderDetl.setOrderId(order.getId()); | 
 |  |  |             orderDetl.setCreateBy(getUserId()); | 
 |  |  |             orderDetl.setCreateTime(now); | 
 |  |  |             orderDetl.setUpdateBy(getUserId()); | 
 |  |  |             orderDetl.setUpdateTime(now); | 
 |  |  |             orderDetl.setStatus(1); | 
 |  |  |             if (!orderDetlService.insert(orderDetl)) { | 
 |  |  |                 throw new CoolException("保存订单明细档失败"); | 
 |  |  |             DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch()); | 
 |  |  |             if (DetlDto.has(list, dto)) { | 
 |  |  |                 OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch()); | 
 |  |  |                 item.setAnfme(item.getAnfme() + orderDetl.getAnfme()); | 
 |  |  |                 if (!orderDetlService.updateById(item)) { | 
 |  |  |                     throw new CoolException("保存订单明细档失败"); | 
 |  |  |                 } | 
 |  |  |             } else { | 
 |  |  |                 list.add(dto); | 
 |  |  |                 orderDetl.setOrderId(order.getId()); | 
 |  |  |                 orderDetl.setOrderNo(order.getOrderNo()); | 
 |  |  |                 orderDetl.setCreateBy(getUserId()); | 
 |  |  |                 orderDetl.setCreateTime(now); | 
 |  |  |                 orderDetl.setUpdateBy(getUserId()); | 
 |  |  |                 orderDetl.setUpdateTime(now); | 
 |  |  |                 orderDetl.setStatus(1); | 
 |  |  |                 orderDetl.setQty(0.0D); | 
 |  |  |                 if (!orderDetlService.insert(orderDetl)) { | 
 |  |  |                     throw new CoolException("保存订单明细档失败"); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return R.ok("订单添加成功"); | 
 |  |  | 
 |  |  |         if (order == null || order.getStatus() == 0) { | 
 |  |  |             return R.error("订单不存在"); | 
 |  |  |         } | 
 |  |  |         Date now = new Date(); | 
 |  |  |         Long userId = getUserId(); | 
 |  |  |         // 修改主档 | 
 |  |  |         if (!param.getDocType().equals(order.getDocType())) { | 
 |  |  |             order.setDocType(param.getDocType()); | 
 |  |  |             order.setUpdateBy(getUserId()); | 
 |  |  |             order.setUpdateTime(new Date()); | 
 |  |  |             order.setUpdateBy(userId); | 
 |  |  |             order.setUpdateTime(now); | 
 |  |  |             if (!orderService.updateById(order)) { | 
 |  |  |                 throw new CoolException("修改订单类型失败"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         // 修改明细档 | 
 |  |  |         Iterator<OrderDetl> iterator = param.getOrderDetlList().iterator(); | 
 |  |  |         while (iterator.hasNext()) { | 
 |  |  |             OrderDetl orderDetl = iterator.next(); | 
 |  |  |             OrderDetl detl = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch()); | 
 |  |  |             // 新增 | 
 |  |  |             if (detl == null) { | 
 |  |  |  | 
 |  |  |             // 修改 | 
 |  |  | //        List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); | 
 |  |  |         // 1.清空明细档 | 
 |  |  |         if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()))) { | 
 |  |  |             throw new CoolException("清空订单明细失败"); | 
 |  |  |         } | 
 |  |  |         // 2.重组数据 | 
 |  |  |         List<DetlDto> list = new ArrayList<>(); | 
 |  |  |         for (OrderDetl orderDetl : param.getOrderDetlList()) { | 
 |  |  |             DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch()); | 
 |  |  |             if (DetlDto.has(list, dto)) { | 
 |  |  |                 OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch()); | 
 |  |  |                 item.setAnfme(item.getAnfme() + orderDetl.getAnfme()); | 
 |  |  |                 if (!orderDetlService.updateById(item)) { | 
 |  |  |                     throw new CoolException("保存订单明细档失败"); | 
 |  |  |                 } | 
 |  |  |             } else { | 
 |  |  |  | 
 |  |  |                 list.add(dto); | 
 |  |  |                 orderDetl.setOrderId(order.getId()); | 
 |  |  |                 orderDetl.setOrderNo(order.getOrderNo()); | 
 |  |  |                 orderDetl.setCreateBy(getUserId()); | 
 |  |  |                 orderDetl.setCreateTime(now); | 
 |  |  |                 orderDetl.setUpdateBy(getUserId()); | 
 |  |  |                 orderDetl.setUpdateTime(now); | 
 |  |  |                 orderDetl.setStatus(1); | 
 |  |  |                 orderDetl.setQty(0.0D); | 
 |  |  |                 if (!orderDetlService.insert(orderDetl)) { | 
 |  |  |                     throw new CoolException("保存订单明细档失败"); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); | 
 |  |  |  | 
 |  |  |         return R.ok(); | 
 |  |  |         return R.ok("订单修改成功"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/order/update/auth") | 
 |  |  |     @ManagerAuth | 
 |  |  |     public R update(Order order){ | 
 |  |  |         if (Cools.isEmpty(order) || null == order.getId()){ | 
 |  |  |             return R.error(); | 
 |  |  |         } | 
 |  |  |         order.setUpdateBy(getUserId()); | 
 |  |  |         order.setUpdateTime(new Date()); | 
 |  |  |         if (!orderService.updateById(order)) { | 
 |  |  |             throw new CoolException("修改订单失败"); | 
 |  |  |         } | 
 |  |  |         return R.ok(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @RequestMapping(value = "/order/delete/auth") | 
 |  |  |     @ManagerAuth(memo = "手动删除订单") | 
 |  |  |     @Transactional | 
 |  |  |     public R delete(@RequestParam Long orderId){ | 
 |  |  |         Order order = orderService.selectById(orderId); | 
 |  |  |         if (order != null) { | 
 |  |  |             order.setStatus(0); | 
 |  |  |         } | 
 |  |  |         if (!orderService.updateById(order)) { | 
 |  |  |             throw new CoolException("删除订单失败"); | 
 |  |  |         } | 
 |  |  |         orderService.remove(orderId); | 
 |  |  | //        Order order = orderService.selectById(orderId); | 
 |  |  | //        if (order != null) { | 
 |  |  | //            order.setStatus(0); | 
 |  |  | //        } | 
 |  |  | //        if (!orderService.updateById(order)) { | 
 |  |  | //            throw new CoolException("删除订单失败"); | 
 |  |  | //        } | 
 |  |  | //        orderDetlService.modifyStatus(orderId, 0); | 
 |  |  |         return R.ok(); | 
 |  |  |     } | 
 |  |  |  |