From 12a033a8d157fe9aea858888f516a9fda29975ed Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Thu, 9 Jul 2026 14:34:13 +0800 Subject: [PATCH] =?UTF-8?q?2026-07-09=20=E5=B7=A5=E5=8D=95=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E6=95=B0=E6=8D=AE=E6=B1=87=E6=80=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WorkOrderDetailsAllocController.java | 117 +++++++ .../dao/WorkOrderDetailsAllocMapper.java | 56 ++++ .../entity/SearchWorkOrderDetailsAlloc.java | 90 +++++ .../WorkOrderDetailsAllocServiceImpl.java | 317 ++++++++++++++++++ .../service/WorkOrderDetailsAllocService.java | 35 ++ .../boxManage/BoxForNotificationMapper.xml | 2 +- .../InboundNotificationHeadMapper.xml | 1 + .../shopOrder/WorkOrderDetailsAllocMapper.xml | 218 ++++++++++++ 8 files changed, 835 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/gaotao/modules/shopOrder/controller/WorkOrderDetailsAllocController.java create mode 100644 src/main/java/com/gaotao/modules/shopOrder/dao/WorkOrderDetailsAllocMapper.java create mode 100644 src/main/java/com/gaotao/modules/shopOrder/entity/SearchWorkOrderDetailsAlloc.java create mode 100644 src/main/java/com/gaotao/modules/shopOrder/service/Impl/WorkOrderDetailsAllocServiceImpl.java create mode 100644 src/main/java/com/gaotao/modules/shopOrder/service/WorkOrderDetailsAllocService.java create mode 100644 src/main/resources/mapper/shopOrder/WorkOrderDetailsAllocMapper.xml diff --git a/src/main/java/com/gaotao/modules/shopOrder/controller/WorkOrderDetailsAllocController.java b/src/main/java/com/gaotao/modules/shopOrder/controller/WorkOrderDetailsAllocController.java new file mode 100644 index 0000000..46dc06a --- /dev/null +++ b/src/main/java/com/gaotao/modules/shopOrder/controller/WorkOrderDetailsAllocController.java @@ -0,0 +1,117 @@ +package com.gaotao.modules.shopOrder.controller; + +import com.gaotao.common.utils.PageUtils; +import com.gaotao.common.utils.R; +import com.gaotao.modules.pda.utils.ResponseData; +import com.gaotao.modules.shopOrder.entity.SearchWorkOrderDetailsAlloc; +import com.gaotao.modules.shopOrder.entity.UspWorkOrderAllocData; +import com.gaotao.modules.shopOrder.service.WorkOrderDetailsAllocService; +import com.gaotao.modules.sys.controller.AbstractController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * 工单明细数据汇总控制器 + */ +@RestController +@RequestMapping("/shopOrder/workOrderDetailsAlloc") +public class WorkOrderDetailsAllocController extends AbstractController { + + @Autowired + private WorkOrderDetailsAllocService workOrderDetailsAllocService; + + /** + * 分页查询工单明细汇总主信息 + */ + @PostMapping("/searchWorkOrderDetails") + public R searchWorkOrderDetails(@RequestBody SearchWorkOrderDetailsAlloc query) { + if (query.getUser() == null || query.getUser().isEmpty()) { + query.setUser(getUser().getUsername()); + } + PageUtils page = workOrderDetailsAllocService.searchWorkOrderDetailsForAlloc(query); + return R.ok().put("page", page); + } + + /** + * 查询工单汇总数据(根据allocType) + */ + @PostMapping("/list") + public R list(@RequestBody UspWorkOrderAllocData params) { + List list = workOrderDetailsAllocService.selectByAllocType(params); + + // 手动分页处理 + int totalCount = list.size(); + int pageSize = params.getLimit() > 0 ? params.getLimit() : 20; + int offset = params.getPage(); + int currPage = offset / pageSize + 1; + + int fromIndex = offset; + int toIndex = Math.min(fromIndex + pageSize, totalCount); + + List pageList; + if (fromIndex < totalCount) { + pageList = list.subList(fromIndex, toIndex); + } else { + pageList = new ArrayList<>(); + } + + PageUtils page = new PageUtils(pageList, totalCount, pageSize, currPage); + return R.ok().put("page", page); + } + + /** + * 执行工单明细数据汇总(调用存储过程) + */ + @PostMapping("/executeAlloc") + public R executeAlloc(@RequestBody SearchWorkOrderDetailsAlloc query) { + if (query.getUser() == null || query.getUser().isEmpty()) { + query.setUser(getUser().getUsername()); + } + + ResponseData response = workOrderDetailsAllocService.executeWorkOrderDetailsAlloc(query); + if (response.isSuccess()) { + return R.ok(response.getMsg()); + } else { + return R.error(response.getMsg()); + } + } + + /** + * 执行工单数据回传(调用U8接口) + */ + @PostMapping("/executeSync") + public R executeSync(@RequestBody WorkOrderSyncRequest request) { + ResponseData response = workOrderDetailsAllocService.executeWorkOrderSync( + request.getSite(), + request.getUserName(), + request.getOrderList() + ); + if (response.isSuccess()) { + return R.ok(response.getMsg()); + } else { + return R.error(response.getMsg()); + } + } + + /** + * 工单数据回传请求DTO + */ + @lombok.Data + public static class WorkOrderSyncRequest { + private String site; + private String userName; + private List orderList; + } + + /** + * 工单和Site信息 + */ + @lombok.Data + public static class OrderSiteItem { + private String orderNo; + private String site; + } +} diff --git a/src/main/java/com/gaotao/modules/shopOrder/dao/WorkOrderDetailsAllocMapper.java b/src/main/java/com/gaotao/modules/shopOrder/dao/WorkOrderDetailsAllocMapper.java new file mode 100644 index 0000000..9f942d9 --- /dev/null +++ b/src/main/java/com/gaotao/modules/shopOrder/dao/WorkOrderDetailsAllocMapper.java @@ -0,0 +1,56 @@ +package com.gaotao.modules.shopOrder.dao; + +import com.gaotao.modules.shopOrder.entity.SearchWorkOrderDetailsAlloc; +import com.gaotao.modules.shopOrder.entity.UspWorkOrderAllocData; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import java.util.Date; +import java.util.List; + +/** + * 工单明细数据汇总Mapper + */ +@Mapper +@Repository +public interface WorkOrderDetailsAllocMapper { + + /** + * 分页查询工单明细汇总主信息 + */ + List searchWorkOrderDetailsForAlloc(@Param("query") SearchWorkOrderDetailsAlloc query); + + /** + * 根据allocType查询工单汇总数据 + */ + List selectByAllocType(UspWorkOrderAllocData data); + + /** + * 查询未传输的数据(产量未传输或工时未传输) + */ + List selectUnSyncedData(UspWorkOrderAllocData data); + + /** + * 更新SFDC表的synced_code和synced_flag + */ + void updateSfdcSyncedCode(@Param("site") String site, + @Param("orderNo") String orderNo, + @Param("batchNo") String batchNo, + @Param("syncedCode") String syncedCode); + + /** + * 更新UspWorkOrderAlloc的同步异常信息 + */ + void updateAllocSyncedError(@Param("site") String site, + @Param("orderNo") String orderNo, + @Param("rowNo") String rowNo, + @Param("syncedDate") Date syncedDate, + @Param("syncedMes") String syncedMes); + + /** + * 更新UspWorkOrderAlloc的同步成功信息 + */ + void updateAllocSyncedSuccess(@Param("site") String site, + @Param("orderNo") String orderNo); +} diff --git a/src/main/java/com/gaotao/modules/shopOrder/entity/SearchWorkOrderDetailsAlloc.java b/src/main/java/com/gaotao/modules/shopOrder/entity/SearchWorkOrderDetailsAlloc.java new file mode 100644 index 0000000..3c6b405 --- /dev/null +++ b/src/main/java/com/gaotao/modules/shopOrder/entity/SearchWorkOrderDetailsAlloc.java @@ -0,0 +1,90 @@ +package com.gaotao.modules.shopOrder.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gaotao.common.utils.QueryPage; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 工单明细数据汇总查询与列表实体 + */ +@Data +@EqualsAndHashCode(callSuper=false) +public class SearchWorkOrderDetailsAlloc extends QueryPage { + + private String site; + private String orderNo; + private String orderType; + private String seqNo; + private String partNo; + private String partDescription; + private String batchNo; + private String userName; + private String workCenterNo; + private String user; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date date1; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date date2; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date date3; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date date4; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date finishDate1; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date finishDate2; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date reportDate1; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date reportDate2; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createDate; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date planFinishTime; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date finishTime; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date sScheduledDate; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date closedDate; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date reportDate; + + private String scheduledShiftNo; + private String operatorId; + + private BigDecimal lotSize; + private BigDecimal totalReportQty; + private BigDecimal totalApproveQty; + private BigDecimal defectQty; + private BigDecimal totalSetupTime; + private BigDecimal totalManfTime; + private BigDecimal totalDownTime; +} diff --git a/src/main/java/com/gaotao/modules/shopOrder/service/Impl/WorkOrderDetailsAllocServiceImpl.java b/src/main/java/com/gaotao/modules/shopOrder/service/Impl/WorkOrderDetailsAllocServiceImpl.java new file mode 100644 index 0000000..08724c7 --- /dev/null +++ b/src/main/java/com/gaotao/modules/shopOrder/service/Impl/WorkOrderDetailsAllocServiceImpl.java @@ -0,0 +1,317 @@ +package com.gaotao.modules.shopOrder.service.Impl; + +import com.alibaba.fastjson.JSON; +import com.gaotao.common.utils.PageUtils; +import com.gaotao.modules.pda.utils.ResponseData; +import com.gaotao.modules.pms.util.HttpClientUtil; +import com.gaotao.modules.report.dao.ProcedureDao; +import com.gaotao.modules.shopOrder.controller.WorkOrderDetailsAllocController.OrderSiteItem; +import com.gaotao.modules.shopOrder.dao.WorkOrderDetailsAllocMapper; +import com.gaotao.modules.shopOrder.entity.SearchWorkOrderDetailsAlloc; +import com.gaotao.modules.shopOrder.entity.UspWorkOrderAllocData; +import com.gaotao.modules.shopOrder.entity.dto.U8WorkHourRequestDto; +import com.gaotao.modules.shopOrder.entity.dto.U8WorkHourResponseDto; +import com.gaotao.modules.shopOrder.service.WorkOrderDetailsAllocService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 工单明细数据汇总服务实现类 + */ +@Slf4j +@Service +public class WorkOrderDetailsAllocServiceImpl implements WorkOrderDetailsAllocService { + + @Autowired + private WorkOrderDetailsAllocMapper workOrderDetailsAllocMapper; + + @Autowired + private ProcedureDao procedureDao; + + /** + * U8接口地址,从配置文件读取 + */ + @Value("${u8.workhour.add.url:}") + private String u8WorkHourAddUrl; + + @Override + public PageUtils searchWorkOrderDetailsForAlloc(SearchWorkOrderDetailsAlloc query) { + int pageSize = query.getLimit() > 0 ? query.getLimit() : 20; + int offset = query.getPage(); + int currPage = offset / pageSize + 1; + + List list = workOrderDetailsAllocMapper.searchWorkOrderDetailsForAlloc(query); + + int total = list.size(); + int fromIndex = offset; + int toIndex = Math.min(fromIndex + pageSize, total); + + List pageList; + if (fromIndex < total) { + pageList = list.subList(fromIndex, toIndex); + } else { + pageList = new ArrayList<>(); + } + + return new PageUtils(pageList, total, pageSize, currPage); + } + + @Override + public List selectByAllocType(UspWorkOrderAllocData data) { + return workOrderDetailsAllocMapper.selectByAllocType(data); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public ResponseData executeWorkOrderDetailsAlloc(SearchWorkOrderDetailsAlloc query) { + ResponseData responseData = new ResponseData(); + try { + log.info("开始执行工单明细数据汇总"); + + List params = new ArrayList<>(); + params.add(defaultString(query.getSite())); + params.add(defaultString(query.getOrderNo())); + params.add(defaultString(query.getSeqNo())); + params.add(formatDateParam(query.getDate1())); + params.add(formatDateParam(query.getDate2())); + params.add(formatDateParam(query.getDate3())); + params.add(formatDateParam(query.getDate4())); + params.add(formatDateParam(query.getFinishDate1())); + params.add(formatDateParam(query.getFinishDate2())); + params.add(formatDateParam(query.getReportDate1())); + params.add(formatDateParam(query.getReportDate2())); + params.add(defaultString(query.getUserName())); + params.add(defaultString(query.getWorkCenterNo())); + + List> resultList = procedureDao.getProcedureData("UspInsertWorkOrderDetailsAlloc", params); + + String resultMsg = "工单明细数据汇总完成"; + if (resultList != null && !resultList.isEmpty()) { + String code = String.valueOf(resultList.get(0).get("resultCode")); + if ("400".equalsIgnoreCase(code)) { + String msg = String.valueOf(resultList.get(0).get("resultMsg")); + responseData.setCode("500"); + responseData.setSuccess(false); + responseData.setMsg("工单明细数据汇总失败: " + msg); + return responseData; + } + if (resultList.get(0).get("resultMsg") != null) { + resultMsg = String.valueOf(resultList.get(0).get("resultMsg")); + } + } + + responseData.setCode("200"); + responseData.setSuccess(true); + responseData.setMsg(resultMsg); + log.info("工单明细数据汇总成功:{}", resultMsg); + } catch (Exception e) { + log.error("执行工单明细数据汇总时发生异常", e); + responseData.setCode("500"); + responseData.setSuccess(false); + responseData.setMsg("执行工单明细数据汇总时发生异常: " + e.getMessage()); + } + return responseData; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public ResponseData executeWorkOrderSync(String site, String userName, List orderList) { + ResponseData responseData = new ResponseData(); + try { + log.info("开始执行工单数据回传"); + + // 1. 查询未传输的数据 + List unSyncedList = new ArrayList<>(); + if (orderList != null && !orderList.isEmpty()) { + // 有选中行时,按每行的site和orderNo查询 + for (OrderSiteItem item : orderList) { + UspWorkOrderAllocData queryData = new UspWorkOrderAllocData(); + queryData.setSite(item.getSite()); + queryData.setOrderNo(item.getOrderNo()); + List itemList = workOrderDetailsAllocMapper.selectUnSyncedData(queryData); + if (itemList != null) { + unSyncedList.addAll(itemList); + } + } + } else { + // 没有选中行时,使用当前用户可见工厂查询 + UspWorkOrderAllocData queryData = new UspWorkOrderAllocData(); + queryData.setCurrentUser(userName); + unSyncedList = workOrderDetailsAllocMapper.selectUnSyncedData(queryData); + } + + if (unSyncedList == null || unSyncedList.isEmpty()) { + responseData.setCode("200"); + responseData.setSuccess(true); + responseData.setMsg("没有需要回传的数据"); + return responseData; + } + + log.info("查询到{}条待回传数据", unSyncedList.size()); + + int successCount = 0; + int failCount = 0; + StringBuilder errorMessages = new StringBuilder(); + + // 2. 按照erp_orderNo和erp_orderLineNo分组 + Map> groupedData = unSyncedList.stream() + .collect(Collectors.groupingBy(item -> + item.getErpOrderNo() + "_" + item.getErpOrderLineNo() + "_" + + (item.getAllocDate() != null ? item.getAllocDate() : ""))); + + // 3. 逐组调用U8接口 + for (Map.Entry> entry : groupedData.entrySet()) { + List groupItems = entry.getValue(); + if (groupItems.isEmpty()) { + continue; + } + + UspWorkOrderAllocData firstItem = groupItems.get(0); + + try { + // 构建U8请求参数 + U8WorkHourRequestDto requestDto = new U8WorkHourRequestDto(); + requestDto.setMocode(firstItem.getErpOrderNo() != null ? firstItem.getErpOrderNo() : ""); + requestDto.setIrowNo(firstItem.getErpOrderLineNo() != null ? firstItem.getErpOrderLineNo() : ""); + if (firstItem.getAllocDate() != null) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + requestDto.setDDate(sdf.format(firstItem.getAllocDate())); + } else { + requestDto.setDDate(""); + } + + List detailList = new ArrayList<>(); + for (UspWorkOrderAllocData item : groupItems) { + U8WorkHourRequestDto.DetailItem detailItem = new U8WorkHourRequestDto.DetailItem(); + detailItem.setMesIrowNo(item.getRowNo() != null ? item.getRowNo() : ""); + detailItem.setSortSeq(item.getItemNo() != null ? item.getItemNo() : ""); + detailItem.setEqId(""); + detailItem.setDutyClassCode(""); + detailItem.setEmployCode(item.getOperator() != null ? item.getOperator() : ""); + detailItem.setQualifiedQty(item.getAllocApproveQty() != null ? String.valueOf(item.getAllocApproveQty()) : ""); + detailItem.setRefusedQty(""); + detailItem.setScrapQty(item.getAllocScrapQty() != null ? String.valueOf(item.getAllocScrapQty()) : ""); + + // 计算工时:调机时长 + 制造时长 + BigDecimal workHr = BigDecimal.ZERO; + if (item.getAllocSetupTime() != null) { + workHr = workHr.add(item.getAllocSetupTime()); + } + if (item.getAllocManfTime() != null) { + workHr = workHr.add(item.getAllocManfTime()); + } + detailItem.setWorkHr(workHr.compareTo(BigDecimal.ZERO) == 0 ? "0" : workHr.toString()); + + detailList.add(detailItem); + } + requestDto.setDetailList(detailList); + + // 调用U8接口 + log.info("调用U8接口,请求参数: {}", JSON.toJSONString(requestDto)); + com.gaotao.modules.pms.util.ResponseData httpResponse = + HttpClientUtil.doPostByRaw(u8WorkHourAddUrl, requestDto); + + if (httpResponse.isSuccess()) { + // 解析响应 + U8WorkHourResponseDto u8Response = JSON.parseObject(httpResponse.getMsg(), U8WorkHourResponseDto.class); + + if ("success".equalsIgnoreCase(u8Response.getFlag())) { + // 接口调用成功,更新UspWorkOrderAlloc同步成功信息 + for (UspWorkOrderAllocData item : groupItems) { + workOrderDetailsAllocMapper.updateAllocSyncedSuccess( + item.getSite(), + item.getOrderNo()); + } + successCount += groupItems.size(); + log.info("U8接口调用成功,返回单号: {}", u8Response.getU8CCode()); + } else { + // 接口返回错误 + String errMsg = u8Response.getErrMsg(); + for (UspWorkOrderAllocData item : groupItems) { + workOrderDetailsAllocMapper.updateAllocSyncedError( + item.getSite(), + item.getOrderNo(), + item.getRowNo(), + new Date(), + errMsg); + } + failCount += groupItems.size(); + errorMessages.append("订单").append(firstItem.getErpOrderNo()) + .append("回传失败: ").append(errMsg).append("; "); + log.error("U8接口返回错误: {}", errMsg); + } + } else { + // HTTP请求失败 + String errMsg = "HTTP请求失败: " + httpResponse.getMsg(); + for (UspWorkOrderAllocData item : groupItems) { + workOrderDetailsAllocMapper.updateAllocSyncedError( + item.getSite(), + item.getOrderNo(), + item.getRowNo(), + new Date(), + errMsg); + } + failCount += groupItems.size(); + errorMessages.append("订单").append(firstItem.getErpOrderNo()) + .append("回传失败: ").append(errMsg).append("; "); + log.error("调用U8接口HTTP请求失败: {}", httpResponse.getMsg()); + } + } catch (Exception e) { + // 异常处理 + String errMsg = "处理异常: " + e.getMessage(); + for (UspWorkOrderAllocData item : groupItems) { + workOrderDetailsAllocMapper.updateAllocSyncedError( + item.getSite(), + item.getOrderNo(), + item.getRowNo(), + new Date(), + errMsg); + } + failCount += groupItems.size(); + errorMessages.append("订单").append(firstItem.getErpOrderNo()) + .append("回传异常: ").append(e.getMessage()).append("; "); + log.error("工单数据回传处理异常,订单号: {}", firstItem.getErpOrderNo(), e); + } + } + + // 返回结果 + String resultMsg = String.format("工单数据回传完成,成功%d条,失败%d条", successCount, failCount); + if (failCount > 0) { + resultMsg += "。失败详情: " + errorMessages; + } + + responseData.setCode(failCount > 0 ? "500" : "200"); + responseData.setSuccess(failCount == 0); + responseData.setMsg(resultMsg); + + } catch (Exception e) { + log.error("执行工单数据回传时发生异常", e); + responseData.setCode("500"); + responseData.setSuccess(false); + responseData.setMsg("执行工单数据回传时发生异常: " + e.getMessage()); + } + return responseData; + } + + private String formatDateParam(Date date) { + if (date == null) { + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd").format(date); + } + + private String defaultString(String value) { + return value == null ? "" : value; + } +} diff --git a/src/main/java/com/gaotao/modules/shopOrder/service/WorkOrderDetailsAllocService.java b/src/main/java/com/gaotao/modules/shopOrder/service/WorkOrderDetailsAllocService.java new file mode 100644 index 0000000..7ac43b3 --- /dev/null +++ b/src/main/java/com/gaotao/modules/shopOrder/service/WorkOrderDetailsAllocService.java @@ -0,0 +1,35 @@ +package com.gaotao.modules.shopOrder.service; + +import com.gaotao.common.utils.PageUtils; +import com.gaotao.modules.pda.utils.ResponseData; +import com.gaotao.modules.shopOrder.controller.WorkOrderDetailsAllocController.OrderSiteItem; +import com.gaotao.modules.shopOrder.entity.SearchWorkOrderDetailsAlloc; +import com.gaotao.modules.shopOrder.entity.UspWorkOrderAllocData; + +import java.util.List; + +/** + * 工单明细数据汇总服务接口 + */ +public interface WorkOrderDetailsAllocService { + + /** + * 分页查询工单明细汇总主信息 + */ + PageUtils searchWorkOrderDetailsForAlloc(SearchWorkOrderDetailsAlloc query); + + /** + * 根据allocType查询工单汇总数据 + */ + List selectByAllocType(UspWorkOrderAllocData data); + + /** + * 执行工单明细数据汇总(调用存储过程) + */ + ResponseData executeWorkOrderDetailsAlloc(SearchWorkOrderDetailsAlloc query); + + /** + * 执行工单数据回传(调用U8接口) + */ + ResponseData executeWorkOrderSync(String site, String userName, List orderList); +} diff --git a/src/main/resources/mapper/boxManage/BoxForNotificationMapper.xml b/src/main/resources/mapper/boxManage/BoxForNotificationMapper.xml index ca1b47c..fd05060 100644 --- a/src/main/resources/mapper/boxManage/BoxForNotificationMapper.xml +++ b/src/main/resources/mapper/boxManage/BoxForNotificationMapper.xml @@ -368,7 +368,7 @@ AND a.part_no = b.PartNo WHERE a.site = #{site} - AND a.parent_roll_no = #{rollNo} + AND (a.parent_roll_no = #{rollNo} or roll_no = #{rollNo}) AND a.part_no = #{partNo} diff --git a/src/main/resources/mapper/inboundNotification/InboundNotificationHeadMapper.xml b/src/main/resources/mapper/inboundNotification/InboundNotificationHeadMapper.xml index d1d93f1..3b5f0ae 100644 --- a/src/main/resources/mapper/inboundNotification/InboundNotificationHeadMapper.xml +++ b/src/main/resources/mapper/inboundNotification/InboundNotificationHeadMapper.xml @@ -219,6 +219,7 @@ UPDATE inbound_notification_head SET order_status = #{orderStatus}, close_flag = 'Y', + inspection_flag = 'N', closed_by = #{closedBy}, closed_date = GETDATE() WHERE site = #{site} AND bu_no = #{buNo} AND order_no = #{orderNo} AND close_flag = 'N' diff --git a/src/main/resources/mapper/shopOrder/WorkOrderDetailsAllocMapper.xml b/src/main/resources/mapper/shopOrder/WorkOrderDetailsAllocMapper.xml new file mode 100644 index 0000000..d3d21f1 --- /dev/null +++ b/src/main/resources/mapper/shopOrder/WorkOrderDetailsAllocMapper.xml @@ -0,0 +1,218 @@ + + + + + + and A.site in (Select Site from AccessSite where upper(UserID)=#{query.user}) + + AND A.Site like '%' + #{query.site} + '%' + + + AND A.OrderNo like '%' + #{query.orderNo} + '%' + + + AND A.OrderType like '%' + #{query.orderType} + '%' + + + AND B.SeqNo like '%' + #{query.seqNo} + '%' + + + AND A.PartNo like '%' + #{query.partNo} + '%' + + + AND P.PartDescription like '%' + #{query.partDescription} + '%' + + + AND C.OperatorID like '%' + #{query.userName} + '%' + + + AND C.WorkCenterNo like '%' + #{query.workCenterNo} + '%' + + + AND A.create_date >= #{query.date1} + + + AND dateadd(DAY, 1, #{query.date2}) > A.create_date + + + AND B.PlanFinishTime >= #{query.date3} + + + AND dateadd(DAY, 1, #{query.date4}) > B.PlanFinishTime + + + AND B.finishtime >= #{query.finishDate1} + + + AND dateadd(DAY, 1, #{query.finishDate2}) > B.finishtime + + + AND C.ReportDate >= #{query.reportDate1} + + + AND dateadd(DAY, 1, #{query.reportDate2}) > C.ReportDate + + + + + + + + + + + + + + + UPDATE SFDC + SET synced_code = #{syncedCode}, + synced_flag = 'Y' + WHERE Site = #{site} + AND OrderNo = #{orderNo} + AND ItemNo = #{batchNo} + + + + + UPDATE UspWorkOrderAlloc + SET synced_date = GETDATE(), + synced_mes = #{syncedMes} + WHERE site = #{site} + AND orderNo = #{orderNo} + AND rowNo = #{rowNo} + + + + + UPDATE UspWorkOrderAlloc + SET + allocType = CASE WHEN allocType = '产量未传输' THEN '产量已传输' WHEN allocType = '工时未传输' THEN '工时已传输' END, + synced_date = GETDATE(), + synced_mes = '操作成功' + WHERE site = #{site} + AND orderNo = #{orderNo} + AND allocType IN ('产量未传输', '工时未传输') + + +