Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override
| | |
| | | pageTotal : 0,//总页数 |
| | | dataTotal : 0,//数据总条数 |
| | | }) |
| | | |
| | | const isFirstLoad = ref(true); |
| | | const sumNum = (list, field) => { |
| | | let count = 0 |
| | | list.forEach(item => { |
| | |
| | | } |
| | | |
| | | //合并显示其他列 |
| | | const handleDynamicColumns = (data,title) => { |
| | | const handleDynamicColumns = (data,title,orderOtherMoney) => { |
| | | // 1. 收集所有行的otherColumns字段(去重) |
| | | const allOtherFields = new Set(); |
| | | /*const allOtherFields = new Set(); |
| | | data.forEach(row => { |
| | | if (!row || !row.otherColumns) return; |
| | | |
| | |
| | | allOtherFields.add(key); |
| | | }); |
| | | } |
| | | }); |
| | | });*/ |
| | | |
| | | // 2. 生成动态子列(作为processList的children) |
| | | const otherColumns = Array.from(allOtherFields).map(field => { |
| | | /*const otherColumns = Array.from(allOtherFields).map(field => { |
| | | // 尝试获取字段对应的label(优先取第一个出现的label) |
| | | let label=field; |
| | | title.forEach(item=>{ |
| | |
| | | |
| | | } |
| | | }; |
| | | }); |
| | | });*/ |
| | | |
| | | const otherColumns = []; |
| | | // 容错:确保orderOtherMoney是有效数组 |
| | | if (Array.isArray(orderOtherMoney) && orderOtherMoney.length > 0) { |
| | | orderOtherMoney.forEach(item => { |
| | | // 跳过空数据,避免无效列 |
| | | if (!item || !item.column) return; |
| | | otherColumns.push({ |
| | | title: item.alias || item.column, // 优先用别名,无则用字段名 |
| | | field: `otherColumnsJson.${item.column}`, |
| | | width: 120, |
| | | align: 'center', |
| | | // 格式化取值:兼容解析后的JSON结构 |
| | | formatter: ({ row }) => { |
| | | return row.otherColumnsJson?.[item.column] || ''; |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | |
| | | // 3. 定义父级列processList,包含动态子列 |
| | | const processList = { |
| | |
| | | orderInfo.reportFormDate = res.data.selectDate |
| | | |
| | | //订单明细报表 |
| | | if (props.childrenData.url === '/order/getOrderReport') { |
| | | if (isFirstLoad.value && props.childrenData.url === '/order/getOrderReport') { |
| | | const dataList = res.data.data || []; |
| | | handleDynamicColumns(dataList,res.data.title) |
| | | const orderOtherMoney = res.data.orderOtherMoney[0] || []; |
| | | handleDynamicColumns(dataList,res.data.title,orderOtherMoney) |
| | | isFirstLoad.value = false; // 首次加载后置为false |
| | | } |
| | | } |
| | | }) |
| | |
| | | const columns = [ |
| | | {field: 'order_number',fixed:"left", width: 90,title: t('order.OrderNum'),showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | // {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {field: 'building_number', width: 150, title: t('order.buildingNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'product_name', width: 150, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'glass_child',width: 130, title: t('reportingWorks.glassChild') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'order_type', width: 120,title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | |
| | | {field: 'StorageArea',slots: { default: 'show'},width: 120, title: t('report.StorageArea')}, |
| | | {field: 'broken_num',width: 90, title: t('reportingWorks.quantityBroken')}, |
| | | ] |
| | | let column = ['order_number','product_name','order_type','quantity','grossArea','Storage','StorageArea'] |
| | | let column = ['order_number','building_number','product_name','order_type','quantity','grossArea','Storage','StorageArea'] |
| | | let orderType = ref(1) |
| | | |
| | | onMounted(()=>{ |
| | |
| | | //禁用按钮 |
| | | 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 |
| | |
| | | {'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, |
| | |
| | | |
| | | const orderTypeState = ref(0) |
| | | |
| | | let deliveryCount = ref(0) |
| | | |
| | | // 定义表头上传数据 |
| | | const titleUploadData = ref({ |
| | | project:'', |
| | |
| | | } |
| | | 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': { |
| | |
| | | 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 |
| | |
| | | } |
| | | |
| | | //更新金额重置 |
| | | 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){ |
| | |
| | | |
| | | 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); |
| | | |
| | | } |
| | |
| | | |
| | | List<Map<String,Object>> selectProcessAttributeConfigOne(); |
| | | List<Map<String,Object>> selectProcessAttributeConfigTow(String belong); |
| | | |
| | | Integer selectDeliveryStateConut(String orderId); |
| | | } |
| | |
| | | //判断夹胶和夹胶后工序 |
| | | //Objects.equals(basicData.getNickname(), "stepA") || Objects.equals(basicData.getNickname(), "stepC") |
| | | if(Objects.equals(basicData.getNickname(), "stepA") || Objects.equals(basicData.getNickname(), "stepC")){ |
| | | clos.put(uniqueList.get(i).get("process"), 14+i); |
| | | clos.put(uniqueList.get(i).get("process"), 15+i); |
| | | } |
| | | //判断中空和中空后工序 |
| | | //Objects.equals(basicData.getNickname(), "stepB") || Objects.equals(basicData.getNickname(), "stepD") |
| | |
| | | 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; |
| | | } |
| | | } |
| | |
| | | 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; |
| | |
| | | this.workOrderMapper = workOrderMapper; |
| | | this.flowCardMapper = flowCardMapper; |
| | | this.basicOtherMoneyMapper = basicOtherMoneyMapper; |
| | | this.deliveryService = deliveryService; |
| | | } |
| | | |
| | | public boolean saveOrder(Map<String,Object> orderMap) throws Exception { |
| | |
| | | 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; |
| | | } |
| | | //订单审核 |
| | |
| | | |
| | | 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); |
| | |
| | | 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(); |
| | |
| | | } |
| | | List<OrderDetail> orderDetailList = orderDetailMapper.getOrderReport(offset, pageSize, startDate, endDate, orderDetail,model,scope); |
| | | List<BasicOtherMoney> basicOtherMoneyList=basicOtherMoneyMapper.selectList(new QueryWrapper<BasicOtherMoney>()); |
| | | |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | |
| | | for (OrderDetail detail : orderDetailList) { |
| | |
| | | map.put("data",orderDetailList); |
| | | map.put("title",basicOtherMoneyList); |
| | | map.put("total",orderDetailMapper.getOrderReportTotal(offset, pageSize, startDate, endDate, orderDetail,"order")); |
| | | map.put("orderOtherMoney", |
| | | Collections.singletonList( |
| | | basicOtherMoneyMapper.selectList(new QueryWrapper<BasicOtherMoney>().eq("state",1)) |
| | | )); |
| | | List<String> list = new ArrayList<>(); |
| | | list.add(startDate); |
| | | list.add(endDate); |
| | |
| | | <!-- 流程卡进度--> |
| | | <select id="processCardProgressMp"> |
| | | select a.product_name, |
| | | a.building_number, |
| | | b.glass_child, |
| | | d.order_type, |
| | | concat(c.process_id, '/', c.technology_number) as process_id, |
| | |
| | | <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"/> |
| | |
| | | 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> |
| | |
| | | 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> |