From af4680599bd10ff36ec97e1a852c47b07df62b67 Mon Sep 17 00:00:00 2001 From: Ledo Date: Fri, 25 Jul 2025 15:06:49 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=BC=82=E5=B8=B8=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E5=B0=81=E9=9D=A2=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mes-ui/mini-app/src/pages/index/index.vue | 2 +- .../images/unqualifiedNotificationConfirm.png | Bin 0 -> 29449 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 mes-ui/mini-app/src/static/images/unqualifiedNotificationConfirm.png diff --git a/mes-ui/mini-app/src/pages/index/index.vue b/mes-ui/mini-app/src/pages/index/index.vue index 0475913..6fbc397 100644 --- a/mes-ui/mini-app/src/pages/index/index.vue +++ b/mes-ui/mini-app/src/pages/index/index.vue @@ -83,7 +83,7 @@ const categoryList = ref([ path: "unqualifiedNotificationConfirm", name: "品质异常确认", auth: false, - imgUrl: "/static/images/unqualifiedNotification.png", + imgUrl: "/static/images/unqualifiedNotificationConfirm.png", defaultImgUrl: "/static/images/unqualifiedNotification-default.png", }, ]); diff --git a/mes-ui/mini-app/src/static/images/unqualifiedNotificationConfirm.png b/mes-ui/mini-app/src/static/images/unqualifiedNotificationConfirm.png new file mode 100644 index 0000000000000000000000000000000000000000..bebcb0d8cd737046d00ebe8c7c393fc14e7856fa GIT binary patch literal 29449 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%0Dm`Xz>r6kSmVa__W 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 W3#-Qn8}4n1pe(N;S0`%~`F{X@cf*|k literal 0 HcmV?d00001 From 0cab4952e6afcc72369a6da2a425cde1c6c5a577 Mon Sep 17 00:00:00 2001 From: z Date: Fri, 25 Jul 2025 17:36:06 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E5=93=81=E8=B4=A8=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../taskdispatch/TaskDispatchController.java | 8 + .../taskdispatch/TaskDispatchDetailDO.java | 7 + .../TaskDispatchDetailMapper.java | 23 +- .../taskdispatch/TaskDispatchService.java | 2 + .../taskdispatch/TaskDispatchServiceImpl.java | 65 +- .../src/api/heli/taskdispatch/index.ts | 4 + mes-ui/mes-ui-admin-vue3/src/utils/dict.ts | 1 + .../src/views/heli/deliverorder/detail.vue | 9 +- .../src/views/heli/qualityfeedback/detail.vue | 7 +- .../src/views/heli/storage/index.vue | 28 +- .../src/views/heli/storagein/detail.vue | 13 +- .../heli/taskdispatch/ProductProcessPrint.vue | 126 +- .../heli/taskdispatch/assemblyPrinting.vue | 1171 +++++++++++++++++ .../src/views/heli/taskdispatch/detail.vue | 4 - .../unqualifiedNotificationConfirm-detail.vue | 4 +- 15 files changed, 1395 insertions(+), 77 deletions(-) create mode 100644 mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/assemblyPrinting.vue diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java index 9dd7fda..466f048 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/taskdispatch/TaskDispatchController.java @@ -149,7 +149,15 @@ public class TaskDispatchController { } } + @GetMapping("/task-dispatch-detail/list-by-dispatch-id-assembly") + @Operation(summary = "获得派工明细列表") + @Parameter(name = "dispatchId", description = "派工单id",required = true) + @Parameter(name = "dispatchType", description = "派工单类型",required = false) + @PreAuthorize("@ss.hasPermission('heli:task-dispatch:query')") + public CommonResult> getTaskDispatchDetailListByDispatchIdAssembly(@RequestParam("dispatchId") Long dispatchId) { + return success(taskDispatchService.getTaskDispatchDetailListByDispatchIdAssembly(dispatchId)); + } @DeleteMapping("/task-dispatch-detail/delete") @Operation(summary = "删除派工单") @Parameter(name = "id", description = "编号", required = true) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java index 1242832..bff2868 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java @@ -236,6 +236,7 @@ public class TaskDispatchDetailDO extends BaseDO { private String nickname; @TableField(exist = false) private BigDecimal workingHours; + @TableField(exist = false) private LocalDateTime reportTime; private Integer reportStatus; @@ -243,4 +244,10 @@ public class TaskDispatchDetailDO extends BaseDO { private Integer flag; //是否泡沫, 是-Y 否 -N private String isFoam; + @TableField(exist = false) + private BigDecimal workingHour; + @TableField(exist = false) + private Long users; + @TableField(exist = false) + private BigDecimal bgWorkTimes; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java index 1f09a3d..a52b23c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/taskdispatch/TaskDispatchDetailMapper.java @@ -388,7 +388,28 @@ public interface TaskDispatchDetailMapper extends BaseMapperX selectListByDispatchIdAssembly(Long dispatchId) { + MPJLambdaWrapper query = new MPJLambdaWrapper<>(); + query.selectAll(TaskDispatchDetailDO.class) + .select("a.is_report as is_report,a.code as procedure_code") + .select("count(b.amount) as numAmount") + .select("sum(CASE WHEN b.work_type = 1 THEN b.work_time ELSE 0 END) as workingHours") +// .select("sum(bg.work_time) as bgWorkTime") + .select("(SELECT SUM(bg.work_time) \n" + + " FROM quality_zj_pg_master_line p\n" + + " LEFT JOIN quality_zj_bg_master_line bg ON bg.zj_mx_id = p.id and p.deleted = 0 AND p.tenant_id = 2\n" + + " WHERE p.dispatch_detail_id = t.id) AS bgWorkTime") + .leftJoin(ProcedureDO.class,"a",ProcedureDO::getId,TaskDispatchDetailDO::getProcedureId) + .leftJoin(TaskReportDO.class,"b",TaskReportDO::getDispatchDetailId,TaskDispatchDetailDO::getId) +// .leftJoin(PgMasterLineDO.class,"p",PgMasterLineDO::getDispatchDetailId,TaskDispatchDetailDO::getId) +// .leftJoin("quality_pg_master_line p on p.dispatch_detail_id=t.id and p.deleted=0") +// .leftJoin("quality_bg_master_line bg on bg.zj_mx_id = p.id and bg.deleted=0") +// .leftJoin(BgMasterLineDO.class,"bg",BgMasterLineDO::getZjMxId,PgMasterLineDO::getId) + .disableSubLogicDel() + .groupBy(TaskDispatchDetailDO::getId) + .eq(TaskDispatchDetailDO::getDispatchId, dispatchId); + return selectList(query); + } default List selectListByDispatchIdNew(Long dispatchId) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(TaskDispatchDetailDO.class) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java index e25d7a8..f6054ac 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchService.java @@ -97,4 +97,6 @@ public interface TaskDispatchService { boolean judgeHasOver(Long id); List getListJg(Long id, Long projectSubId); + + List getTaskDispatchDetailListByDispatchIdAssembly(Long dispatchId); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java index 2e94ac8..d752faf 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; 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.PageResult; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; @@ -787,27 +788,30 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { } } if (CollUtil.isNotEmpty(dispatchDetailDOHashMap)){ - List> hashMaps = taskDispatchDetailMapper.sumAssembleReport(new ArrayList<>(dispatchDetailDOHashMap.keySet())); - HashMap reportMap = new HashMap<>(); - for (HashMap hashMap : hashMaps) { - reportMap.put(hashMap.get("detailId"),hashMap.get("amount")); - } - for (Long l : dispatchDetailDOHashMap.keySet()) { - if (!reportMap.containsKey(l)){ - msg = msg + dispatchDetailDOHashMap.get(l).getOwnerName() + ","; - allReport = false; - } - } - if (!msg.equals("")){ - msg = msg.substring(0,msg.length()-1) + "还没有报工,请确认"; - } - - +// List> hashMaps = taskDispatchDetailMapper.sumAssembleReport(new ArrayList<>(dispatchDetailDOHashMap.keySet())); +// HashMap reportMap = new HashMap<>(); +// for (HashMap hashMap : hashMaps) { +// reportMap.put(hashMap.get("detailId"),hashMap.get("amount")); +// } +// for (Long l : dispatchDetailDOHashMap.keySet()) { +// if (!reportMap.containsKey(l)){ +// msg = msg + dispatchDetailDOHashMap.get(l).getOwnerName() + ","; +// allReport = false; +// } +// } +// if (!msg.equals("")){ +// msg = msg.substring(0,msg.length()-1) + "还没有报工,请确认"; +// } + allReport = false; } if (!allReport){ - throw exception(new ErrorCode(1_009_019,msg)); +// throw exception(new ErrorCode(1_009_019,msg)); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(TaskDispatchDetailDO::getId,taskDispatchDetailDO.getId()); + updateWrapper.set(TaskDispatchDetailDO::getProcedureStatus,TaskDispatchProcedureStatusEnum.COMPLETED.getCode()); + taskDispatchDetailMapper.update(updateWrapper); } if (allReport){ TaskDispatchDetailOwnerDO taskDispatchDetailOwnerDO = taskDispatchDetailOwnerMapper.selectById(taskDispatchDetailDO.getDetailOwnerId()); @@ -1008,6 +1012,33 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { public List getListJg(Long id, Long projectSubId) { return taskDispatchMapper.getListJg(id,projectSubId); } + + @Override + public List getTaskDispatchDetailListByDispatchIdAssembly(Long dispatchId) { + List taskDispatchDetailDOS = taskDispatchDetailMapper.selectListByDispatchIdAssembly(dispatchId); + List result = taskDispatchDetailDOS.stream() + // 按procedureId分组 + .collect(Collectors.groupingBy(TaskDispatchDetailDO::getProcedureId)) + .values().stream() + // 处理每个分组 + .map(group -> { + if (group.size() >= 2) { + // 获取前两个元素 + TaskDispatchDetailDO first = group.get(0); + TaskDispatchDetailDO second = group.get(1); + + // 将第二个元素的属性赋值给第一个元素 + first.setBgWorkTimes(second.getBgWorkTime()); + first.setWorkingHour(second.getWorkingHours()); + first.setUsers(second.getOwner()); + } + // 始终返回每组第一个元素 + return group.get(0); + }) + .collect(Collectors.toList()); + + return result; } + private void updateAssembleDetail(OperateTypeEnum operateTypeEnum,Long dispatchId, List list) { list.forEach(o -> o.setDispatchId(dispatchId)); diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/taskdispatch/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/taskdispatch/index.ts index 98db4b2..bb5d1c9 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/taskdispatch/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/taskdispatch/index.ts @@ -84,3 +84,7 @@ export const getAssmebleDispatchPage = async() => { export const judgeHasOver = async(id:number)=>{ return await request.get({url:`/heli/task-dispatch/task-dispatch-detail/judgeHasOver?id=`+id}) } +// 获得派工明细列表 +export const getTaskDispatchDetailListByDispatchIdAssembly = async (dispatchId) => { + return await request.get({ url: `/heli/task-dispatch/task-dispatch-detail/list-by-dispatch-id-assembly?dispatchId=` + dispatchId }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts b/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts index 1c22a7b..242441c 100644 --- a/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts +++ b/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts @@ -296,5 +296,6 @@ export enum DICT_TYPE { MATERIAL_PLAN_BOOM_MPLAN_STATUS='material_plan_boom_mplan_status', HELI_PROJECT_PURCHASE_ORDER_NO_TYPE = 'heli_project_purchase_order_no_type',//采购单类型 HELI_DISPATCH_PRODUCTION_STATUS = 'heli_dispatch_production_status', // 派工单状态 + HELI_STORAGE_IN_STATUS = 'heli_storage_in_status',//入库出库状态 } diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue index 70d6f32..f4e325a 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue @@ -382,9 +382,12 @@ - - - + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/qualityfeedback/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/qualityfeedback/detail.vue index 3340fa1..9cd3ff3 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/qualityfeedback/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/qualityfeedback/detail.vue @@ -93,9 +93,10 @@ - - - + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/index.vue index 3905af8..aa66e39 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/index.vue @@ -75,7 +75,7 @@ - - - - + + + + + + + + + + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/storagein/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/storagein/detail.vue index 4acc5d0..72276db 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/storagein/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/storagein/detail.vue @@ -44,7 +44,7 @@ @@ -337,8 +337,8 @@ function doPrint() { padding: 4px 2px; } @media print { - body { - margin: 0; + body { + margin: 0; -webkit-print-color-adjust: exact !important; color-adjust: exact !important; } @@ -381,6 +381,7 @@ function doPrint() { iframe.contentWindow?.print() setTimeout(() => document.body.removeChild(iframe), 1000) } + StorageinApi.updateIsPrint(query.id); } @@ -512,18 +513,18 @@ const getList = async () => { margin: 0 auto; border: 2px solid #000 !important; } - + .print-table th, .print-table td { border: 1px solid #000 !important; -webkit-print-color-adjust: exact !important; color-adjust: exact !important; } - + .print-table th:last-child, .print-table td:last-child { border-right: 2px solid #000 !important; } } - \ No newline at end of file + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/ProductProcessPrint.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/ProductProcessPrint.vue index 2def0fd..ffdf4f5 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/ProductProcessPrint.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/ProductProcessPrint.vue @@ -15,13 +15,13 @@ 产品工艺流程卡 - +
项目编号
{{ formData.projectCode }}
- +
子项目编号:{{ formData.projectSubCode}} 项目交期:{{formatDate(new Date(formData.projectEndTime), 'YYYY-MM-DD')}} @@ -72,6 +72,7 @@ 磨床 数控1 数控2 + 线切割 火花 刻字 网格 @@ -95,6 +96,7 @@ {{item.polishing}} {{item.wire}} {{item.rough}} + {{item.cutting}} {{item.fashioning}} {{item.spark}} {{item.lettering}} @@ -104,7 +106,7 @@ - +
各工序工艺要点 @@ -114,7 +116,7 @@ {{item.name}} - {{item.data}} + {{item.data}} @@ -127,7 +129,7 @@ 开单人/日期: - + {{formData.userNickname}} {{ formatDate(new Date(formData.startTime), 'YYYY-MM-DD') }} @@ -200,6 +202,14 @@ const summarylist = ref([ name: undefined, data: undefined }, + { + name: undefined, + data: undefined + }, + { + name: undefined, + data: undefined + }, { name: undefined, data: undefined @@ -224,7 +234,8 @@ const formDataprocess = ref({ lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 2, @@ -243,7 +254,8 @@ const formDataprocess = ref({ lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 3, @@ -262,7 +274,8 @@ const formDataprocess = ref({ lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 4, @@ -281,7 +294,8 @@ const formDataprocess = ref({ lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 5, @@ -300,7 +314,8 @@ const formDataprocess = ref({ lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 6, @@ -319,7 +334,8 @@ const formDataprocess = ref({ lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 7, @@ -339,7 +355,8 @@ const formDataprocess = ref({ lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 8, @@ -358,7 +375,8 @@ const formDataprocess = ref({ lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 9, @@ -378,7 +396,8 @@ const formDataprocess = ref({ lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 10, @@ -398,7 +417,8 @@ const formDataprocess = ref({ lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 11, @@ -418,7 +438,8 @@ const formDataprocess = ref({ lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 12, @@ -645,7 +666,8 @@ const outopen = () => { lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 2, @@ -664,7 +686,8 @@ const outopen = () => { lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 3, @@ -683,7 +706,8 @@ const outopen = () => { lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 4, @@ -702,7 +726,8 @@ const outopen = () => { lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 5, @@ -721,7 +746,8 @@ const outopen = () => { lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 6, @@ -740,7 +766,8 @@ const outopen = () => { lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 7, @@ -760,7 +787,8 @@ const outopen = () => { lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 8, @@ -779,7 +807,8 @@ const outopen = () => { lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 9, @@ -799,7 +828,8 @@ const outopen = () => { lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 10, @@ -819,7 +849,8 @@ const outopen = () => { lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 11, @@ -839,7 +870,8 @@ const outopen = () => { lettering: undefined, electrowelding: undefined, drill: undefined, - polishing: undefined + polishing: undefined, + cutting:undefined }, { index: 12, @@ -1463,6 +1495,45 @@ const open = async (id?: number) => { if (taskitem.workingHours){ formDataprocess.value.tablename[5].polishing = taskitem.workingHours } + }else if (Procedure.name == '线切割') { + console.log() + summarylist.value[13].name = Procedure.name + if (!summarylist.value[13].data) { + summarylist.value[13].data = taskitem.summary + } else if (summarylist.value[13].data && taskitem.summary) { + summarylist.value[13].data = summarylist.value[13].data + ',' + taskitem.summary + } + if (!formDataprocess.value.tablename[0].cutting) { + formDataprocess.value.tablename[0].cutting = taskitem.sort + } else if (formDataprocess.value.tablename[0].cutting && taskitem.sort) { + formDataprocess.value.tablename[0].cutting = + formDataprocess.value.tablename[0].cutting + ',' + taskitem.sort + } + Procedata.list.forEach((item: any) => { + if (item.name == Procedure.name) { + formDataprocess.value.tablename[2].cutting = item.standard1Time + formDataprocess.value.tablename[3].cutting = item.standard2Time + } + }) + + if(taskitem.owner){ + const initialUser = await UserApi.getUser(taskitem.owner) + if (!formDataprocess.value.tablename[6].cutting) { + formDataprocess.value.tablename[6].cutting = initialUser.nickname + } else if ( + formDataprocess.value.tablename[6].cutting && + !formDataprocess.value.tablename[8].cutting + ) { + formDataprocess.value.tablename[8].cutting = initialUser.nickname + } else { + } + } + if (taskitem.bgWorkTime){ + formDataprocess.value.tablename[9].cutting = taskitem.bgWorkTime + } + if (taskitem.workingHours){ + formDataprocess.value.tablename[5].cutting = taskitem.workingHours + } } }) } @@ -1478,6 +1549,7 @@ const open = async (id?: number) => { const operateLogs = (await getOperateLogPage(logParams)).list[0] formData.value.userNickname = operateLogs.userNickname formData.value.startTime = operateLogs.startTime + console.log(formDataprocess.value.tablename) } } defineExpose({ open }) // 提供 open 方法,用于打开弹窗 diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/assemblyPrinting.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/assemblyPrinting.vue new file mode 100644 index 0000000..e1283e1 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/assemblyPrinting.vue @@ -0,0 +1,1171 @@ + + + + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detail.vue index e9ddc73..95c0a28 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detail.vue @@ -530,12 +530,8 @@ import { import { getOperateLogPage } from "@/api/system/operatelog"; -import ProcedureSelect from "@/views/heli/hlvuestyle/procedureSelect.vue"; -import UserSelect from '@/views/heli/hlvuestyle/userSelect.vue' -import EquipSelect from "@/views/heli/hlvuestyle/equipSelect.vue"; import EquipmentSelect from "@/views/heli/hlvuestyle/equipmentSelect.vue"; import ProductProcessPrint from "./ProductProcessPrint.vue"; -import * as EquipManufactureApi from '@/api/heli/equipmanufacture'; import { ElDialog, ElTable, diff --git a/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm-detail.vue b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm-detail.vue index 3f53586..f8839f2 100644 --- a/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm-detail.vue +++ b/mes-ui/mini-app/src/pages/unqualifiedNotificationConfirm/unqualifiedNotificationConfirm-detail.vue @@ -3,7 +3,7 @@ import { toRaw, ref, computed } from 'vue' import { formatDate } from '@/utils/index' import { onLoad, onShow } from '@dcloudio/uni-app' import { useLoginStore } from '@/stores/modules/login' -import { getNotificationDetailAPI, operateWx } from '@/services/unqualifiedNotification' +import {confirm, getNotificationDetailAPI, operateWx} from '@/services/unqualifiedNotification' import { serviceDomain } from '@/services/constants' const popup = ref() const userStore = useLoginStore() @@ -173,7 +173,7 @@ const submitForm = async () => { status: 1, notificationStatus: 3 } - await operateWx(params); + await confirm(params); } catch (error) { uni.showToast({ icon: 'none', From 96ad8dcb68bb860fbe92871af91be2fdf9158914 Mon Sep 17 00:00:00 2001 From: z Date: Sat, 26 Jul 2025 17:45:02 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=B4=BE=E5=B7=A5=E5=8D=95=E5=A4=8D?= =?UTF-8?q?=E9=80=89=E6=A1=86=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/heli/taskdispatch/detailDialog.vue | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detailDialog.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detailDialog.vue index 1303d44..b121ee3 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detailDialog.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detailDialog.vue @@ -221,7 +221,7 @@ class="!w-260px" v-model="formData.requiredCompletedDate" type="date" value-form @@ -236,7 +236,7 @@ class="!w-260px" v-model="formData.requiredCompletedDate" type="date" value-form @@ -276,7 +276,7 @@ style=" display: flex; justify-content: center; align-items: center; width: 100%;"> - +
@@ -1519,8 +1519,8 @@ const onAddItem = () => { dispatchId: undefined, procedureCode:'' , isReport:0 , - checkYn : 0, - checkYns: true, + checkYn : 1, + checkYns: false, postId: ownerList2.value[0].id } // 遍历对象的键 @@ -1833,4 +1833,21 @@ const printHandle = (id) => { padding: 10px; /* 调整为合适的值 */ } +.large-checkbox { + transform: scale(1.5); /* 方法1:使用scale放大 */ + /* 或者 */ + /* 方法2:通过调整字体大小 */ + /* font-size: 18px; */ +} +/* 或者更精确地控制内部图标 */ +/* .large-checkbox .el-checkbox__inner { + width: 20px; + height: 20px; +} +.large-checkbox .el-checkbox__inner::after { + height: 10px; + left: 7px; + top: 3px; + width: 5px; +} */ From 69a8bab035cc73062a146af0b720aeeec8b63a1b Mon Sep 17 00:00:00 2001 From: z Date: Sun, 27 Jul 2025 19:25:41 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E6=B4=BE=E5=B7=A5?= =?UTF-8?q?=E5=8D=95bug=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bdgzsomthing/bdgzsomthingController.java | 6 +- .../taskdispatch/TaskDispatchDetailDO.java | 2 + .../materialplan/MaterialPlanServiceImpl.java | 2 + .../taskdispatch/TaskDispatchServiceImpl.java | 20 +++-- mes-ui/mes-ui-admin-vue3/.env.pro | 6 +- .../views/heli/taskdispatch/detailDialog.vue | 87 +++++++++++-------- 6 files changed, 75 insertions(+), 48 deletions(-) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java index 864fa23..93ad04a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/bdgzsomthing/bdgzsomthingController.java @@ -151,7 +151,7 @@ public class bdgzsomthingController { BeanUtils.toBean(list, bdgzsomthingRespVO.class)); } - @Scheduled(fixedRate = 10800000) +// @Scheduled(fixedRate = 10800000) public void scheduledTask() { bdgzsomthingService.selectds(); } @@ -159,8 +159,8 @@ public class bdgzsomthingController { //@Scheduled(cron = "0 2 0 * * ?") //每天十天执行一次 @PostConstruct public void init() { - selectHasPrice(); - selectSafeStorageAndDeliverOneYear(); +// selectHasPrice(); +// selectSafeStorageAndDeliverOneYear(); // bdgzsomthingService.selectds(); } @Scheduled(cron = "0 0 2 * * ?") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java index bff2868..39a9fba 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/taskdispatch/TaskDispatchDetailDO.java @@ -104,6 +104,8 @@ public class TaskDispatchDetailDO extends BaseDO { * 工序状态 默认 已提交 已完成 0 1 2 */ private Integer procedureStatus; + private Integer reportProcess; + private String matPlanProcess; @TableField(exist = false) private String projectName; diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java index 6932c3c..2e91c82 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplan/MaterialPlanServiceImpl.java @@ -251,6 +251,7 @@ public class MaterialPlanServiceImpl implements MaterialPlanService { lambdaUpdateWrapper.set(TaskDispatchDetailDO::getProjectMaterialPlanNo, null); lambdaUpdateWrapper.set(TaskDispatchDetailDO::getPlanStatus,0); lambdaUpdateWrapper.set(TaskDispatchDetailDO::getProjectMaterialPlanDetailId,null); + lambdaUpdateWrapper.set(TaskDispatchDetailDO::getMatPlanProcess,"N"); taskDispatchDetailMapper.update(lambdaUpdateWrapper); } materialPlanBoomMapper.delete(queryWrapper1); @@ -306,6 +307,7 @@ public class MaterialPlanServiceImpl implements MaterialPlanService { materialPlanBoomDOList.add(boomDO); taskDispatchDetailDO.setProjectMaterialPlanDetailId(boomDO.getId()); taskDispatchDetailDO.setPlanStatus(1); + taskDispatchDetailDO.setMatPlanProcess("Y"); taskDispatchDetailDO.setProjectMaterialPlanNo(planDO.getProjectMaterialPlanNo()); } // materialPlanBoomMapper.insertBatch(materialPlanBoomDOList); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java index d752faf..29c4b3f 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/taskdispatch/TaskDispatchServiceImpl.java @@ -195,6 +195,14 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { for (TaskDispatchDetailDO dispatchDetailDO : list) { TaskDispatchDetailDO taskDispatchDetailDO = taskDispatchDetailMapper.selectById(dispatchDetailDO.getId()); if (ObjectUtil.isNotEmpty(taskDispatchDetailDO)){ + if ("false".equals(dispatchDetailDO.getIsOutsourcing())){ + if ("Y".equals(taskDispatchDetailDO.getMatPlanProcess())){ + ProcedureDO procedureDO = procedureMapper.selectById(dispatchDetailDO.getProcedureId()); + if (ObjectUtil.isNotEmpty(procedureDO)){ + throw exception(new ErrorCode(400,"该工序"+procedureDO.getName()+"已做物料需求计划,不允许去掉外协,请确认!")); + } + } + } if (isDetailChanged(taskDispatchDetailDO, dispatchDetailDO)) { if (taskDispatchDetailDO.getPlanStatus()==1){ ProcessBomDetailDO bomDetailDO = processBomDetailMapper.selectById(taskDispatchDO.getBomDetailId()); @@ -521,12 +529,10 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { @Override public void deleteTaskDispatchDetail(Long id) { TaskDispatchDetailDO taskDispatchDetailDO = taskDispatchDetailMapper.selectById(id); - if (ObjectUtil.isNotEmpty(taskDispatchDetailDO)&&taskDispatchDetailDO.getPlanStatus()==1){ - TaskDispatchDO taskDispatchDO = taskDispatchMapper.selectById(taskDispatchDetailDO.getDispatchId()); - ProcessBomDetailDO bomDetailDO = processBomDetailMapper.selectById(taskDispatchDO.getBomDetailId()); + if (ObjectUtil.isNotEmpty(taskDispatchDetailDO)&&("Y".equals(taskDispatchDetailDO.getMatPlanProcess())||taskDispatchDetailDO.getReportProcess()!=0)){ ProcedureDO procedureDO = procedureMapper.selectById(taskDispatchDetailDO.getProcedureId()); - if (ObjectUtil.isNotEmpty(bomDetailDO)&&ObjectUtil.isNotEmpty(procedureDO)){ - throw exception(new ErrorCode(400,bomDetailDO.getMaterialName()+" "+procedureDO.getName()+"已做物料需求计划,不能更改,请确认")); + if (ObjectUtil.isNotEmpty(procedureDO)){ + throw exception(new ErrorCode(400,"该工序"+procedureDO.getName()+"已做报工或者已做需求计划,不允许删除")); } } taskDispatchDetailMapper.deleteByDispatchId(id); @@ -737,7 +743,6 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { if(operateReqVO.getOwnerId()!=null){ lastReportDO.setOwner(operateReqVO.getOwnerId()); taskDispatchDetailDO.setOwner(operateReqVO.getOwnerId()); - taskDispatchDetailMapper.updateById(taskDispatchDetailDO); }else{ lastReportDO.setOwner(taskDispatchDetailDO.getOwner()); } @@ -746,6 +751,8 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { }else { lastReportDO.setWorkType("1"); } + taskDispatchDetailDO.setReportProcess(1); + taskDispatchDetailMapper.updateById(taskDispatchDetailDO); //更新生产计划单 if (planDO.getStatus() != 2 && planDO.getStatus()!=3){ planDO.setStatus(2); @@ -775,6 +782,7 @@ public class TaskDispatchServiceImpl implements TaskDispatchService { case FINISH: taskDispatchDetailDO.setProcedureStatus(TaskDispatchProcedureStatusEnum.COMPLETED.getCode()); + taskDispatchDetailDO.setReportProcess(2); //装配看看是不是多人,如果是多人,判断一下 boolean allReport = true; HashMap dispatchDetailDOHashMap = new HashMap<>(); diff --git a/mes-ui/mes-ui-admin-vue3/.env.pro b/mes-ui/mes-ui-admin-vue3/.env.pro index a909bd4..392a4f0 100644 --- a/mes-ui/mes-ui-admin-vue3/.env.pro +++ b/mes-ui/mes-ui-admin-vue3/.env.pro @@ -4,14 +4,14 @@ NODE_ENV=production VITE_DEV=false # 请求路径https://nxhs.cjyx.cc/admin-api http://192.168.1.87:8080 https://star.hz-hl.com -VITE_BASE_URL='https://star.hz-hl.com' +VITE_BASE_URL='https://nxhs.cjyx.cc' # 上传路径 http://218.75.46.166:8080 -VITE_UPLOAD_URL='https://star.hz-hl.com/admin-api/infra/file/upload' +VITE_UPLOAD_URL='https://nxhs.cjyx.cc/admin-api/infra/file/upload' # 上传路径 -VITE_UPLOAD_BATCH_URL='https://star.hz-hl.com/admin-api/infra/file/uploadBatch' +VITE_UPLOAD_BATCH_URL='https://nxhs.cjyx.cc/admin-api/infra/file/uploadBatch' # 接口前缀 VITE_API_BASEPATH= diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detailDialog.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detailDialog.vue index b121ee3..389c324 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detailDialog.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/taskdispatch/detailDialog.vue @@ -179,22 +179,22 @@ class="!w-260px" v-model="formData.requiredCompletedDate" type="date" value-form - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + +