diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderSaveReqVO.java index c2ede3ce..e2173ee1 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderSaveReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/projectorder/vo/ProjectOrderSaveReqVO.java @@ -1,6 +1,5 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo; -import com.alibaba.excel.annotation.ExcelProperty; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PartPurchaseOrderPageReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PartPurchaseOrderPageReqVO.java index 99c5e683..82f1f5c8 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PartPurchaseOrderPageReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PartPurchaseOrderPageReqVO.java @@ -77,4 +77,6 @@ public class PartPurchaseOrderPageReqVO extends PageParam { private Integer goodsType; @Schema(description = "单据状态,0 待送审,1已送审,2已审核,3已打回 ,默认是1") private Integer documentStatus; + @Schema(description = "图号") + private String blueprintNo; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/PurchaseOrderNoDetailController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/PurchaseOrderNoDetailController.java index c3a5cd85..63d1229a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/PurchaseOrderNoDetailController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordernodetail/PurchaseOrderNoDetailController.java @@ -178,4 +178,10 @@ public class PurchaseOrderNoDetailController { public CommonResult getReceivingGoodsMessage() { return success( purchaseOrderNoDetailService.getReceivingGoodsMessage()); } + @PostMapping("/updateFrom") + @Operation(summary = "收货") + @PreAuthorize("@ss.hasPermission('heli:process-bom:create')") + public CommonResult updateFrom(@Valid @RequestBody PurchaseOrderNoDetailDO detailDO) { + return purchaseOrderNoDetailService.updateFrom(detailDO); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermakedetail/PurchaseOrderMakeDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermakedetail/PurchaseOrderMakeDetailMapper.java index 1ba3593c..b84a67f1 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermakedetail/PurchaseOrderMakeDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermakedetail/PurchaseOrderMakeDetailMapper.java @@ -95,6 +95,7 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(PlanSubDetailDO::getProjectId, processDesignDO.getProjectId()); + wrapper.eq(PlanSubDetailDO::getProjectSubId, processDesignDO.getProjectSubId()); + wrapper.eq(PlanSubDetailDO::getSubType, processDesignDO.getProcessDesignType()); + wrapper.set(PlanSubDetailDO::getIsOverProcess, 2); + planSubDetailMapper.update(wrapper); // 更新子表 updateProcessDesignProgressList(updateReqVO.getId(), updateReqVO.getProcessDesignProgressList()); @@ -266,7 +273,7 @@ public class ProcessDesignServiceImpl implements ProcessDesignService { wrapper.eq(PlanSubDetailDO::getProjectId, processDesignDO.getProjectId()); wrapper.eq(PlanSubDetailDO::getProjectSubId, processDesignDO.getProjectSubId()); wrapper.eq(PlanSubDetailDO::getSubType, processDesignDO.getProcessDesignType()); - wrapper.set(PlanSubDetailDO::getIsOverProcess, 1); + wrapper.set(PlanSubDetailDO::getIsOverProcess, 2); planSubDetailMapper.update(wrapper); return processDesignMapper.over(id); } @@ -587,7 +594,7 @@ public class ProcessDesignServiceImpl implements ProcessDesignService { wrapper.eq(PlanSubDetailDO::getProjectId, processDesignDO.getProjectId()); wrapper.eq(PlanSubDetailDO::getProjectSubId, processDesignDO.getProjectSubId()); wrapper.eq(PlanSubDetailDO::getSubType, processDesignDO.getProcessDesignType()); - wrapper.set(PlanSubDetailDO::getIsOverProcess, 0); + wrapper.set(PlanSubDetailDO::getIsOverProcess, 2); planSubDetailMapper.update(wrapper); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailService.java index 35a6f663..b93828ed 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailService.java @@ -70,4 +70,6 @@ public interface PurchaseOrderNoDetailService { PageResult getReceivingGoods(PurchaseOrderNoDetailPageReqVO pageReqVO); Long getReceivingGoodsMessage(); + + CommonResult updateFrom(PurchaseOrderNoDetailDO detailDO); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java index d540881b..b1391d07 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordernodetail/PurchaseOrderNoDetailServiceImpl.java @@ -2,6 +2,7 @@ package com.chanko.yunxi.mes.module.heli.service.purchaseordernodetail; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.chanko.yunxi.mes.framework.common.exception.ErrorCode; import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils; @@ -550,4 +551,40 @@ public class PurchaseOrderNoDetailServiceImpl implements PurchaseOrderNoDetailSe public Long getReceivingGoodsMessage() { return purchaseOrderNoDetailMapper.getReceivingGoodsMessage(); } + + @Override + public CommonResult updateFrom(PurchaseOrderNoDetailDO detailDO) { + PurchaseOrderNoDetailDO purchaseOrderNoDetailDO = purchaseOrderNoDetailMapper.selectById(detailDO.getId()); + if (ObjectUtil.isNotEmpty(purchaseOrderNoDetailDO)){ + purchaseOrderNoDetailDO.setEstimatedPrice(detailDO.getEstimatedPrice()); + purchaseOrderNoDetailMapper.updateById(purchaseOrderNoDetailDO); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StorageInDetailDO::getPurchaseOrderNoDetailId,detailDO.getId()); + List list = storageInDetailMapper.selectList(wrapper); + BigDecimal result = BigDecimal.ZERO; + BigDecimal estimatedPrice = detailDO.getEstimatedPrice(); + BigDecimal purchaseAmount = detailDO.getPurchaseAmount(); + // 检查两个值是否为null或0 + if (estimatedPrice != null && + purchaseAmount != null && + purchaseAmount.compareTo(BigDecimal.ZERO) != 0) { + // 当两个值非空且除数非零时才进行计算 + result = estimatedPrice.divide(purchaseAmount, 10, RoundingMode.HALF_UP); + } + if (ObjectUtil.isNotEmpty(list)){ + for (StorageInDetailDO storageInDetailDO : list) { + if (result.compareTo(BigDecimal.ZERO)==0){ + storageInDetailDO.setEstimatedPrice(BigDecimal.ZERO); + + }else { + storageInDetailDO.setEstimatedPrice(storageInDetailDO.getStorageAmount().multiply(result).setScale(1, RoundingMode.HALF_UP)); + } + } + storageInDetailMapper.insertOrUpdateBatch( list); + } + } + + + return CommonResult.success(true); + } } diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/purchaseordernodetail/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/purchaseordernodetail/index.ts index ba3f80eb..bb09982a 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/purchaseordernodetail/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/purchaseordernodetail/index.ts @@ -88,3 +88,6 @@ export const getOutsourcingExpenses = async (params) => { export const exportOutsourcing = async (params) => { return await request.download({ url: `/heli/purchase-order-no-detail/exportOutsourcing`, params }) } +export const updateFrom= async (data) => { + return await request.post({ url: `/heli/purchase-order-no-detail/updateFrom`, data }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchaseorder/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchaseorder/index.vue index c32a9dfe..40c17a38 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchaseorder/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchaseorder/index.vue @@ -12,8 +12,11 @@ - - + + + + + @@ -140,6 +143,7 @@ const queryParams = reactive({ materialName:undefined, projectMaterialPlanNo:undefined, supplierName:undefined, + blueprintNo:undefined }) const queryFormRef = ref() // 搜索的表单 const exportLoading = ref(false) // 导出的加载中 diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/plan/productionPrint.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/plan/productionPrint.vue index a9cbce28..babc9df6 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/plan/productionPrint.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/plan/productionPrint.vue @@ -121,7 +121,7 @@ 设备型号 数量 主要材料 - 毛坯日期 + 毛坯日期 2D/日期 3D/日期 @@ -412,7 +412,7 @@ style=" - + {{item+(formData.projectOrderSubs.length)}}     @@ -504,6 +504,7 @@ import { getOperateLogPage } from '@/api/system/operatelog' import urlimg from '@/assets/imgs/exlogo.png' const logoDataUrl = ref('') // 存储Logo的Base64编码数据URL const dialogVisible = ref(false) // 弹窗的是否展示 +const num = ref(0) // 存储Logo的Base64编码数据URL const onPrint = () => { // 拿到打印页面dom节点 @@ -538,7 +539,7 @@ const onPrint = () => { @page { size: A4; - margin:1cm; + margin:0.8cm 1cm 1.4cm 1cm;; } @media print { .page { @@ -552,6 +553,24 @@ const onPrint = () => { page-break-after: always; } } + /* 注册页脚为运行元素 */ +.footer { + position: running(footer); + text-align: right; + font-size: 10px; + color: #666; + border-top: 1px dashed #ccc; + padding-top: 2px; +} + +/* 定义页脚位置 */ +@page { + @bottom-right { + content: counter(page) "/" counter(pages); + font-family: Arial; /* 防止继承奇怪字体 */ + } +} + table { width: 100%; /* 让表格宽度100%占满其父元素宽度 */ height: auto; /* 高度根据内容自适应 */ @@ -587,6 +606,7 @@ const onPrint = () => {
${printNode.innerHTML} +
`) doc.close() // 浏览器打印页面打开渲染 @@ -596,12 +616,147 @@ const onPrint = () => { document.body.removeChild(newIframe) // 移除打印内框架,下次打印下次再挂载 dialogVisible.value = false }, 100) + } +// const onPrint = () => { +// const printNode = document.querySelector('.print-wrap'); +// if (!printNode) return; +// +// // 克隆节点避免污染原始DOM +// const printClone = printNode.cloneNode(true) as HTMLElement; +// const pages = printClone.querySelectorAll('.page'); +// const totalPages = pages.length; +// console.log(totalPages) +// // 动态添加页码元素 +// let currentPage = 1; +// pages.forEach(page => { +// const pageNum = document.createElement('div'); +// pageNum.className = 'page-footer'; +// pageNum.innerHTML = `${currentPage}/${totalPages}`; +// +// // 插入页码到页面底部 +// const footer = document.createElement('div'); +// footer.className = 'print-footer'; +// footer.appendChild(pageNum); +// page.appendChild(footer); +// currentPage++; +// }); +// // 创建打印专用iframe +// const newIframe = document.createElement('iframe'); +// Object.assign(newIframe.style, { +// width: '0px', +// height: '0px', +// position: 'absolute', +// left: '-9999px', +// top: '-9999px' +// }); +// document.body.appendChild(newIframe); +// +// const doc = newIframe.contentWindow!.document!; +// doc.write(` +// +//
${printClone.innerHTML}
+// `); +// doc.close(); +// +// // 打印处理 +// setTimeout(() => { +// newIframe.contentWindow!.focus(); +// newIframe.contentWindow!.print(); +// +// // 打印后清理 +// document.body.removeChild(newIframe); +// dialogVisible.value = false; +// +// // 恢复原始内容(可选) +// // printNode.innerHTML = originalContent; +// }, 300); +// }; const outopen = () => { dialogVisible.value = false } - const formData = ref({ id: undefined, code: undefined, @@ -725,6 +880,20 @@ const open = async (id: number) => { formData.value.auditTime = auditLog.startTime formData.value.auditUserName = auditLog.userNickname } + if (formData.value.projectOrderSubs.length>6){ + if (formData.value.projectOrderSubs.length>33){ + var number = formData.value.projectOrderSubs.length-33; + const remainder = number % 29; + const emptyRows = remainder === 0 ? 0 : 29 - remainder; + num.value=emptyRows + console.log(num.value) + }else { + var number = formData.value.projectOrderSubs.length-6; + const remainder = number % 27; + const emptyRows = remainder === 0 ? 0 : 27 - remainder; + num.value=emptyRows + } + } } defineExpose({ open }) // 提供 open 方法,用于打开弹窗 @@ -859,6 +1028,22 @@ const resetForm = () => { page-break-after: always; } } +.footer { + position: running(footer); + text-align: right; + font-size: 10px; + color: #666; + border-top: 1px dashed #ccc; + padding-top: 5px; +} + +/* 定义页脚位置 */ +@page { + @bottom-right { + content: counter(page) "/" counter(pages); + font-family: Arial; /* 防止继承奇怪字体 */ + } +} table { width: 100%; /* 让表格宽度100%占满其父元素宽度 */ height: auto; /* 高度根据内容自适应 */ diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorderno/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorderno/detail.vue index e8705da9..91f9f2fe 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorderno/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/purchaseorderno/detail.vue @@ -76,7 +76,16 @@ - + + + + @@ -217,6 +226,7 @@ const tagsViewStore = useTagsViewStore() import * as PurchaseOrderNoApi from '@/api/heli/purchaseorderno' import * as PurchaseOrderNoDetailApi from '@/api/heli/purchaseordernodetail' import {ref} from "vue"; +import {update} from "lodash-es"; const dialogVisible = ref(false) // 弹窗的是否展示 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 @@ -300,6 +310,17 @@ const isPrint = async () => { } } +const updateFrom = async (row) => { + console.log(row) + + await PurchaseOrderNoDetailApi.updateFrom(row) + loading.value = true; + + message.success("修改成功"); + getList(); // 确保刷新完成 + emit('success'); + +} function doPrint() { diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/taskSchedule.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/taskSchedule.vue index 9e89f2cc..38247fff 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/taskSchedule.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/taskSchedule.vue @@ -12,7 +12,7 @@