guoyuji
2024-04-22 0df7d2cc1ef75c9aa1b3483dc7067a728af7ceb3
计算金额从后端获取,创建时不改变数值
9个文件已修改
126 ■■■■■ 已修改文件
north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/LoginView.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderOtherMoneyMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/OrderOtherMoneyMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/sd/OrderMapper.xml 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/erp-0.0.1-SNAPSHOT.jar.original 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue
@@ -1,5 +1,5 @@
<script setup>
import {onMounted, reactive, ref, watch} from "vue"
import {computed, onMounted, reactive, ref, watch} from "vue"
import {filterChanged} from "@/hook"
import {useI18n} from "vue-i18n"
import {ElMessage} from "element-plus";
@@ -36,7 +36,7 @@
    // {field: 'buildingNumber',width:120,  title: '楼号',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
    {field: 'alias', title:'其他加工',editRender: { name: 'input'},minWith:'130'},
    {field: 'price',  title:'单价',editRender: { name: 'input'}},
    {field: 'quantity',  title:'数量',editRender: { name: 'input'} },
    {field: 'quantity',  title:'数量' },
    {field: 'money', slots:{default:'default'},  title:'金额'}
  ],
  //表单验证
@@ -149,9 +149,12 @@
  xGrid.value.reloadData(prop.otherMoney)
})
const countAmount = (row)=>{
const countAmount = computed(() => (row) => {
  const price = row.price===null?0:row.price
  const quantity = row.quantity===null?0:row.quantity
  return parseFloat((row.price * row.quantity).toFixed(2))
}
})
const validate = async () => {
  const errMap = await xGrid.value.validate(true)
north-glass-erp/northglass-erp/src/views/LoginView.vue
@@ -110,14 +110,14 @@
        <img id="img-pic" src="@/assets/img.png" alt="">
      </div>
      <div id="div-login">
<!--        <el-select-->
<!--            @change="changeLanguage"-->
<!--            v-model="language"-->
<!--            placeholder=" "-->
<!--            style="float: right;width: 6rem">-->
<!--          <el-option value="zh"  label="中文" />-->
<!--          <el-option value="en"  label="English" />-->
<!--        </el-select>-->
        <el-select
            @change="changeLanguage"
            v-model="language"
            placeholder=" "
            style="float: right;width: 6rem">
          <el-option value="zh"  label="中文" />
          <el-option value="en"  label="English" />
        </el-select>
        <h2>{{$t('login.SysName')}}</h2>
        <el-form
            @submit.native.prevent
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -24,7 +24,9 @@
const route = useRoute()
const xGrid = ref()
let cellArea = ref()
const shapeList = ref(['普形','异形'])
const shapeList = ref([
    {name:'普形',value:1}, {name:'异形',value: 2}
])
// 定义表头上传数据
const titleUploadData = ref({
@@ -445,7 +447,6 @@
  if (typeof str === 'undefined' || str === null || str === '' || str === '\n' || str === '\r'){
    return
  }
  gridOptions.loading=true
  request.post(`/order/getOrderById/${str}`).then((res) => {
    if(res.code==200){
      titleUploadData.value = res.data.order
@@ -503,7 +504,6 @@
      otherMoney.value =res.data.orderOtherMoneyList
          //加载副表数据
      xGrid.value.reloadData(orderDetails)
      gridOptions.loading=false
    }else{
      ElMessage.error(res.msg)
    }
@@ -633,9 +633,9 @@
  list.forEach((item)=>{
    countMoney += parseFloat(item.grossAmount)
  })
  otherMoney.value.forEach(item => {
    countMoney+=item.quantity*item.price
  })
  // otherMoney.value.forEach(item => {
  //   countMoney+=item.quantity*item.price
  // })
  return parseFloat((countMoney).toFixed(2))
}
//导入功能
@@ -699,21 +699,22 @@
   }else if(column.property === 'computeArea'){
     row.computeGrossArea=parseFloat((row.computeArea*row.quantity).toFixed(2))
     row.grossAmount=parseFloat((row.price * row.computeGrossArea).toFixed(2))
   }else if(column.property.indexOf('otherColumns.M')>-1){
     let quantity = 0
     xGrid.value.getTableData().fullData.forEach(item => {
       let orderQuantity = isNaN(item.quantity) ? 0 : item.quantity
       let value = isNaN((getNestedProperty(item,column.property)*1)) ? 0 : (getNestedProperty(item,column.property)*1)
       quantity += orderQuantity*value
     })
     if(!isNaN(quantity)){
       otherMoney.value.forEach(item => {
         if(item.column===column.property.split('.')[1]){
           item.quantity = quantity
         }
       })
     }
   }
   // else if(column.property.indexOf('otherColumns.M')>-1){
   //   let quantity = 0
   //   xGrid.value.getTableData().fullData.forEach(item => {
   //     let orderQuantity = isNaN(item.quantity) ? 0 : item.quantity
   //     let value = isNaN((getNestedProperty(item,column.property)*1)) ? 0 : (getNestedProperty(item,column.property)*1)
   //     quantity += orderQuantity*value
   //   })
   //   if(!isNaN(quantity)){
   //     otherMoney.value.forEach(item => {
   //       if(item.column===column.property.split('.')[1]){
   //         item.quantity = quantity
   //       }
   //     })
   //   }
   // }
  titleUploadData.value.money=countMoney(xGrid.value.getTableData().fullData).toString()
@@ -907,7 +908,7 @@
        </template>
        <template #shape_edit="{ row }">
          <vxe-select v-model="row.shape" transfer>
            <vxe-option v-for="item in shapeList" :key="item" :value="item" :label="item" />
            <vxe-option v-for="item in shapeList" :key="item" :value="item.value" :label="item.name" />
          </vxe-select>
        </template>
north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderOtherMoneyMapper.java
@@ -9,5 +9,5 @@
@Mapper
public interface OrderOtherMoneyMapper extends BaseMapper<OrderOtherMoney> {
    List<OrderOtherMoney> findById(String id);
    List<OrderOtherMoney> findById(String orderId);
}
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -1,7 +1,9 @@
package com.example.erp.service.sd;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -112,14 +114,23 @@
            OrderDetails.get(i).setOrderId(orderId);
            OrderDetails.get(i).setPerimeter(OrderDetails.get(i).getWidth()*OrderDetails.get(i).getHeight()*2/1000);
            OrderDetails.get(i).setWeight(1.0);
            Map<String,Double> otherColumns = JSON.parseObject(OrderDetails.get(i).getOtherColumns(), new TypeReference<Map<String, Double>>(){});
            int finalI = i;
            otherColumns.forEach((key, value) ->{
                orderOtherMoneyList.forEach(orderOtherMoney ->{
                    if(orderOtherMoney.getColumn().equals(key)){
                        orderOtherMoney.setQuantity (orderOtherMoney.getQuantity()==null?0:orderOtherMoney.getQuantity());
                        orderOtherMoney.setQuantity(((value==null?0:value)*OrderDetails.get(finalI).getQuantity()));
                    }
                });
            });
        }
        //往明细表插数据
        orderDetailMapper.insertBatch(OrderDetails);
        //修改订单主表面积与周长以及重量
        orderMapper.updateOrderParameter(orderId);
        //往小片表传入产品数据
        orderGlassDetailMapper.insertOrderGlassDetail(orderId);
        //往订单其他金额副表传入数据
@@ -131,6 +142,8 @@
            }
            orderOtherMoneyMapper.insert(orderOtherMoney);
        });
        //修改订单主表面积与周长以及重量
        orderMapper.updateOrderParameter(orderId);
        //查询订单小片表获取工艺传入小片工艺表
        //List<OrderGlassDetail> orderGlassDetails = orderGlassDetailMapper.selectOrderGlassDetail(orderId);
north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
@@ -17,10 +17,24 @@
    <update id="updateOrderParameter">
        update `order` o
        left join
            (select a.order_id,round(sum(a.perimeter),2) as aa,sum(a.quantity) as b,sum(a.compute_gross_area)  as c
             from sd.order_detail as a group by a.order_id)  od
            (select a.order_id,
                    round(sum(a.perimeter),2) as aa,
                    sum(a.quantity) as b,
                    sum(a.compute_gross_area)  as c,
                   sum(a.gross_amount) as 'detailAmount'
             from sd.order_detail as a group by a.order_id
            ) as od
            on o.order_id = od.order_id
        left join (select oom.order_id,
                          sum(oom.money) as 'money'
                   from order_other_money as oom
                   where
                       oom.order_id = #{orderId}
                   group by oom.order_id
                   ) as c
        on c.order_id = o.order_id
        set
            o.money = ifnull(od.detailAmount,0)+ifnull(c.money,0),
            o.quantity = od.b,
            o.area = od.c,
            o.perimeter= od.aa
north-glass-erp/src/main/resources/mapper/sd/OrderOtherMoneyMapper.xml
@@ -10,6 +10,7 @@
        from order_other_money as a
        left join  basic_other_money as b
        on a.`column` = b.`column`
        where a.order_id = #{orderId}
    </select>
north-glass-erp/target/classes/mapper/sd/OrderMapper.xml
@@ -17,10 +17,24 @@
    <update id="updateOrderParameter">
        update `order` o
        left join
            (select a.order_id,round(sum(a.perimeter),2) as aa,sum(a.quantity) as b,sum(a.compute_gross_area)  as c
             from sd.order_detail as a group by a.order_id)  od
            (select a.order_id,
                    round(sum(a.perimeter),2) as aa,
                    sum(a.quantity) as b,
                    sum(a.compute_gross_area)  as c,
                   sum(a.gross_amount) as 'detailAmount'
             from sd.order_detail as a group by a.order_id
            ) as od
            on o.order_id = od.order_id
        left join (select oom.order_id,
                          sum(oom.money) as 'money'
                   from order_other_money as oom
                   where
                       oom.order_id = #{orderId}
                   group by oom.order_id
                   ) as c
        on c.order_id = o.order_id
        set
            o.money = ifnull(od.detailAmount,0)+ifnull(c.money,0),
            o.quantity = od.b,
            o.area = od.c,
            o.perimeter= od.aa
north-glass-erp/target/erp-0.0.1-SNAPSHOT.jar.original
Binary files differ