From 4521e55b7ce2840dcb91340c17f3159892bcc14d Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期三, 24 十二月 2025 13:32:29 +0800
Subject: [PATCH] 修改订单金额时,根据情况是否调用发货单修改金额
---
north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml | 43 ++++++++++++++
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue | 32 +++++++++-
north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue | 4
north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java | 9 +++
north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml | 4 +
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java | 2
north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java | 47 +++++++++++++++
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java | 12 +++
8 files changed, 147 insertions(+), 6 deletions(-)
diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
index 4f080d7..cb4bf47 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
+++ b/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,
diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue b/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
index 64c5d54..092233c 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
+++ b/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){
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java
index 4c6de76..8ae4813 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryDetailMapper.java
+++ b/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);
+
}
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java
index 4e19bf2..fa8b8cd 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java
+++ b/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);
}
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
index 8eb787d..3e6dd5a 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
+++ b/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;
+ }
}
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
index 7075172..d52563d 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
+++ b/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();
diff --git a/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml b/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
index e921024..2cf1f94 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
+++ b/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>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml b/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
index a7b5afd..029c7ca 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
+++ b/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>
\ No newline at end of file
--
Gitblit v1.8.0