| | |
| | | import com.example.erp.dto.mm.FinishedOperateLogDTO; |
| | | import com.example.erp.entity.mm.FinishedGoodsInventory; |
| | | import com.example.erp.entity.mm.FinishedOperateLog; |
| | | import com.example.erp.entity.mm.MaterialInventory; |
| | | import com.example.erp.entity.pp.FlowCard; |
| | | import com.example.erp.entity.sd.Delivery; |
| | | import com.example.erp.entity.sd.DeliveryDetail; |
| | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.sql.SQLOutput; |
| | | import java.text.DecimalFormat; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | |
| | | .eq(FinishedGoodsInventory::getOrderNumber, finishedOperateLog.getOperationNumber()) |
| | | .eq(FinishedGoodsInventory::getBoxNo, finishedOperateLog.getRemarks()) |
| | | ); |
| | | if(delivery!=null){ |
| | | /*if(delivery!=null){ |
| | | return "false1"; |
| | | } |
| | | if(existFinishedGoodsInventory.getQuantityAvailable()<finishedOperateLog.getQuantity()){ |
| | | }*/ |
| | | if(existFinishedGoodsInventory.getQuantityAvailable()<finishedOperateLog.getCancelAvailable()){ |
| | | return "false2"; |
| | | } |
| | | |
| | | //修改记录表 |
| | | finishedOperateLogMapper.updateFinishedOperateLogState(finishedOperateLog,"已作废"); |
| | | if(existFinishedGoodsInventory.getQuantityAvailable()>finishedOperateLog.getCancelAvailable() |
| | | && finishedOperateLog.getQuantity()>finishedOperateLog.getCancelAvailable()){ |
| | | |
| | | Order order=orderMapper.selectOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderId,finishedOperateLog.getOrderId())); |
| | | OrderDetail orderDetail=orderDetailMapper.selectOne(new LambdaQueryWrapper<OrderDetail>() |
| | | .eq(OrderDetail::getOrderId,finishedOperateLog.getOrderId()) |
| | | .eq(OrderDetail::getOrderNumber,finishedOperateLog.getOperationNumber()) |
| | | ); |
| | | if(order != null && orderDetail != null){ |
| | | Integer calculateType=order.getCalculateType(); |
| | | double deliveryDetailMoney = 0.0; |
| | | double deliveryDetailArea = 0.0; |
| | | |
| | | BigDecimal getComputeArea= BigDecimal.valueOf(orderDetail.getComputeArea()); |
| | | BigDecimal getQuantity= BigDecimal.valueOf(finishedOperateLog.getCancelAvailable()); |
| | | BigDecimal getPrice= BigDecimal.valueOf(orderDetail.getPrice()); |
| | | BigDecimal getWidth= BigDecimal.valueOf(orderDetail.getWidth()); |
| | | BigDecimal getHeight= BigDecimal.valueOf(orderDetail.getHeight()); |
| | | BigDecimal singlePieceArea =getComputeArea.multiply(getQuantity).setScale(2, RoundingMode.HALF_UP) |
| | | .multiply(getPrice).setScale(2, RoundingMode.HALF_UP); |
| | | //根据订单计算方式进行金额计算 |
| | | if (calculateType==1){ |
| | | deliveryDetailMoney=singlePieceArea.doubleValue(); |
| | | deliveryDetailArea=getComputeArea.multiply(getQuantity).doubleValue(); |
| | | |
| | | }else if (calculateType==2){ |
| | | //判断实际单片面积跟结算单片面积是否相等 结算总面积跟实际总面积是否相等 |
| | | if(Objects.equals(orderDetail.getArea(), orderDetail.getComputeArea())&&Objects.equals(orderDetail.getGrossArea(), orderDetail.getComputeGrossArea())){ |
| | | deliveryDetailMoney=getWidth.multiply(getHeight).multiply(getQuantity).divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP) |
| | | .multiply(getPrice).setScale(2, RoundingMode.HALF_UP).doubleValue(); |
| | | deliveryDetailArea=getWidth.multiply(getHeight).multiply(getQuantity).divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP).doubleValue(); |
| | | }else{ |
| | | deliveryDetailMoney=singlePieceArea.doubleValue(); |
| | | deliveryDetailArea=getComputeArea.multiply(getQuantity).doubleValue(); |
| | | } |
| | | }else if (calculateType==3){ |
| | | deliveryDetailMoney=getQuantity.multiply(getPrice).setScale(2, RoundingMode.HALF_UP).doubleValue(); |
| | | deliveryDetailArea=getComputeArea.multiply(getQuantity).doubleValue(); |
| | | |
| | | }else if (calculateType==4){ |
| | | //判断实际单片面积跟结算单片面积是否相等 结算总面积跟实际总面积是否相等 |
| | | if(Objects.equals(orderDetail.getArea(), orderDetail.getComputeArea())&&Objects.equals(orderDetail.getGrossArea(), orderDetail.getComputeGrossArea())){ |
| | | deliveryDetailMoney=getWidth.multiply(getHeight).multiply(getQuantity).multiply(getPrice). |
| | | divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP).doubleValue(); |
| | | deliveryDetailArea=getWidth.multiply(getHeight).multiply(getQuantity).divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP).doubleValue(); |
| | | }else{ |
| | | deliveryDetailMoney=getComputeArea.multiply(getQuantity).multiply(getPrice).setScale(2, RoundingMode.HALF_UP).doubleValue(); |
| | | deliveryDetailArea=getComputeArea.multiply(getQuantity).doubleValue(); |
| | | } |
| | | } |
| | | |
| | | finishedOperateLogMapper.updateFinishedOperateLogQuantity(finishedOperateLog,deliveryDetailMoney,deliveryDetailArea); |
| | | }else{ |
| | | return "false3"; |
| | | } |
| | | |
| | | |
| | | |
| | | }else{ |
| | | finishedOperateLogMapper.updateFinishedOperateLogState(finishedOperateLog,"已作废"); |
| | | } |
| | | //修改库存表入库数量 |
| | | finishedGoodsInventoryMapper.updateInventoryOut(finishedOperateLog); |
| | | if(finishedOperateLog.getProcessId()!=null){ |
| | |
| | | } |
| | | |
| | | //修改订单明细表入库数量 |
| | | finishedGoodsInventoryMapper.updateOutOrderNumberConut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getQuantity()); |
| | | finishedGoodsInventoryMapper.updateOutOrderNumberConut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getCancelAvailable()); |
| | | //判断订单是否全部入库 |
| | | if (Objects.equals(ordersum, ordernumbersum)) { |
| | | //修改订单表入库状态 |
| | |
| | | map.put("data", list); |
| | | return map; |
| | | } |
| | | |
| | | |
| | | public Map<String, Object> appFinishedGoodsInventoryList() { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | Map<String, Object> totalSum = new HashMap<>(); |
| | | Integer inventory = 0; |
| | | Integer quantityAvailable = 0; |
| | | Double area = 0.00; |
| | | Double computeGrossArea = 0.00; |
| | | |
| | | List<FinishedGoodsInventory> finishedGoodsInventoryList=finishedGoodsInventoryMapper.getFinishedGoodsInventoryList(); |
| | | if(!finishedGoodsInventoryList.isEmpty()){ |
| | | for(FinishedGoodsInventory finishedGoodsInventory:finishedGoodsInventoryList){ |
| | | inventory += finishedGoodsInventory.getInventory(); |
| | | quantityAvailable += finishedGoodsInventory.getQuantityAvailable(); |
| | | area += finishedGoodsInventory.getArea(); |
| | | computeGrossArea+=finishedGoodsInventory.getComputeGrossArea(); |
| | | } |
| | | DecimalFormat df = new DecimalFormat("#.00"); |
| | | totalSum.put("inventory",inventory); |
| | | totalSum.put("quantityAvailable",quantityAvailable); |
| | | totalSum.put("area", df.format(area)); |
| | | totalSum.put("computeGrossArea", df.format(computeGrossArea)); |
| | | |
| | | map.put("data", finishedGoodsInventoryList); |
| | | map.put("total", totalSum); |
| | | } |
| | | |
| | | return map; |
| | | } |
| | | } |