| | |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service |
| | | @DS("mm") |
| | |
| | | //获取对象集合循环进行新增修改 |
| | | List<FlowCard> flowCardlist = JSONArray.parseArray(JSONObject.toJSONString(object.get("flowCard")), FlowCard.class); |
| | | if (!flowCardlist.isEmpty()){ |
| | | //获取单号 |
| | | String oddNumber= orderNumberSetting("入库"); |
| | | for (FlowCard flowCard : flowCardlist) { |
| | | //获取单号 |
| | | String oddNumber= orderNumberSetting("入库"); |
| | | //添加出入库记录 |
| | | finishedOperateLogMapper.insertIntFinishedOperateLog(flowCard,userName,oddNumber,container); |
| | | Integer finishedGoodsInventorycount = finishedGoodsInventoryMapper.findOrderNumberdcount(flowCard.getOrder().getOrderId(),flowCard.getOrderNumber()); |
| | |
| | | //获取对象集合循环进行新增修改 |
| | | List<OrderDetail> orderDetaillist = JSONArray.parseArray(JSONObject.toJSONString(object.get("orderDetail")), OrderDetail.class); |
| | | if (!orderDetaillist.isEmpty()){ |
| | | for (OrderDetail orderDetail : orderDetaillist) { |
| | | //获取单号 |
| | | String oddNumber= orderNumberSetting("出库"); |
| | | OrderDetail orderDetailNew= finishedGoodsInventoryMapper.findOrderDetailNumberd(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber()); |
| | | //添加出入库记录 |
| | | finishedOperateLogMapper.insertOutFinishedOperateLog(orderDetail,userName,oddNumber); |
| | | Integer finishedGoodsInventorycount = finishedGoodsInventoryMapper.findOrderNumberdcount(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber()); |
| | | |
| | | |
| | | Integer ordersum = finishedGoodsInventoryMapper.findOrderQuantity(orderDetail.getDeliveryDetail().getOrderId()); |
| | | Integer orderNumberdsum = finishedGoodsInventoryMapper.findOrderNumberdsum(orderDetail.getDeliveryDetail().getOrderId()); |
| | | |
| | | Integer deliverysum = finishedGoodsInventoryMapper.findDeliveryQuantity(orderDetail.getDeliveryDetail().getDeliveryId()); |
| | | Integer deliverydetailsum = finishedGoodsInventoryMapper.findDeliverydetailsum(orderDetail.getDeliveryDetail().getDeliveryId(),0); |
| | | if(deliverydetailsum==null){ |
| | | deliverydetailsum=0; |
| | | } |
| | | |
| | | DeliveryDetail deliveryDetail=finishedGoodsInventoryMapper.findDeliverydetail(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getDeliveryId()); |
| | | /*System.out.println("订单总数:" + ordersum + "订单库存数:" + orderNumberdsum + "准备出库数量" + |
| | | orderDetail.getWarehouseNum()+ "发货数量" + orderDetail.getDeliveryDetail().getQuantity()+ "发货总数" + |
| | | deliverysum+ "已发数量" + deliverydetailsum);*/ |
| | | //判断发货单的库存是否存在 |
| | | if (finishedGoodsInventorycount > 0) { |
| | | //判断发货单是否已出库 |
| | | if(deliveryDetail==null){ |
| | | if(orderDetailNew.getWarehouseNum()>=orderDetail.getDeliveryDetail().getQuantity()){ |
| | | //修改库存表库存数量 |
| | | finishedGoodsInventoryMapper.updateInventoryInventoryOut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getQuantity()); |
| | | //修改发货明细表状态 |
| | | finishedGoodsInventoryMapper.updateDeliveryDetailState(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getDeliveryId(),0); |
| | | //修改发货表状态 |
| | | finishedGoodsInventoryMapper.updateDeliveryDeliveryState(orderDetail.getDeliveryDetail().getDeliveryId(),1); |
| | | //修改订单明细表发货数量 |
| | | finishedGoodsInventoryMapper.updateOutOrderNumberConut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getQuantity()); |
| | | //修改订单表发货状态 |
| | | finishedGoodsInventoryMapper.updateOrderDeliveryState(orderDetail.getDeliveryDetail().getOrderId(),1); |
| | | //判断订单是否全部发货 |
| | | if (orderNumberdsum == orderDetail.getWarehouseNum()) { |
| | | //if (ordersum == (orderDeliveryQuantitySum + orderDetail.getWarehouseNum())) { |
| | | //修改订单表发货状态 |
| | | finishedGoodsInventoryMapper.updateOrderDeliveryState(orderDetail.getDeliveryDetail().getOrderId(),2); |
| | | } |
| | | if (deliverysum==deliverydetailsum+orderDetail.getDeliveryDetail().getQuantity()) { |
| | | //修改发货表状态 |
| | | finishedGoodsInventoryMapper.updateDeliveryDeliveryState(orderDetail.getDeliveryDetail().getDeliveryId(),2); |
| | | } |
| | | }else{ |
| | | TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); |
| | | return "false3"; |
| | | } |
| | | }else{ |
| | | TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); |
| | | return "false1"; |
| | | } |
| | | |
| | | |
| | | }else{ |
| | | TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); |
| | | return "false2"; |
| | | } |
| | | if(!Objects.equals(deliveryDetailLogic(orderDetaillist, savePoint, userName), "true")) { |
| | | return deliveryDetailLogic(orderDetaillist, savePoint, userName); |
| | | } |
| | | } |
| | | |
| | |
| | | //获取对象集合循环进行新增修改 |
| | | List<FinishedOperateLog> finishedOperateLogslist = JSONArray.parseArray(JSONObject.toJSONString(object.get("orderDetail")), FinishedOperateLog.class); |
| | | if (!finishedOperateLogslist.isEmpty()){ |
| | | for (FinishedOperateLog finishedOperateLog : finishedOperateLogslist) { |
| | | Integer ordersum = finishedGoodsInventoryMapper.findOrderQuantity(finishedOperateLog.getOrderId()); |
| | | Integer ordernumbersum = finishedGoodsInventoryMapper.findOrderNumberdsum(finishedOperateLog.getOrderId()); |
| | | Integer deliverysum = finishedGoodsInventoryMapper.findDeliveryQuantity(finishedOperateLog.getOperationOrderNumber()); |
| | | Integer deliverydetailsum = finishedGoodsInventoryMapper.findDeliverydetailsum(finishedOperateLog.getOperationOrderNumber(),1); |
| | | |
| | | if(Objects.equals(finishedOperateLog.getOperateType(), "入库")){ |
| | | Delivery delivery = finishedGoodsInventoryMapper.findOrderDelivery(finishedOperateLog.getOrderId()); |
| | | if(delivery==null){ |
| | | //修改记录表 |
| | | finishedOperateLogMapper.updateFinishedOperateLogState(finishedOperateLog,"已作废"); |
| | | //修改库存表入库数量 |
| | | finishedGoodsInventoryMapper.updateInventoryOut(finishedOperateLog); |
| | | if(finishedOperateLog.getProcessId()!=null){ |
| | | //修改流程卡表入库数量 |
| | | finishedGoodsInventoryMapper.updateflowcardOut(finishedOperateLog); |
| | | } |
| | | |
| | | //修改订单明细表入库数量 |
| | | finishedGoodsInventoryMapper.updateOutOrderNumberConut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getQuantity()); |
| | | //判断订单是否全部入库 |
| | | if (Objects.equals(ordersum, ordernumbersum)) { |
| | | //修改订单表入库状态 |
| | | finishedGoodsInventoryMapper.updateOrderWarehousingState(finishedOperateLog.getOrderId(),1); |
| | | } |
| | | if (ordernumbersum-finishedOperateLog.getQuantity()==0) { |
| | | //修改订单表入库状态 |
| | | finishedGoodsInventoryMapper.updateOrderWarehousingState(finishedOperateLog.getOrderId(),0); |
| | | } |
| | | log.setFunction("cancelFinishedGoodsInventoryStorage入库"); |
| | | }else{ |
| | | return "false1"; |
| | | } |
| | | |
| | | |
| | | |
| | | }else if(Objects.equals(finishedOperateLog.getOperateType(), "出库")){ |
| | | //修改记录表 |
| | | finishedOperateLogMapper.updateFinishedOperateLogState(finishedOperateLog,"已作废"); |
| | | //修改库存表库存数量 |
| | | finishedGoodsInventoryMapper.updateInventoryInventoryInt(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getQuantity()); |
| | | //修改发货明细表状态 |
| | | finishedGoodsInventoryMapper.updateDeliveryDetailState(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getOperationOrderNumber(),1); |
| | | //修改发货表状态 |
| | | finishedGoodsInventoryMapper.updateDeliveryDeliveryState(finishedOperateLog.getOperationOrderNumber(),1); |
| | | //修改订单明细表库内数量 |
| | | finishedGoodsInventoryMapper.updateIntOrderNumberConut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(), Long.valueOf(finishedOperateLog.getQuantity())); |
| | | //修改订单表发货状态 |
| | | finishedGoodsInventoryMapper.updateOrderDeliveryState(finishedOperateLog.getOrderId(),1); |
| | | //判断订单是否全部发货 |
| | | if (ordersum==finishedOperateLog.getQuantity()+ordernumbersum){ |
| | | //修改订单表发货状态 |
| | | finishedGoodsInventoryMapper.updateOrderDeliveryState(finishedOperateLog.getOrderId(),0); |
| | | |
| | | } |
| | | if (deliverysum==finishedOperateLog.getQuantity()+deliverydetailsum) { |
| | | //修改发货表状态 |
| | | finishedGoodsInventoryMapper.updateDeliveryDeliveryState(finishedOperateLog.getOperationOrderNumber(),0); |
| | | } |
| | | log.setFunction("cancelFinishedGoodsInventoryStorage出库"); |
| | | |
| | | } |
| | | |
| | | if(!Objects.equals(cancelDeliveryDetailLogic(finishedOperateLogslist, savePoint, object.get("userName").toString(), log), "true")){ |
| | | return cancelDeliveryDetailLogic(finishedOperateLogslist,savePoint,object.get("userName").toString(),log); |
| | | } |
| | | } |
| | | logService.saveLog(log); |
| | |
| | | List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();//最终结果 |
| | | List<FinishedOperateLog> finishedOperateLogList = JSONArray.parseArray(JSONObject.toJSONString(object.get("printList")), FinishedOperateLog.class); |
| | | if (!finishedOperateLogList.isEmpty()) { |
| | | Set<String> processedProcessIds = new HashSet<>(); |
| | | for (FinishedOperateLog finishedOperateLog : finishedOperateLogList) { |
| | | String OrderId = finishedOperateLog.getOrderId(); |
| | | String Remarks = finishedOperateLog.getRemarks(); |
| | | |
| | | // 检查是否已经处理过该 OrderId,如果处理过则跳过 |
| | | if (processedProcessIds.contains(OrderId) && processedProcessIds.contains(Remarks)) { |
| | | continue; |
| | | } |
| | | |
| | | Map<String, Object> itemmap = new HashMap<>(); |
| | | itemmap.put("detail", finishedOperateLogMapper.getPrimaryListLimt(finishedOperateLog.getOrderId(),finishedOperateLog.getProcessId(),finishedOperateLog.getRemarks())); |
| | | |
| | |
| | | itemmap.put("detailList", detailList); |
| | | |
| | | list.add(itemmap); |
| | | list.add(itemmap); |
| | | |
| | | processedProcessIds.add(OrderId); |
| | | processedProcessIds.add(Remarks); |
| | | } |
| | | } |
| | | map.put("data", list); |
| | | return map; |
| | | } |
| | | |
| | | |
| | | public String deliveryDetailLogic(List<OrderDetail> list,Object savePoint,String userName) { |
| | | for (OrderDetail orderDetail : list) { |
| | | //获取单号 |
| | | String oddNumber= orderNumberSetting("出库"); |
| | | OrderDetail orderDetailNew= finishedGoodsInventoryMapper.findOrderDetailNumberd(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber()); |
| | | //添加出入库记录 |
| | | finishedOperateLogMapper.insertOutFinishedOperateLog(orderDetail,userName,oddNumber); |
| | | Integer finishedGoodsInventorycount = finishedGoodsInventoryMapper.findOrderNumberdcount(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber()); |
| | | |
| | | |
| | | Integer ordersum = finishedGoodsInventoryMapper.findOrderQuantity(orderDetail.getDeliveryDetail().getOrderId()); |
| | | Integer orderNumberdsum = finishedGoodsInventoryMapper.findOrderNumberdsum(orderDetail.getDeliveryDetail().getOrderId()); |
| | | |
| | | Integer deliverysum = finishedGoodsInventoryMapper.findDeliveryQuantity(orderDetail.getDeliveryDetail().getDeliveryId()); |
| | | Integer deliverydetailsum = finishedGoodsInventoryMapper.findDeliverydetailsum(orderDetail.getDeliveryDetail().getDeliveryId(),0); |
| | | if(deliverydetailsum==null){ |
| | | deliverydetailsum=0; |
| | | } |
| | | |
| | | DeliveryDetail deliveryDetail=finishedGoodsInventoryMapper.findDeliverydetail(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getDeliveryId()); |
| | | /*System.out.println("订单总数:" + ordersum + "订单库存数:" + orderNumberdsum + "准备出库数量" + |
| | | orderDetail.getWarehouseNum()+ "发货数量" + orderDetail.getDeliveryDetail().getQuantity()+ "发货总数" + |
| | | deliverysum+ "已发数量" + deliverydetailsum);*/ |
| | | //判断发货单的库存是否存在 |
| | | if (finishedGoodsInventorycount > 0) { |
| | | //判断发货单是否已出库 |
| | | if(deliveryDetail==null){ |
| | | if(orderDetailNew.getWarehouseNum()>=orderDetail.getDeliveryDetail().getQuantity()){ |
| | | //修改库存表库存数量 |
| | | finishedGoodsInventoryMapper.updateInventoryInventoryOut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getQuantity()); |
| | | //修改发货明细表状态 |
| | | finishedGoodsInventoryMapper.updateDeliveryDetailState(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getDeliveryId(),0); |
| | | //修改发货表状态 |
| | | finishedGoodsInventoryMapper.updateDeliveryDeliveryState(orderDetail.getDeliveryDetail().getDeliveryId(),1); |
| | | //修改订单明细表发货数量 |
| | | finishedGoodsInventoryMapper.updateOutOrderNumberConut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getQuantity()); |
| | | //修改订单表发货状态 |
| | | finishedGoodsInventoryMapper.updateOrderDeliveryState(orderDetail.getDeliveryDetail().getOrderId(),1); |
| | | //判断订单是否全部发货 |
| | | if (Objects.equals(orderNumberdsum, orderDetail.getWarehouseNum())) { |
| | | //if (ordersum == (orderDeliveryQuantitySum + orderDetail.getWarehouseNum())) { |
| | | //修改订单表发货状态 |
| | | finishedGoodsInventoryMapper.updateOrderDeliveryState(orderDetail.getDeliveryDetail().getOrderId(),2); |
| | | } |
| | | if (deliverysum==deliverydetailsum+orderDetail.getDeliveryDetail().getQuantity()) { |
| | | //修改发货表状态 |
| | | finishedGoodsInventoryMapper.updateDeliveryDeliveryState(orderDetail.getDeliveryDetail().getDeliveryId(),2); |
| | | } |
| | | }else{ |
| | | TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); |
| | | return "false3"; |
| | | } |
| | | }else{ |
| | | TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); |
| | | return "false1"; |
| | | } |
| | | |
| | | |
| | | }else{ |
| | | TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); |
| | | return "false2"; |
| | | } |
| | | } |
| | | return "true"; |
| | | } |
| | | |
| | | public String cancelDeliveryDetailLogic(List<FinishedOperateLog> finishedOperateLogslist,Object savePoint,String userName,Log log) { |
| | | for (FinishedOperateLog finishedOperateLog : finishedOperateLogslist) { |
| | | Integer ordersum = finishedGoodsInventoryMapper.findOrderQuantity(finishedOperateLog.getOrderId()); |
| | | Integer ordernumbersum = finishedGoodsInventoryMapper.findOrderNumberdsum(finishedOperateLog.getOrderId()); |
| | | Integer deliverysum = finishedGoodsInventoryMapper.findDeliveryQuantity(finishedOperateLog.getOperationOrderNumber()); |
| | | Integer deliverydetailsum = finishedGoodsInventoryMapper.findDeliverydetailsum(finishedOperateLog.getOperationOrderNumber(),1); |
| | | |
| | | if(Objects.equals(finishedOperateLog.getOperateType(), "入库")){ |
| | | Delivery delivery = finishedGoodsInventoryMapper.findOrderDelivery(finishedOperateLog.getOrderId()); |
| | | if(delivery==null){ |
| | | //修改记录表 |
| | | finishedOperateLogMapper.updateFinishedOperateLogState(finishedOperateLog,"已作废"); |
| | | //修改库存表入库数量 |
| | | finishedGoodsInventoryMapper.updateInventoryOut(finishedOperateLog); |
| | | if(finishedOperateLog.getProcessId()!=null){ |
| | | //修改流程卡表入库数量 |
| | | finishedGoodsInventoryMapper.updateflowcardOut(finishedOperateLog); |
| | | } |
| | | |
| | | //修改订单明细表入库数量 |
| | | finishedGoodsInventoryMapper.updateOutOrderNumberConut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getQuantity()); |
| | | //判断订单是否全部入库 |
| | | if (Objects.equals(ordersum, ordernumbersum)) { |
| | | //修改订单表入库状态 |
| | | finishedGoodsInventoryMapper.updateOrderWarehousingState(finishedOperateLog.getOrderId(),1); |
| | | } |
| | | if (ordernumbersum-finishedOperateLog.getQuantity()==0) { |
| | | //修改订单表入库状态 |
| | | finishedGoodsInventoryMapper.updateOrderWarehousingState(finishedOperateLog.getOrderId(),0); |
| | | } |
| | | log.setFunction("cancelFinishedGoodsInventoryStorage入库"); |
| | | }else{ |
| | | return "false1"; |
| | | } |
| | | |
| | | |
| | | |
| | | }else if(Objects.equals(finishedOperateLog.getOperateType(), "出库")){ |
| | | //修改记录表 |
| | | finishedOperateLogMapper.updateFinishedOperateLogState(finishedOperateLog,"已作废"); |
| | | //修改库存表库存数量 |
| | | finishedGoodsInventoryMapper.updateInventoryInventoryInt(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getQuantity()); |
| | | //修改发货明细表状态 |
| | | finishedGoodsInventoryMapper.updateDeliveryDetailState(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getOperationOrderNumber(),1); |
| | | //修改发货表状态 |
| | | finishedGoodsInventoryMapper.updateDeliveryDeliveryState(finishedOperateLog.getOperationOrderNumber(),1); |
| | | //修改订单明细表库内数量 |
| | | finishedGoodsInventoryMapper.updateIntOrderNumberConut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(), Long.valueOf(finishedOperateLog.getQuantity())); |
| | | //修改订单表发货状态 |
| | | finishedGoodsInventoryMapper.updateOrderDeliveryState(finishedOperateLog.getOrderId(),1); |
| | | //判断订单是否全部发货 |
| | | if (ordersum==finishedOperateLog.getQuantity()+ordernumbersum){ |
| | | //修改订单表发货状态 |
| | | finishedGoodsInventoryMapper.updateOrderDeliveryState(finishedOperateLog.getOrderId(),0); |
| | | |
| | | } |
| | | if (deliverysum==finishedOperateLog.getQuantity()+deliverydetailsum) { |
| | | //修改发货表状态 |
| | | finishedGoodsInventoryMapper.updateDeliveryDeliveryState(finishedOperateLog.getOperationOrderNumber(),0); |
| | | } |
| | | log.setFunction("cancelFinishedGoodsInventoryStorage出库"); |
| | | |
| | | } |
| | | |
| | | } |
| | | return "true"; |
| | | } |
| | | } |