廖井涛
2 天以前 4521e55b7ce2840dcb91340c17f3159892bcc14d
修改订单金额时,根据情况是否调用发货单修改金额
8个文件已修改
153 ■■■■■ 已修改文件
north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
@@ -224,7 +224,7 @@
        //禁用按钮
        gridOptions.toolbarConfig.buttons[2].disabled  = true
        gridOptions.toolbarConfig.buttons[3].disabled = true
        //gridOptions.toolbarConfig.buttons[4].disabled = false
        //gridOptions.toolbarConfig.buttons[4].disabled = true
        //显示复选框
        xGrid.value.showColumn("select")
        gridOptions.loading=false
@@ -390,7 +390,7 @@
      {'code': 'addToExamine', 'name': t('reportingWorks.saveAndReview'),status: 'primary',icon: 'vxe-icon-save'},
      {'code': 'toExamine', 'name': t('basicData.review'),status: 'primary'},
      {'code': 'CounterExamination', 'name': t('basicData.cancelReview'),status: 'primary'},
      //{'code': 'addOtherOrders','name': t('delivery.orderAdd'),'status': 'primary'}
      //{'code': 'addOtherOrders','name': t('delivery.orderAdd'),status: 'primary'}
      //{'code': 'glassShelf', 'name': t('finishedGlassShelf.finishedGlassShelfEmit'),status: 'primary'}
    ],
    /*import: false,
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -57,6 +57,8 @@
const orderTypeState = ref(0)
let deliveryCount = ref(0)
// 定义表头上传数据
const titleUploadData = ref({
  project:'',
@@ -330,7 +332,29 @@
        }
        case 'updateMoney': {
          $grid.clearEdit()
          updateMoney()
          deliveryCount.value=0
          if(deliveryCount.value>0){
            ElMessageBox.confirm("订单已存在未审核的发货单,是否修改未审核发货单的单价并重新计算金额",
                t('order.msg.warning'),
                {
                  confirmButtonText: t('basicData.confirmButtonText'),
                  cancelButtonText: t('basicData.cancelButtonText'),
                  distinguishCancelAndClose: true,
                  type: 'warning',
                }
            ).then(()=>{
              updateMoney(1)
            }).catch((action)=>{
              if (action === 'cancel') {
                updateMoney(2)
              } else if (action === 'close') {
              }
            })
          }else{
            updateMoney(2)
          }
          break
        }
        case 'Craft': {
@@ -965,6 +989,7 @@
  request.post(`/order/getOrderById/${str}`).then((res) => {
    if(res.code==200){
      titleUploadData.value = res.data.order
      deliveryCount.value = res.data.deliveryCount
      const customer = titleSelectJson.value.customer.filter(item => item.id === titleUploadData.value.customerId)
      projects.value = customer[0].projectList
      newOrderId.value=titleUploadData.value.orderId
@@ -1285,13 +1310,14 @@
}
//更新金额重置
const updateMoney = () => {
const updateMoney = (type) => {
  titleUploadData.value.creatorId=userStore.user.userId
  titleUploadData.value.creator=userStore.user.userName
  const updateData = {
    order: titleUploadData.value,
    detail: xGrid.value.getTableData().fullData,
    otherMoney:otherMoney.value
    otherMoney:otherMoney.value,
    type:type
  }
  request.post(`/order/updateOrderMoney`,updateData).then(res => {
    if (res.code == 200){
north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java
@@ -100,4 +100,13 @@
    OrderDetail selectOrderDetailDeliveryCount(@Param("orderDetail") OrderDetail orderDetail);
    List<DeliveryDetail> getDeliverDetailOrderNumber(@Param("orderId") String orderId,
                                         @Param("orderNumber") Integer orderNumber,@Param("deliveryId") String deliveryId);
    List<Delivery> getDeliverOrderNumber(@Param("orderId") String orderId,
                                                     @Param("orderNumber") Integer orderNumber);
    Boolean updateDeliveryDetailmonye(@Param("price") Double price,@Param("deliveryDetail") DeliveryDetail deliveryDetail);
    Boolean updateDeliverymonye(@Param("deliveryId") String deliveryId,@Param("money") Double money);
}
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java
@@ -71,4 +71,6 @@
    List<Map<String,Object>> selectProcessAttributeConfigOne();
    List<Map<String,Object>> selectProcessAttributeConfigTow(String belong);
    Integer selectDeliveryStateConut(String orderId);
}
north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
@@ -1015,4 +1015,51 @@
        map.put("totalSum",totalSum);
        return map;
    }
    public boolean updateDeliveryMoney(OrderDetail orderDetail,Order order) {
        List<Delivery> deliveryList=deliveryDetailMapper.getDeliverOrderNumber(orderDetail.getOrderId(),orderDetail.getOrderNumber());
        for (Delivery delivery : deliveryList) {
            if(delivery.getDeliveryState()==0){
                List<DeliveryDetail> deliveryDetailList=deliveryDetailMapper.getDeliverDetailOrderNumber(orderDetail.getOrderId(),orderDetail.getOrderNumber(),delivery.getDeliveryId());
                for (DeliveryDetail deliveryDetail : deliveryDetailList) {
                    deliveryDetail = updateOrderMoneyComputeds(deliveryDetail,orderDetail,order.getCalculateType());
                    deliveryDetailMapper.updateDeliveryDetailmonye(orderDetail.getPrice(),deliveryDetail);
                }
                BigDecimal money = new BigDecimal("0");
                List<DeliveryDetail> deliveryDetailListNew=deliveryDetailMapper.getIsNotDeliveryDetail(delivery.getDeliveryId());
                for (DeliveryDetail deliveryDetail : deliveryDetailListNew) {
                    BigDecimal getMoney= BigDecimal.valueOf(deliveryDetail.getMoney());
                    money=money.add(getMoney);
                }
                deliveryDetailMapper.updateDeliverymonye(delivery.getDeliveryId(), (double) Math.round(money.doubleValue()));
            }
        }
        return true;
    }
    private DeliveryDetail updateOrderMoneyComputeds(DeliveryDetail deliveryDetail,OrderDetail orderDetail, Integer calculateType) {
        BigDecimal getPrice= BigDecimal.valueOf(orderDetail.getPrice());
        BigDecimal getQuantity= BigDecimal.valueOf(deliveryDetail.getQuantity());
        BigDecimal getComputeGrossArea= BigDecimal.valueOf(deliveryDetail.getArea());
        BigDecimal getComputeArea= BigDecimal.valueOf(orderDetail.getComputeArea());
        BigDecimal getWidth= BigDecimal.valueOf(orderDetail.getWidth());
        BigDecimal getHeight= BigDecimal.valueOf(orderDetail.getHeight());
        if (calculateType == 3) {
            deliveryDetail.setMoney(getPrice.multiply(getQuantity).setScale(2, RoundingMode.HALF_UP).doubleValue());
        }else if (calculateType == 4) {
            if(Objects.equals(orderDetail.getArea(), orderDetail.getComputeArea())&&Objects.equals(orderDetail.getGrossArea(), orderDetail.getComputeGrossArea())){
                deliveryDetail.setMoney(getWidth.multiply(getHeight).multiply(getQuantity).multiply(getPrice).
                        divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP).doubleValue());
            }else{
                deliveryDetail.setMoney(getPrice.multiply(getComputeGrossArea).setScale(2, RoundingMode.HALF_UP).doubleValue());
            }
        }else if (calculateType == 1){
            deliveryDetail.setMoney(getPrice.multiply(getComputeArea).multiply(getQuantity).setScale(2, RoundingMode.HALF_UP).doubleValue());
        }else{
            deliveryDetail.setMoney(getPrice.multiply(getComputeGrossArea).setScale(2, RoundingMode.HALF_UP).doubleValue());
        }
        return deliveryDetail;
    }
}
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -52,7 +52,9 @@
    private final BasicOtherMoneyMapper basicOtherMoneyMapper;
    private final OrderProcessDetailMapper orderProcessDetailMapper;
    public OrderService(OrderMapper orderMapper, OrderDetailMapper orderDetailMapper, OrderGlassDetailMapper orderGlassDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, SysErrorService sysErrorService, OrderOtherMoneyMapper orderOtherMoneyMapper, ProductMapper productMapper, LogService logService, WorkOrderMapper workOrderMapper, FlowCardMapper flowCardMapper, BasicOtherMoneyMapper basicOtherMoneyMapper) {
    private final DeliveryService deliveryService;
    public OrderService(OrderMapper orderMapper, OrderDetailMapper orderDetailMapper, OrderGlassDetailMapper orderGlassDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, SysErrorService sysErrorService, OrderOtherMoneyMapper orderOtherMoneyMapper, ProductMapper productMapper, LogService logService, WorkOrderMapper workOrderMapper, FlowCardMapper flowCardMapper, BasicOtherMoneyMapper basicOtherMoneyMapper,DeliveryService deliveryService) {
        this.orderMapper = orderMapper;
        this.orderDetailMapper = orderDetailMapper;
        this.orderGlassDetailMapper = orderGlassDetailMapper;
@@ -64,6 +66,7 @@
        this.workOrderMapper = workOrderMapper;
        this.flowCardMapper = flowCardMapper;
        this.basicOtherMoneyMapper = basicOtherMoneyMapper;
        this.deliveryService = deliveryService;
    }
    public boolean saveOrder(Map<String,Object> orderMap) throws Exception {
@@ -432,11 +435,13 @@
        List<OrderDetail> orderDetails = orderDetailMapper.selectList(new QueryWrapper<OrderDetail>().eq("order_id",id));
        List<OrderOtherMoney> orderOtherMoneyList = orderOtherMoneyMapper.findById(id);
        List<Map<String,String>> orderFileList = orderMapper.selectOrderFileList(id);
        Integer deliveryCount = orderMapper.selectDeliveryStateConut(id);
        Map<String,Object> map = new HashMap<>();
        map.put("order",order);
        map.put("orderDetails",orderDetails);
        map.put("orderOtherMoneyList",orderOtherMoneyList);
        map.put("orderFile",orderFileList);
        map.put("deliveryCount",deliveryCount);
        return map;
    }
    //订单审核
@@ -491,6 +496,7 @@
    public boolean updateOrderMoney(Map<String, Object> map) {
        JSONObject jsonObject = new JSONObject(map);
        int type = Integer.parseInt(jsonObject.get("type").toString());
        Order order = JSONObject.parseObject(JSONObject.toJSONString(jsonObject.get("order")), Order.class);
        List<OrderDetail> OrderDetails = JSONArray.parseArray(JSONObject.toJSONString(jsonObject.get("detail")), OrderDetail.class);
        List<OrderOtherMoney> orderOtherMoneyList = JSONArray.parseArray(JSONObject.toJSONString(jsonObject.get("otherMoney")), OrderOtherMoney.class);
@@ -510,12 +516,16 @@
        log.setContent(jsonObject.toString());
        log.setFunction("updateOrderMoney金额重置:"+order.getOrderId());
        //删除其他金额明细表
        orderOtherMoneyMapper.delete(new LambdaQueryWrapper<OrderOtherMoney>().eq(OrderOtherMoney::getOrderId, order.getOrderId()));
        List<OrderOtherMoney> orderOtherMoneyLists=orderOtherMoneyList;
        double money = 0;
        for (OrderDetail orderDetail : OrderDetails) {
            if(type==1){
                deliveryService.updateDeliveryMoney(orderDetail,order);
            }
            orderDetail =  updateOrderMoneyComputed(orderDetail,order.getCalculateType());
            BigDecimal getGrossAmount= BigDecimal.valueOf(orderDetail.getGrossAmount());
            money+=getGrossAmount.doubleValue();
north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
@@ -90,6 +90,9 @@
        <result column="freight" property="delivery.freight"/>
        <result column="freight_price" property="delivery.freightPrice"/>
        <result column="freight_quantity" property="delivery.freightQuantity"/>
        <result column="delivery_state" property="delivery.deliveryState"/>
        <result column="money" property="delivery.money"/>
        <result column="other_money" property="delivery.otherMoney"/>
        <result column="product_id" property="orderDetail.productId"/>
        <result column="product_name" property="orderDetail.productName"/>
@@ -1400,4 +1403,44 @@
        group by dd.delivery_id,dd.order_id,od.product_id
        order by dd.delivery_id,dd.delivery_number
    </select>
    <select id="getDeliverDetailOrderNumber" resultMap="selectDeliveryDetail">
        select dd.order_id,
        dd.order_Number,
        dd.delivery_number,
        dd.delivery_id,
        dd.quantity,
        dd.price,
        dd.area,
        dd.money,
        dd.other_columns,
        d.delivery_state,
        d.money
        from sd.delivery_detail dd
        left join sd.delivery d on dd.delivery_id=d.delivery_id
        where dd.order_id=#{orderId} and dd.order_number=#{orderNumber} and dd.delivery_id=#{deliveryId}
    </select>
    <select id="getDeliverOrderNumber">
        select
               d.delivery_id,
               d.delivery_state,
               d.money
        from sd.delivery_detail dd
                 left join sd.delivery d on dd.delivery_id=d.delivery_id
        where dd.order_id=#{orderId} and dd.order_number=#{orderNumber}
        group by d.delivery_id
    </select>
    <update id="updateDeliveryDetailmonye">
        update sd.delivery_detail set price=#{price},money=#{deliveryDetail.money}
            where delivery_id=#{deliveryDetail.deliveryId} and delivery_number=#{deliveryDetail.deliveryNumber}
    </update>
    <update id="updateDeliverymonye">
        update sd.delivery set money=#{money}
        where delivery_id=#{deliveryId}
    </update>
</mapper>
north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
@@ -449,4 +449,8 @@
        where level=2 and belong=#{belong}
    </select>
    <select id="selectDeliveryStateConut">
        select count(*) from sd.delivery_detail dd left join sd.delivery d on dd.delivery_id=d.delivery_id where dd.order_id= #{orderId} and d.delivery_state=0
    </select>
</mapper>