diff --git a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/RemoteMesService.java b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/RemoteMesService.java index c661ba31..b3e0174a 100644 --- a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/RemoteMesService.java +++ b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/RemoteMesService.java @@ -223,4 +223,15 @@ public interface RemoteMesService { */ @GetMapping("/purchaseOrder/selectPurchaseOrderJoinSupplierProjectByOrderId/{purchaseOrderId}") public R selectPurchaseOrderJoinSupplierProjectByOrderId(@PathVariable("purchaseOrderId") Long purchaseOrderId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + + /** + * 定时根据完成的工单明细生成完成记录 + * + * @param source 请求来源 + * @return 结果 + */ + @PostMapping("/productplan/generateProduceStatisticsDetail") + public R generateProduceStatisticsDetail(@RequestHeader(SecurityConstants.FROM_SOURCE) String source); + } diff --git a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesPurchaseOrder.java b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesPurchaseOrder.java index a42835f8..9c48597c 100644 --- a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesPurchaseOrder.java +++ b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/domain/MesPurchaseOrder.java @@ -297,6 +297,8 @@ public class MesPurchaseOrder extends BaseEntity { private Long materialBomId; + private String orderStatusStr; + public Long getSerialNumber() { return serialNumber; @@ -770,6 +772,14 @@ public class MesPurchaseOrder extends BaseEntity { this.materialBomId = materialBomId; } + public String getOrderStatusStr() { + return orderStatusStr; + } + + public void setOrderStatusStr(String orderStatusStr) { + this.orderStatusStr = orderStatusStr; + } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) diff --git a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/factory/RemoteMesFallbackFactory.java b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/factory/RemoteMesFallbackFactory.java index 61be6da4..db7d710c 100644 --- a/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/factory/RemoteMesFallbackFactory.java +++ b/hw-api/hw-api-mes/src/main/java/com/hw/mes/api/factory/RemoteMesFallbackFactory.java @@ -121,6 +121,12 @@ public class RemoteMesFallbackFactory implements FallbackFactory selectPurchaseOrderJoinSupplierProjectByOrderId(Long purchaseOrderId, String source) { return R.fail("根据采购订单ID获取采购订单信息失败:" + throwable.getMessage()); } + + @Override + public R generateProduceStatisticsDetail(String source) { + return R.fail("定时生成完成的生产明细失败:" + throwable.getMessage()); + + } }; } } diff --git a/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/MesConstants.java b/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/MesConstants.java index 8ac47c6a..a59ee5a2 100644 --- a/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/MesConstants.java +++ b/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/MesConstants.java @@ -236,6 +236,8 @@ public class MesConstants { */ public static final String MES_PURCHASE_ORDER_STATUS_TOPURCHASE = "1";//待采购 + public static final String MES_PURCHASE_ORDER_STATUS_PURCHASEING = "2";//采购中 + public static final String MES_PURCHASE_ORDER_STATUS_PURCHASE_COMPLETE = "3";//采购完成 public static final String MES_PURCHASE_ORDER_STATUS_AUTO_OUTSTOCK_COMPLETE = "4";//自动出库完成 @@ -254,16 +256,21 @@ public class MesConstants { * 销售订单状态 */ public static final String MES_SALE_ORDER_IS_RELEASE_TO_PUBLISH = "0";//待发布工单 + public static final String MES_SALE_ORDER_IS_RELEASE_PUBLISHED = "1";//已发布工单 + public static final String MES_SALE_ORDER_IS_RELEASE_BEGIN = "2";//已开始 + public static final String MES_SALE_ORDER_IS_RELEASE_FINISH = "3";//已完成 /** * 采购订单分类:1ERP同步,2虚拟采购订单 */ + public static final String MES_PURCHASE_ORDER_CLASSFICATION_ERP= "1"; //ERP同步采购订单 public static final String MES_PURCHASE_ORDER_CLASSFICATION_VIRTUAL= "2"; //虚拟采购订单 /** * 销售订单分类:1ERP同步,2虚拟采购订单 */ + public static final String MES_SALE_ORDER_CLASSFICATION_ERP= "1"; //ERP同步销售订单 public static final String MES_SALE_ORDER_CLASSFICATION_VIRTUAL= "2"; //虚拟销售订单 @@ -317,4 +324,8 @@ public class MesConstants { /**生产告警信息处理状态*/ public static final String MES_ALARM_INFO_HANDLE_STATUS_NO= "0";//未处理 public static final String MES_ALARM_INFO_HANDLE_STATUS_YES= "1";//已处理 + + /**生产工单派工类型*/ + public static final String MES_PRODUCT_ORDER_DISPATCH_TYPE_PRODUCE="1";//产线 + public static final String MES_PRODUCT_ORDER_DISPATCH_TYPE_ROUTE="2";//工艺路线 } diff --git a/hw-common/hw-common-log/src/main/java/com/hw/common/log/enums/BusinessType.java b/hw-common/hw-common-log/src/main/java/com/hw/common/log/enums/BusinessType.java index 8c818d67..de64c8e8 100644 --- a/hw-common/hw-common-log/src/main/java/com/hw/common/log/enums/BusinessType.java +++ b/hw-common/hw-common-log/src/main/java/com/hw/common/log/enums/BusinessType.java @@ -168,4 +168,9 @@ public enum BusinessType * 使用 */ USE, + + /** + * 超时 + */ + OVERTIME, } diff --git a/hw-modules/hw-job/src/main/java/com/hw/job/task/RyTask.java b/hw-modules/hw-job/src/main/java/com/hw/job/task/RyTask.java index 65aa741c..4f47270a 100644 --- a/hw-modules/hw-job/src/main/java/com/hw/job/task/RyTask.java +++ b/hw-modules/hw-job/src/main/java/com/hw/job/task/RyTask.java @@ -152,10 +152,22 @@ public class RyTask } + /** + * 物料自动出库 + * @param dateStr + */ public void autoOutstock(String dateStr){ if (StringUtils.isEmpty(dateStr)) { dateStr = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, new Date()); } remoteMesService.autoOutstockLastPurchaseOrders(dateStr,SecurityConstants.INNER); } + + + /** + * 定时根据完成的工单明细生成完成记录 + */ + public void generateProduceStatisticsDetail(){ + remoteMesService.generateProduceStatisticsDetail(SecurityConstants.INNER); + } } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/board/controller/FifthMesBorderController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/board/controller/FifthMesBorderController.java index e7a0555e..f6ea6b49 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/board/controller/FifthMesBorderController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/board/controller/FifthMesBorderController.java @@ -28,5 +28,27 @@ public class FifthMesBorderController { public AjaxResult workOrderProgress(){ return AjaxResult.success(fifthMesBorderService.workOrderProgress()); } + /** + * 生产合格 + */ + @GetMapping("/productionQualified") + public AjaxResult productionQualified(){ + return AjaxResult.success(fifthMesBorderService.productionQualified()); + } + + /** + * 工单生产时长 + */ + @GetMapping("/orderTime") + public AjaxResult orderTime(){ + return AjaxResult.success(fifthMesBorderService.orderTime()); + } + /** + * 工位生产效率 + */ + @GetMapping("/orderEfficiency") + public AjaxResult orderEfficiency(){ + return AjaxResult.success(fifthMesBorderService.orderEfficiency()); + } } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/board/controller/ThirdMesBorderController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/board/controller/ThirdMesBorderController.java index c31a9982..ae49d137 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/board/controller/ThirdMesBorderController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/board/controller/ThirdMesBorderController.java @@ -59,4 +59,13 @@ public class ThirdMesBorderController { return AjaxResult.success(thirdMesBorderService.rawInstock()); } + /** + * 获取三楼风机状态 + * @return + */ + @GetMapping("/getLineStatus") + public AjaxResult getLineStatus(){ + return AjaxResult.success(thirdMesBorderService.getLineStatus()); + } + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/FifthMesBorderService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/FifthMesBorderService.java index 5aaa1a3a..b60acb53 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/FifthMesBorderService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/FifthMesBorderService.java @@ -1,7 +1,9 @@ package com.hw.mes.board.service; +import com.hw.mes.domain.MesProduceStatisticsDetail; import com.hw.mes.domain.MesProductOrder; +import com.hw.mes.domain.MesProductionQualified; import java.util.List; import java.util.Map; @@ -11,4 +13,10 @@ public interface FifthMesBorderService { MesProductOrder productProgress(); List workOrderProgress(); + + List productionQualified(); + + List orderTime(); + + List orderEfficiency(); } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/SecondMesBorderService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/SecondMesBorderService.java index 0de0c282..a847b373 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/SecondMesBorderService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/SecondMesBorderService.java @@ -16,7 +16,7 @@ public interface SecondMesBorderService { MesProductOrder selectLatestWorkOrder(); - Boolean getLineStatus(); + String getLineStatus(); List> getHourProduction(); diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/ThirdMesBorderService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/ThirdMesBorderService.java index 9daabc63..cefd4ab7 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/ThirdMesBorderService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/ThirdMesBorderService.java @@ -19,4 +19,6 @@ public interface ThirdMesBorderService{ List productCompleteCount(); List rawInstock(); + + String getLineStatus(); } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/impl/FifthMesBoardServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/impl/FifthMesBoardServiceImpl.java index b5da7a7f..432315ff 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/impl/FifthMesBoardServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/impl/FifthMesBoardServiceImpl.java @@ -2,8 +2,11 @@ package com.hw.mes.board.service.impl; import com.hw.mes.board.service.FifthMesBorderService; +import com.hw.mes.domain.MesProduceStatisticsDetail; import com.hw.mes.domain.MesProductOrder; +import com.hw.mes.domain.MesProductionQualified; import com.hw.mes.mapper.MesProductOrderMapper; +import com.hw.mes.mapper.MesProductionQualifiedDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -14,6 +17,8 @@ import java.util.List; public class FifthMesBoardServiceImpl implements FifthMesBorderService { @Autowired private MesProductOrderMapper mesProductOrderMapper; + @Autowired + private MesProductionQualifiedDao mesProductionQualifiedDao; @Override public MesProductOrder productProgress() { @@ -24,4 +29,19 @@ public class FifthMesBoardServiceImpl implements FifthMesBorderService { public List workOrderProgress() { return mesProductOrderMapper.selectFifthWorkorder(); } + + @Override + public List productionQualified() { + return mesProductionQualifiedDao.productionQualified(); + } + + @Override + public List orderEfficiency() { + return mesProductOrderMapper.orderEfficiency(); + } + + @Override + public List orderTime() { + return mesProductOrderMapper.orderTime(); + } } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/impl/SecondMesBoardServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/impl/SecondMesBoardServiceImpl.java index 4689e3a4..fdbc667f 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/impl/SecondMesBoardServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/impl/SecondMesBoardServiceImpl.java @@ -29,7 +29,7 @@ public class SecondMesBoardServiceImpl implements SecondMesBorderService { } @Override - public Boolean getLineStatus() { + public String getLineStatus() { return mesProductOrderMapper.getLineStatus(); } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/impl/ThirdMesBorderServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/impl/ThirdMesBorderServiceImpl.java index 5dbea4df..964c2698 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/impl/ThirdMesBorderServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/board/service/impl/ThirdMesBorderServiceImpl.java @@ -46,6 +46,11 @@ public class ThirdMesBorderServiceImpl implements ThirdMesBorderService { } + @Override + public String getLineStatus() { + return mesProductOrderMapper.getLineThirdStatus(); + } + @Override public List rawInstock() { List list = mesProductOrderMapper.rawInstock(); diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesImportController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesImportController.java index 22442120..86f625c4 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesImportController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesImportController.java @@ -78,4 +78,22 @@ public class MesImportController extends BaseController { return success(message); } + + + + /** + * 提资单BOM信息excel生成物料、销售订单和采购订单(测试用) + * @param file + * @param updateSupport + * @return + */ + @Log(title = "提资单BOM信息", businessType = BusinessType.IMPORT) + @PostMapping(("/raiseCapitalImportDataTest")) + public AjaxResult raiseCapitalImportDataTest(MultipartFile file, boolean updateSupport) + { + String operName = SecurityUtils.getUsername(); + String message = mesImportService.raiseCapitalImportDataTest(file, updateSupport, operName); + return success(message); + } + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProduceStatisticsDetailController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProduceStatisticsDetailController.java new file mode 100644 index 00000000..29fdd4d8 --- /dev/null +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProduceStatisticsDetailController.java @@ -0,0 +1,105 @@ +package com.hw.mes.controller; + +import java.util.List; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.hw.common.log.annotation.Log; +import com.hw.common.log.enums.BusinessType; +import com.hw.common.security.annotation.RequiresPermissions; +import com.hw.mes.domain.MesProduceStatisticsDetail; +import com.hw.mes.service.IMesProduceStatisticsDetailService; +import com.hw.common.core.web.controller.BaseController; +import com.hw.common.core.web.domain.AjaxResult; +import com.hw.common.core.utils.poi.ExcelUtil; +import com.hw.common.core.web.page.TableDataInfo; + +/** + * 生产完成明细Controller + * + * @author xins + * @date 2024-11-26 + */ +@RestController +@RequestMapping("/produceStatisticsDetail") +public class MesProduceStatisticsDetailController extends BaseController +{ + @Autowired + private IMesProduceStatisticsDetailService mesProduceStatisticsDetailService; + + /** + * 查询生产完成明细列表 + */ + @RequiresPermissions("mes:produceStatisticsDetail:list") + @GetMapping("/list") + public TableDataInfo list(MesProduceStatisticsDetail mesProduceStatisticsDetail) + { + startPage(); + List list = mesProduceStatisticsDetailService.selectMesProduceStatisticsDetailJoinList(mesProduceStatisticsDetail); + return getDataTable(list); + } + + /** + * 导出生产完成明细列表 + */ + @RequiresPermissions("mes:produceStatisticsDetail:export") + @Log(title = "生产完成明细", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, MesProduceStatisticsDetail mesProduceStatisticsDetail) + { + List list = mesProduceStatisticsDetailService.selectMesProduceStatisticsDetailList(mesProduceStatisticsDetail); + ExcelUtil util = new ExcelUtil(MesProduceStatisticsDetail.class); + util.exportExcel(response, list, "生产完成明细数据"); + } + + /** + * 获取生产完成明细详细信息 + */ + @RequiresPermissions("mes:produceStatisticsDetail:query") + @GetMapping(value = "/{statisticsDetailId}") + public AjaxResult getInfo(@PathVariable("statisticsDetailId") Long statisticsDetailId) + { + return success(mesProduceStatisticsDetailService.selectMesProduceStatisticsDetailByStatisticsDetailId(statisticsDetailId)); + } + + /** + * 新增生产完成明细 + */ + @RequiresPermissions("mes:produceStatisticsDetail:add") + @Log(title = "生产完成明细", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody MesProduceStatisticsDetail mesProduceStatisticsDetail) + { + return toAjax(mesProduceStatisticsDetailService.insertMesProduceStatisticsDetail(mesProduceStatisticsDetail)); + } + + /** + * 修改生产完成明细 + */ + @RequiresPermissions("mes:produceStatisticsDetail:edit") + @Log(title = "生产完成明细", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody MesProduceStatisticsDetail mesProduceStatisticsDetail) + { + return toAjax(mesProduceStatisticsDetailService.updateMesProduceStatisticsDetail(mesProduceStatisticsDetail)); + } + + /** + * 删除生产完成明细 + */ + @RequiresPermissions("mes:produceStatisticsDetail:remove") + @Log(title = "生产完成明细", businessType = BusinessType.DELETE) + @DeleteMapping("/{statisticsDetailIds}") + public AjaxResult remove(@PathVariable Long[] statisticsDetailIds) + { + return toAjax(mesProduceStatisticsDetailService.deleteMesProduceStatisticsDetailByStatisticsDetailIds(statisticsDetailIds)); + } +} diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductOrderController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductOrderController.java index 6c951600..e210d3b7 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductOrderController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductOrderController.java @@ -3,6 +3,7 @@ package com.hw.mes.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; +import com.hw.common.core.domain.R; import com.hw.common.core.utils.StringUtils; import com.hw.common.security.utils.SecurityUtils; import com.hw.mes.domain.MesSaleOrder; @@ -217,4 +218,20 @@ public class MesProductOrderController extends BaseController { return toAjax(mesProductOrderService.productOrderContinue(mesProductOrder)); } + + /** + * 生成工单超时计算 + */ + @Log(title = "生产工单", businessType = BusinessType.OVERTIME) + @PostMapping("/productOrderOverTimeAlarm") +// @InnerAuth + public R productOrderOverTimeAlarm() { + try { + mesProductOrderService.productOrderOverTimeAlarm(); + return R.ok(); + } catch (Exception e) { + e.printStackTrace(); + return R.fail(e.getMessage()); + } + } } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductPlanController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductPlanController.java index 11166583..bc4eebc5 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductPlanController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesProductPlanController.java @@ -66,6 +66,17 @@ public class MesProductPlanController extends BaseController { return getDataTable(list); } + /** + * 查询生产派工列表 + */ + @RequiresPermissions("mes:productplan:list") + @GetMapping("/joinList") + public TableDataInfo joinList(MesProductPlan mesProductPlan) { + startPage(); + List list = mesProductPlanService.selectMesProductPlanJoinUserList(mesProductPlan); + return getDataTable(list); + } + /** * 查询生产派工List * diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesPurchaseOrderController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesPurchaseOrderController.java index 030b00bc..d84a26c8 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesPurchaseOrderController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesPurchaseOrderController.java @@ -288,4 +288,22 @@ public class MesPurchaseOrderController extends BaseController return R.ok(mesPurchaseOrder); } + + + /** + * 采购订单交货超时计算 + */ + @Log(title = "采购订单", businessType = BusinessType.OVERTIME) + @PostMapping("/purchaseOrderOverTimeAlarm") +// @InnerAuth + public R purchaseOrderOverTimeAlarm() { + try { + mesPurchaseOrderService.purchaseOrderOverTimeAlarm(); + return R.ok(); + } catch (Exception e) { + e.printStackTrace(); + return R.fail(e.getMessage()); + } + } + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesSaleOrderController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesSaleOrderController.java index 7125a83f..3ad829fb 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesSaleOrderController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesSaleOrderController.java @@ -186,4 +186,23 @@ public class MesSaleOrderController extends BaseController { List list = mesSaleOrderService.getRelateProductsBySaleOrderId(saleOrderId); return R.ok(list); } + + + + /** + * 销售订单交货超时计算 + */ + @Log(title = "销售订单", businessType = BusinessType.OVERTIME) + @PostMapping("/saleOrderOverTimeAlarm") +// @InnerAuth + public R saleOrderOverTimeAlarm() { + try { + mesSaleOrderService.saleOrderOverTimeAlarm(); + return R.ok(); + } catch (Exception e) { + e.printStackTrace(); + return R.fail(e.getMessage()); + } + } + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesProduceStatisticsDetail.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesProduceStatisticsDetail.java index d04737e3..97fdc643 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesProduceStatisticsDetail.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesProduceStatisticsDetail.java @@ -25,6 +25,10 @@ public class MesProduceStatisticsDetail extends BaseEntity @Excel(name = "生产工单ID") private Long productOrderId; + private String dispatchType; + + private Long dispatchId; + /** 销售订单ID */ @Excel(name = "销售订单ID") private Long saleOrderId; @@ -82,22 +86,22 @@ public class MesProduceStatisticsDetail extends BaseEntity private String processName; /** 计划开始时间 */ - @JsonFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "计划开始时间", width = 30, dateFormat = "yyyy-MM-dd") private Date planBeginTime; /** 计划结束时间 */ - @JsonFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "计划结束时间", width = 30, dateFormat = "yyyy-MM-dd") private Date planEndTime; /** 开始时间 */ - @JsonFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd") private Date realBeginTime; /** 完成时间 */ - @JsonFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd") private Date realEndTime; @@ -126,7 +130,24 @@ public class MesProduceStatisticsDetail extends BaseEntity { return productOrderId; } - public void setSaleOrderId(Long saleOrderId) + + public String getDispatchType() { + return dispatchType; + } + + public void setDispatchType(String dispatchType) { + this.dispatchType = dispatchType; + } + + public Long getDispatchId() { + return dispatchId; + } + + public void setDispatchId(Long dispatchId) { + this.dispatchId = dispatchId; + } + + public void setSaleOrderId(Long saleOrderId) { this.saleOrderId = saleOrderId; } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesProductOrder.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesProductOrder.java index 1c0672c8..a64a06fa 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesProductOrder.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesProductOrder.java @@ -252,10 +252,14 @@ public class MesProductOrder extends BaseEntity { */ private List planDateRange; + private String orderStatusStr; + private String overtimeFlag;//超时标识,用来查询使用 + public List getPlanDateRange() { return planDateRange; } + public void setPlanDateRange(List planDateRange) { this.planDateRange = planDateRange; } @@ -575,6 +579,22 @@ public class MesProductOrder extends BaseEntity { this.produceMaterialSpec = produceMaterialSpec; } + public String getOrderStatusStr() { + return orderStatusStr; + } + + public void setOrderStatusStr(String orderStatusStr) { + this.orderStatusStr = orderStatusStr; + } + + public String getOvertimeFlag() { + return overtimeFlag; + } + + public void setOvertimeFlag(String overtimeFlag) { + this.overtimeFlag = overtimeFlag; + } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesProductPlan.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesProductPlan.java index ee34dc8a..41bd3c33 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesProductPlan.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesProductPlan.java @@ -202,6 +202,9 @@ public class MesProductPlan extends BaseEntity private String materialClassfication; + private String dispatchType; + + private Long dispatchId; public Long getSaleOrderId() { return saleOrderId; @@ -608,6 +611,22 @@ public class MesProductPlan extends BaseEntity this.materialClassfication = materialClassfication; } + public String getDispatchType() { + return dispatchType; + } + + public void setDispatchType(String dispatchType) { + this.dispatchType = dispatchType; + } + + public Long getDispatchId() { + return dispatchId; + } + + public void setDispatchId(Long dispatchId) { + this.dispatchId = dispatchId; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrder.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrder.java index d850c445..82a550e7 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrder.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesSaleOrder.java @@ -201,6 +201,8 @@ public class MesSaleOrder extends BaseEntity { private String parentIds; + private String isReleaseStr; + public String getMaterialModel() { return materialModel; @@ -474,6 +476,14 @@ public class MesSaleOrder extends BaseEntity { this.parentIds = parentIds; } + public String getIsReleaseStr() { + return isReleaseStr; + } + + public void setIsReleaseStr(String isReleaseStr) { + this.isReleaseStr = isReleaseStr; + } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProduceStatisticsDetailMapper.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProduceStatisticsDetailMapper.java index a6e5e523..210141b7 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProduceStatisticsDetailMapper.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProduceStatisticsDetailMapper.java @@ -84,4 +84,13 @@ public interface MesProduceStatisticsDetailMapper * @return 结果 */ public int deleteMesProduceStatisticsDetailMaterialByStatisticsDetailId(Long statisticsDetailId); + + /** + * 查询生产统计明细列表,join material,process + * + * @param mesProduceStatisticsDetail 生产统计明细 + * @return 生产统计明细集合 + */ + public List selectMesProduceStatisticsDetailJoinList(MesProduceStatisticsDetail mesProduceStatisticsDetail); + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProductOrderMapper.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProductOrderMapper.java index 3c1cb85a..d3a93b21 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProductOrderMapper.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProductOrderMapper.java @@ -8,6 +8,7 @@ import java.util.Map; import com.hw.mes.board.domain.DmsRealtimeStatusHistory; import com.hw.mes.board.domain.RawAmount; import com.hw.mes.board.domain.RecordIotenvInstant; +import com.hw.mes.domain.MesProduceStatisticsDetail; import com.hw.mes.domain.MesProductOrder; import org.apache.ibatis.annotations.Mapper; @@ -20,6 +21,8 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface MesProductOrderMapper { + List orderEfficiency(); + /** * 查询生产工单 * @@ -97,7 +100,7 @@ public interface MesProductOrderMapper MesProductOrder selectLatestWorkOrder(); - Boolean getLineStatus(); + String getLineStatus(); List> getHourProduction(); @@ -122,4 +125,8 @@ public interface MesProductOrderMapper List> productAmount(); List thirdOrderPlan(); + + List orderTime(); + + String getLineThirdStatus(); } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProductPlanMapper.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProductPlanMapper.java index eca448bf..1c6c8db5 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProductPlanMapper.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProductPlanMapper.java @@ -153,5 +153,13 @@ public interface MesProductPlanMapper */ public MesProductPlan selectOnlyMesProductPlanByPlanId(Long planId); + /** + * 查询生产派工列表,Join user,material,process,productorder + * + * @param mesProductPlan 生产派工 + * @return 生产派工集合 + */ + public List selectMesProductPlanJoinUserList(MesProductPlan mesProductPlan); + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProductionQualifiedDao.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProductionQualifiedDao.java index 07e15ee0..9ff341e9 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProductionQualifiedDao.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesProductionQualifiedDao.java @@ -1,6 +1,7 @@ package com.hw.mes.mapper; import com.hw.mes.domain.MesProductionQualified; +import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.data.domain.Pageable; @@ -12,7 +13,9 @@ import java.util.List; * @author makejava * @since 2024-11-25 11:14:21 */ +@Mapper public interface MesProductionQualifiedDao { + List productionQualified(); /** * 通过ID查询单条数据 diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesImportService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesImportService.java index d1476a85..58d10273 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesImportService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesImportService.java @@ -1,6 +1,8 @@ package com.hw.mes.service; +import com.hw.common.core.exception.ServiceException; import com.hw.mes.domain.MesPurchaseRequisitionTemplate; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -41,4 +43,15 @@ public interface IMesImportService */ String raiseCapitalImportData(MultipartFile file, boolean updateSupport, String operName); + + + /** + * 提资单BOM信息excel生成物料、销售订单和采购订单(测试用) + * + * @param file + * @param updateSupport + * @param operName + * @return + */ + public String raiseCapitalImportDataTest(MultipartFile file, boolean updateSupport, String operName); } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProduceStatisticsDetailService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProduceStatisticsDetailService.java new file mode 100644 index 00000000..60266ff8 --- /dev/null +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProduceStatisticsDetailService.java @@ -0,0 +1,69 @@ +package com.hw.mes.service; + +import java.util.List; +import com.hw.mes.domain.MesProduceStatisticsDetail; + +/** + * 生产完成明细Service接口 + * + * @author xins + * @date 2024-11-26 + */ +public interface IMesProduceStatisticsDetailService +{ + /** + * 查询生产完成明细 + * + * @param statisticsDetailId 生产完成明细主键 + * @return 生产完成明细 + */ + public MesProduceStatisticsDetail selectMesProduceStatisticsDetailByStatisticsDetailId(Long statisticsDetailId); + + /** + * 查询生产完成明细列表 + * + * @param mesProduceStatisticsDetail 生产完成明细 + * @return 生产完成明细集合 + */ + public List selectMesProduceStatisticsDetailList(MesProduceStatisticsDetail mesProduceStatisticsDetail); + + /** + * 查询生产完成明细列表,join material,process + * + * @param mesProduceStatisticsDetail 生产完成明细 + * @return 生产完成明细 + */ + public List selectMesProduceStatisticsDetailJoinList(MesProduceStatisticsDetail mesProduceStatisticsDetail); + + /** + * 新增生产完成明细 + * + * @param mesProduceStatisticsDetail 生产完成明细 + * @return 结果 + */ + public int insertMesProduceStatisticsDetail(MesProduceStatisticsDetail mesProduceStatisticsDetail); + + /** + * 修改生产完成明细 + * + * @param mesProduceStatisticsDetail 生产完成明细 + * @return 结果 + */ + public int updateMesProduceStatisticsDetail(MesProduceStatisticsDetail mesProduceStatisticsDetail); + + /** + * 批量删除生产完成明细 + * + * @param statisticsDetailIds 需要删除的生产完成明细主键集合 + * @return 结果 + */ + public int deleteMesProduceStatisticsDetailByStatisticsDetailIds(Long[] statisticsDetailIds); + + /** + * 删除生产完成明细信息 + * + * @param statisticsDetailId 生产完成明细主键 + * @return 结果 + */ + public int deleteMesProduceStatisticsDetailByStatisticsDetailId(Long statisticsDetailId); +} diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductOrderService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductOrderService.java index 616a627f..4564e9d0 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductOrderService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductOrderService.java @@ -138,4 +138,9 @@ public interface IMesProductOrderService * @param mesProductOrder */ public List getMaterialUsages(MesProductOrder mesProductOrder); + + /** + *生产工单超时统计 + */ + public void productOrderOverTimeAlarm(); } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductPlanService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductPlanService.java index 95b25c8a..4876d50a 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductPlanService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductPlanService.java @@ -178,4 +178,13 @@ public interface IMesProductPlanService * @return 结果 */ public int deleteProductPlansByDispatchCode(MesProductPlanDeleteVo mesProductPlanDeleteVo); + + /** + * 查询生产派工列表Join user,material,process,productorder + * + * @param mesProductPlan 生产派工 + * @return 生产派工 + */ + public List selectMesProductPlanJoinUserList(MesProductPlan mesProductPlan); + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesPurchaseOrderService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesPurchaseOrderService.java index 125f3dc6..03056e60 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesPurchaseOrderService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesPurchaseOrderService.java @@ -174,4 +174,9 @@ public interface IMesPurchaseOrderService * @return 采购订单信息 */ public List selectBindPurchaseOrders(MesPurchaseOrder mesPurchaseOrder); + + /** + *采购订单超时统计 + */ + public void purchaseOrderOverTimeAlarm(); } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesSaleOrderService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesSaleOrderService.java index 88d9703f..d0f8d542 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesSaleOrderService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesSaleOrderService.java @@ -121,4 +121,9 @@ public interface IMesSaleOrderService * @return */ public int updateMesSaleOrderMaterials(List mesSaleOrderMaterialList); + + /** + * 销售订单交货超时统计 + */ + public void saleOrderOverTimeAlarm(); } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseBarcodeInfoServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseBarcodeInfoServiceImpl.java index cd26375e..1a687adb 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseBarcodeInfoServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseBarcodeInfoServiceImpl.java @@ -9,6 +9,7 @@ import com.hw.common.core.utils.DateUtils; import com.hw.common.core.utils.StringUtils; import com.hw.common.core.utils.ip.IpUtils; import com.hw.common.core.utils.uuid.Seq; +import com.hw.common.security.handler.GlobalExceptionHandler; import com.hw.common.security.utils.SecurityUtils; import com.hw.mes.api.domain.*; import com.hw.mes.config.MesConfig; @@ -20,6 +21,8 @@ import com.hw.wms.api.RemoteWmsService; import com.hw.wms.api.domain.WmsWarehouseMaterial; import com.hw.wms.api.domain.vo.WmsProductStockVo; import com.hw.wms.api.domain.vo.WmsRawStockVo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -39,6 +42,8 @@ import java.util.stream.Collectors; */ @Service public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService { + private static final Logger log = LoggerFactory.getLogger(MesBaseBarcodeInfoServiceImpl.class); + @Autowired private MesBaseBarcodeInfoMapper mesBaseBarcodeInfoMapper; @@ -905,12 +910,14 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService //先根据之前的成品条码信息获取托盘信息 MesBaseBarcodeInfo productBarcodeInfo = mesBaseBarcodeInfoMapper.selectMesBaseBarcodeInfoByBarcodeInfo(oriProductBarcode); + log.info("1:"+productBarcodeInfo.toString()); if (productBarcodeInfo == null) { allErrorMsgBuilder.append("成品/配对码").append(oriProductBarcode).append("不存在;"); } if(productBarcodeInfo.getBarcodeType().equals(MesConstants.MES_BARCODE_TYPE_BIND)){ productBarcodeInfo = mesBaseBarcodeInfoMapper.selectMesBaseBarcodeInfoByBarcodeInfo(productBarcodeInfo.getBindBarcode()); + log.info("2:"+productBarcodeInfo.toString()); if (productBarcodeInfo == null) { allErrorMsgBuilder.append("成品/配对码[").append(oriProductBarcode).append("]的成品不存在;"); } @@ -957,19 +964,29 @@ public class MesBaseBarcodeInfoServiceImpl implements IMesBaseBarcodeInfoService materialId = this.insertNewVirtualMaterial(barcodeInfo,mergeMaterialName, userName, currentDate); } else { - MesBasePalletInfo basePalletInfo = mesBasePalletInfoMapper.selectMesBasePalletInfoByBarcode(productBarcodes); + MesBaseBarcodeInfo productBarcodeInfo = mesBaseBarcodeInfoMapper.selectMesBaseBarcodeInfoByBarcodeInfo(productBarcodes); + if (productBarcodeInfo == null) { + allErrorMsgBuilder.append("此成品/配对码不存在;"); + } + if(productBarcodeInfo.getBarcodeType().equals(MesConstants.MES_BARCODE_TYPE_BIND)){ + productBarcodeInfo = mesBaseBarcodeInfoMapper.selectMesBaseBarcodeInfoByBarcodeInfo(productBarcodeInfo.getBindBarcode()); + log.info("2:"+productBarcodeInfo.toString()); + if (productBarcodeInfo == null) { + allErrorMsgBuilder.append("成品/配对码[").append(productBarcodes).append("]的成品不存在;"); + } + } + + + MesBasePalletInfo basePalletInfo = mesBasePalletInfoMapper.selectMesBasePalletInfoByBarcode(productBarcodeInfo.getBarcodeInfo()); if (basePalletInfo == null) { allErrorMsgBuilder.append("此成品条码没有绑定托盘信息;"); } else { palletInfoCode = basePalletInfo.getPalletInfoCode(); } - MesBaseBarcodeInfo productBarcodeInfo = mesBaseBarcodeInfoMapper.selectMesBaseBarcodeInfoByBarcodeInfo(productBarcodes); - if (productBarcodeInfo == null) { - allErrorMsgBuilder.append("此成品条码不存在;"); - } - allErrorMsgBuilder.append(this.checkInternalMesBaseBarcode(productBarcodes, productBarcodeInfo, mesBaseBarcodeInfo)); + + allErrorMsgBuilder.append(this.checkInternalMesBaseBarcode(productBarcodeInfo.getBarcodeInfo(), productBarcodeInfo, mesBaseBarcodeInfo)); productBarcodeInfoList.add(productBarcodeInfo); basePalletInfoList.add(basePalletInfo); diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseStationInfoServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseStationInfoServiceImpl.java index 5fb554a5..a26e5a40 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseStationInfoServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesBaseStationInfoServiceImpl.java @@ -7,6 +7,8 @@ import com.hw.common.core.utils.DateUtils; import com.hw.common.core.utils.ip.IpUtils; import com.hw.common.security.utils.SecurityUtils; import com.hw.mes.api.domain.MesBaseStationInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.hw.mes.mapper.MesBaseStationInfoMapper; @@ -23,6 +25,8 @@ public class MesBaseStationInfoServiceImpl implements IMesBaseStationInfoService @Autowired private MesBaseStationInfoMapper mesBaseStationInfoMapper; + private static final Logger log = LoggerFactory.getLogger(MesBaseStationInfoServiceImpl.class); + /** * 查询工位信息 * @@ -101,11 +105,12 @@ public class MesBaseStationInfoServiceImpl implements IMesBaseStationInfoService */ @Override public MesBaseStationInfo getLoginStationInfo() { - String ipAddress = SecurityUtils.getLoginUser().getIpaddr(); + String ipAddress = IpUtils.getIpAddr(); // ipAddress = "192.168.2.25"; + log.info(ipAddress+"---"+SecurityUtils.getLoginUser().getIpaddr()); MesBaseStationInfo mesBaseStationInfo = mesBaseStationInfoMapper.selectMesBaseStationInfoByStationIp(ipAddress); - Integer processFloor = SecurityUtils.getProcessFloor(); + Integer processFloor = SecurityUtils.getLoginUser().getProcessFloor(); if (mesBaseStationInfo != null && mesBaseStationInfo.getFloor() != null && !mesBaseStationInfo.getFloor().equals(processFloor)) { throw new ServiceException("请在" + processFloor + "楼登录此工序"); } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesImportImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesImportImpl.java index 94d198d8..6deff9f7 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesImportImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesImportImpl.java @@ -15,11 +15,10 @@ import com.hw.common.security.utils.SecurityUtils; import com.hw.jindie.api.RemoteJindieService; import com.hw.mes.api.RemoteMesService; import com.hw.mes.api.domain.MesBaseMaterialInfo; +import com.hw.mes.api.domain.MesPurchaseOrder; import com.hw.mes.domain.*; -import com.hw.mes.mapper.MesBaseMaterialInfoMapper; -import com.hw.mes.mapper.MesBaseUnitInfoMapper; -import com.hw.mes.mapper.MesMaterialBomMapper; +import com.hw.mes.mapper.*; import com.hw.mes.service.*; import org.apache.poi.ss.usermodel.*; import org.apache.poi.util.IOUtils; @@ -68,6 +67,12 @@ public class MesImportImpl implements IMesImportService { @Autowired private IMesPurchaseApplyProcessService mesPurchaseApplyProcessService; + @Autowired + private MesSaleOrderMapper mesSaleOrderMapper; + + @Autowired + private MesPurchaseOrderMapper mesPurchaseOrderMapper; + private static final Logger log = LoggerFactory.getLogger(MesImportImpl.class); /** @@ -446,4 +451,175 @@ public class MesImportImpl implements IMesImportService { return "导入成功"; } + + + + + + + + + + + + + /** + * 提资单BOM信息excel生成物料、销售订单和采购订单(测试用) + * + * @param file + * @param updateSupport + * @param operName + * @return + */ + @Override + @Transactional(rollbackFor = ServiceException.class) + public String raiseCapitalImportDataTest(MultipartFile file, boolean updateSupport, String operName) { + InputStream is = null; + StringBuilder failureMsg = new StringBuilder(); + List finishedProductNameList = new ArrayList<>(); + + try { + is = file.getInputStream(); + Workbook workbook = new XSSFWorkbook(is); + Sheet sheet = workbook.getSheetAt(0); + int lastRowNum = sheet.getLastRowNum(); + for (int i = 0; i < lastRowNum; i++) { + Row rowT = sheet.getRow(i); + if (rowT == null) { + continue; // 如果行为空,跳过 + } + Cell cellT = rowT.getCell(0); + if (StringUtils.isNull(cellT)) { + throw new ServiceException("Excel格式错误!"); + } + + String productBom = null; + String productName = "test"; + switch (cellT.getCellType()) { + case STRING: + productBom = cellT.getStringCellValue(); + break; + default: + throw new ServiceException("Excel格式错误:请设置成文本格式"); + } + + int productNameIndex = productBom.indexOf("("); + if (productNameIndex < 0) productNameIndex = productBom.indexOf("("); + if (productNameIndex > 0) { + productName = productBom.substring(productNameIndex+1,productBom.length()-1); + productBom = productBom.substring(0,productNameIndex); + + } + +// productBom = productBom.replaceAll("(.*?)", ""); +// productBom = productBom.replaceAll("(.*?)", ""); + MesBaseMaterialInfo productMaterial = mesBaseMaterialInfoMapper.selectMesBaseMaterialInfoByMaterialCode(productBom); + if (productMaterial != null) { + throw new ServiceException("Excel格式错误:物料编号:" + productBom + "的信息已存在!"); + } + + + Long time = System.currentTimeMillis(); + time = time+i; + MesBaseMaterialInfo mesProductInfo = new MesBaseMaterialInfo(); + mesProductInfo.setMaterialName(productName); + mesProductInfo.setMaterialCode(productBom); + mesProductInfo.setMaterialSpec(productName+"spec"); + mesProductInfo.setErpId(time); + mesProductInfo.setMaterialClassfication("1"); + mesProductInfo.setActiveFlag("1"); + mesBaseMaterialInfoMapper.insertMesBaseMaterialInfo(mesProductInfo); + + time = time+i; + MesSaleOrder mesSaleOrder = new MesSaleOrder(); + mesSaleOrder.setErpId(time); + mesSaleOrder.setSaleorderCode(Seq.getId(Seq.mesPurchaseApplyProcessSeqType, Seq.mesPurchaseApplyProcessCode)); + mesSaleOrder.setMaterialCode(productBom); + mesSaleOrder.setMaterialId(mesProductInfo.getErpId()); + mesSaleOrder.setOrderAmount(BigDecimal.ONE); + mesSaleOrder.setIsRelease("1"); + mesSaleOrder.setSaleOrderClassfication("1"); + mesSaleOrder.setIsFlag("1"); + mesSaleOrderMapper.insertMesSaleOrder(mesSaleOrder); + + + + i = i + 2;//标题下一行 + while (true) { + if (i > lastRowNum) { + break; + } + Row rowC = sheet.getRow(i); + if (rowC == null) break; + Cell numberCell = rowC.getCell(0); + if (StringUtils.isNull(numberCell)) { + break; + } else { + if (numberCell.getCellType() != NUMERIC && numberCell.getCellType() != STRING) { + break; + } + } + + Cell materialCodeCell = rowC.getCell(1); + String materialCode = null; + if (materialCodeCell.getCellType() == NUMERIC) { + double numericCellValue = materialCodeCell.getNumericCellValue(); + materialCode = new BigDecimal(numericCellValue).toString(); + } else if (materialCodeCell.getCellType() == STRING) { + materialCode = materialCodeCell.getStringCellValue(); + } + Cell materialNameCell = rowC.getCell(2); + String materialName = materialNameCell.getStringCellValue(); + Cell amountCell = rowC.getCell(5); + + BigDecimal amount=BigDecimal.ONE; + if (amountCell.getCellType() == NUMERIC) { + double numericCellValue = amountCell.getNumericCellValue(); + amount = new BigDecimal(numericCellValue); + } else if (amountCell.getCellType() == STRING) { + amount = new BigDecimal(amountCell.getStringCellValue()); + } + + Cell brandCell = rowC.getCell(6); + if (StringUtils.isNotEmpty(materialCode) && !materialCode.equals("物料编码")) { + MesBaseMaterialInfo materialInfo = mesBaseMaterialInfoMapper.selectMesBaseMaterialInfoByMaterialCode(materialCode); + if(materialInfo!=null){ + throw new ServiceException("物料编号:"+materialCode+"已经存在"); + } + + materialInfo = new MesBaseMaterialInfo(); + materialInfo.setMaterialName(materialName); + materialInfo.setMaterialCode(materialCode); + materialInfo.setMaterialSpec(materialName+"spec"); + materialInfo.setErpId(time+i); + materialInfo.setMaterialClassfication("1"); + materialInfo.setActiveFlag("1"); + mesBaseMaterialInfoMapper.insertMesBaseMaterialInfo(materialInfo); + + MesPurchaseOrder mesPurchaseOrder = new MesPurchaseOrder(); + mesPurchaseOrder.setErpId(time+i); + mesPurchaseOrder.setPoNo(Seq.getId(Seq.mesVirtualSaleOrderSeqType, Seq.mesVirtualSaleOrderCode)); + mesPurchaseOrder.setMaterialId(materialInfo.getErpId()); + mesPurchaseOrder.setMaterialCode(materialInfo.getMaterialCode()); + mesPurchaseOrder.setPurchaseOrderClassfication("1"); + mesPurchaseOrder.setOrderAmount(amount); + mesPurchaseOrder.setOrderStatus("1"); + mesPurchaseOrder.setIsFlag("1"); + mesPurchaseOrderMapper.insertMesPurchaseOrder(mesPurchaseOrder); + } + i++; + } + if (failureMsg.length() != 0) { + throw new ServiceException(failureMsg.toString()); + } + + } + + } catch (IOException e) { + throw new ServiceException("文件处理错误:" + e); + } finally { + IOUtils.closeQuietly(is); + } + return "导入成功"; + } } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProduceStatisticsDetailServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProduceStatisticsDetailServiceImpl.java new file mode 100644 index 00000000..c4377978 --- /dev/null +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProduceStatisticsDetailServiceImpl.java @@ -0,0 +1,107 @@ +package com.hw.mes.service.impl; + +import java.util.List; +import com.hw.common.core.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.hw.mes.mapper.MesProduceStatisticsDetailMapper; +import com.hw.mes.domain.MesProduceStatisticsDetail; +import com.hw.mes.service.IMesProduceStatisticsDetailService; + +/** + * 生产完成明细Service业务层处理 + * + * @author xins + * @date 2024-11-26 + */ +@Service +public class MesProduceStatisticsDetailServiceImpl implements IMesProduceStatisticsDetailService +{ + @Autowired + private MesProduceStatisticsDetailMapper mesProduceStatisticsDetailMapper; + + /** + * 查询生产完成明细 + * + * @param statisticsDetailId 生产完成明细主键 + * @return 生产完成明细 + */ + @Override + public MesProduceStatisticsDetail selectMesProduceStatisticsDetailByStatisticsDetailId(Long statisticsDetailId) + { + return mesProduceStatisticsDetailMapper.selectMesProduceStatisticsDetailByStatisticsDetailId(statisticsDetailId); + } + + /** + * 查询生产完成明细列表 + * + * @param mesProduceStatisticsDetail 生产完成明细 + * @return 生产完成明细 + */ + @Override + public List selectMesProduceStatisticsDetailList(MesProduceStatisticsDetail mesProduceStatisticsDetail) + { + return mesProduceStatisticsDetailMapper.selectMesProduceStatisticsDetailList(mesProduceStatisticsDetail); + } + + /** + * 查询生产完成明细列表,join material,process + * + * @param mesProduceStatisticsDetail 生产完成明细 + * @return 生产完成明细 + */ + @Override + public List selectMesProduceStatisticsDetailJoinList(MesProduceStatisticsDetail mesProduceStatisticsDetail) + { + return mesProduceStatisticsDetailMapper.selectMesProduceStatisticsDetailJoinList(mesProduceStatisticsDetail); + } + + /** + * 新增生产完成明细 + * + * @param mesProduceStatisticsDetail 生产完成明细 + * @return 结果 + */ + @Override + public int insertMesProduceStatisticsDetail(MesProduceStatisticsDetail mesProduceStatisticsDetail) + { + mesProduceStatisticsDetail.setCreateTime(DateUtils.getNowDate()); + return mesProduceStatisticsDetailMapper.insertMesProduceStatisticsDetail(mesProduceStatisticsDetail); + } + + /** + * 修改生产完成明细 + * + * @param mesProduceStatisticsDetail 生产完成明细 + * @return 结果 + */ + @Override + public int updateMesProduceStatisticsDetail(MesProduceStatisticsDetail mesProduceStatisticsDetail) + { + return mesProduceStatisticsDetailMapper.updateMesProduceStatisticsDetail(mesProduceStatisticsDetail); + } + + /** + * 批量删除生产完成明细 + * + * @param statisticsDetailIds 需要删除的生产完成明细主键 + * @return 结果 + */ + @Override + public int deleteMesProduceStatisticsDetailByStatisticsDetailIds(Long[] statisticsDetailIds) + { + return mesProduceStatisticsDetailMapper.deleteMesProduceStatisticsDetailByStatisticsDetailIds(statisticsDetailIds); + } + + /** + * 删除生产完成明细信息 + * + * @param statisticsDetailId 生产完成明细主键 + * @return 结果 + */ + @Override + public int deleteMesProduceStatisticsDetailByStatisticsDetailId(Long statisticsDetailId) + { + return mesProduceStatisticsDetailMapper.deleteMesProduceStatisticsDetailByStatisticsDetailId(statisticsDetailId); + } +} diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductOrderServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductOrderServiceImpl.java index 038bef26..074208d9 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductOrderServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductOrderServiceImpl.java @@ -4,7 +4,10 @@ import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; +import com.alibaba.fastjson2.JSONObject; import com.hw.common.core.constant.MesConstants; +import com.hw.common.core.constant.SecurityConstants; +import com.hw.common.core.constant.SystemConstants; import com.hw.common.core.exception.ServiceException; import com.hw.common.core.utils.DateUtils; import com.hw.common.core.utils.StringUtils; @@ -17,6 +20,8 @@ import com.hw.mes.mapper.MesMaterialBomMapper; import com.hw.mes.mapper.MesProductPlanMapper; import com.hw.mes.mapper.MesSaleOrderMapper; import com.hw.mes.service.IMesMaterialBomService; +import com.hw.system.api.RemoteSysCommonService; +import com.hw.system.api.domain.common.SysPointRouter; import org.apache.commons.lang3.time.DateFormatUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -24,6 +29,8 @@ import com.hw.mes.mapper.MesProductOrderMapper; import com.hw.mes.domain.MesProductOrder; import com.hw.mes.service.IMesProductOrderService; +import javax.annotation.Resource; + import static com.hw.common.core.utils.DateUtils.YYYY_MM_DD_HH_MM_SS; /** @@ -49,6 +56,9 @@ public class MesProductOrderServiceImpl implements IMesProductOrderService { @Autowired private MesSaleOrderMapper mesSaleOrderMapper; + @Resource + private RemoteSysCommonService remoteSysCommonService; + /** * 查询生产工单 * @@ -631,4 +641,46 @@ public class MesProductOrderServiceImpl implements IMesProductOrderService { } } + + /** + *生产工单超时统计 + */ + @Override + public void productOrderOverTimeAlarm(){ +// 工单状态:0-待发布;1-已发布;2-已完成;3-已开始;4-暂停;8-已撤回;9-已删除 + MesProductOrder queryProductOrder = new MesProductOrder(); + queryProductOrder.setOrderStatusStr(MesConstants.UN_PUBLISH+","+MesConstants.PUBLISHED+","+MesConstants.BEGIN+","+MesConstants.PAUSE); + List mesProductOrderList = mesProductOrderMapper.selectMesProductOrderList(queryProductOrder); + Date currentDate = new Date(); + List overTimeProductOrderList = mesProductOrderList.stream() + .filter(mpo -> mpo.getPlanEndTime()!=null && mpo.getPlanEndTime().getTime() <= currentDate.getTime()).collect(Collectors.toList()); + if(overTimeProductOrderList!=null && !overTimeProductOrderList.isEmpty()){ +// String nickName = SecurityUtils.getLoginUser().getNickname(); +// for(MesProductOrder mesProductOrder:overTimeProductOrderList){ + List sysPointRouterList = new ArrayList<>(); + SysPointRouter sysPointRouter = getSysPointRouter(null, "auto", currentDate); + sysPointRouterList.add(sysPointRouter); + remoteSysCommonService.insertSysPointRouterPort(sysPointRouterList, SecurityConstants.INNER); +// } + } + + + } + + + private static SysPointRouter getSysPointRouter(Long productOrderId, String nickName, Date currentDate) { + SysPointRouter sysPointRouter = new SysPointRouter(); + sysPointRouter.setModuleCode("MES"); + sysPointRouter.setPointType(SystemConstants.SYS_ROUTER_POINT_TYPE_ALARM); + sysPointRouter.setRouterAddress("/mes/plan/productOrder"); + if(productOrderId!=null){ + JSONObject routerAddressDetailJson = new JSONObject(); + routerAddressDetailJson.put("productOrderId", productOrderId); + sysPointRouter.setRouterAddressDetail(routerAddressDetailJson.toString()); + } + sysPointRouter.setRemark("生产工单超时报警"); + sysPointRouter.setCreateBy(nickName); + sysPointRouter.setCreateTime(currentDate); + return sysPointRouter; + } } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanDetailServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanDetailServiceImpl.java index 181feb38..aa0bf938 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanDetailServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanDetailServiceImpl.java @@ -835,9 +835,6 @@ public class MesProductPlanDetailServiceImpl implements IMesProductPlanDetailSer for (MesProductPlanDetail mesProductPlanDetail : mesProductPlanDetailList) { MesProductPlan mesProductPlan = mesProductPlanMapper.selectOnlyMesProductPlanByPlanId(mesProductPlanDetail.getPlanId()); - //易耗品标识,分摊到各个生产计划明细中 - - //计算工时 Date realBeginTime = mesProductPlanDetail.getRealBeginTime(); Date realEndTime = mesProductPlanDetail.getRealEndTime(); @@ -880,6 +877,8 @@ public class MesProductPlanDetailServiceImpl implements IMesProductPlanDetailSer MesProduceStatisticsDetail mesProduceStatisticsDetail = new MesProduceStatisticsDetail(); mesProduceStatisticsDetail.setProductOrderId(mesProductPlan.getProductOrderId()); + mesProduceStatisticsDetail.setDispatchType(mesProductPlan.getDispatchType()); + mesProduceStatisticsDetail.setDispatchId(mesProductPlan.getDispatchId()); mesProduceStatisticsDetail.setSaleOrderId(mesProductPlan.getSaleOrderId()); mesProduceStatisticsDetail.setSaleorderCode(mesProductPlan.getSaleorderCode()); mesProduceStatisticsDetail.setPlanId(mesProductPlanDetail.getPlanId()); diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanServiceImpl.java index fec55e15..7ff71ef0 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanServiceImpl.java @@ -764,6 +764,19 @@ public class MesProductPlanServiceImpl implements IMesProductPlanService { } + + /** + * 查询生产派工列表Join user,material,process,productorder + * + * @param mesProductPlan 生产派工 + * @return 生产派工 + */ + @Override + public List selectMesProductPlanJoinUserList(MesProductPlan mesProductPlan) { + return mesProductPlanMapper.selectMesProductPlanJoinUserList(mesProductPlan); + } + + // public String executeAssignTaskResultTask() { // ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); // boolean running = true; diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseApplyProcessServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseApplyProcessServiceImpl.java index 349f8b8c..e47e3970 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseApplyProcessServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseApplyProcessServiceImpl.java @@ -182,25 +182,25 @@ public class MesPurchaseApplyProcessServiceImpl implements IMesPurchaseApplyProc * @param processActivityId */ private void processActivityEmailNotice(MesPurchaseApplyProcess mesPurchaseApplyProcess, MesPurchaseApplyProcessDetail processDetail, Long processActivityId) { - R activityRes = remoteSysCommonService.selectProcessActivityUserInfo(SecurityConstants.INNER, processActivityId); - String title = activityRes.getData().getProcessActivityName() + "[" + mesPurchaseApplyProcess.getTaskCode() + "]"; - String text = mesPurchaseApplyProcess.getRemark(); - List activityAuthList = activityRes.getData().getWfProcessActivityAuthList(); - List userNameList = new ArrayList<>();//已通知用户 - for (WfProcessActivityAuth activityAuth : activityAuthList) { - //邮件通知 - String email = activityAuth.getEmail(); - if (StringUtils.isNotEmpty(email)){ - MailUtils.processSendEmail(email, title, text); - userNameList.add(activityAuth.getUserName()); - } - } - if (userNameList.size() > 0){ - processDetail.setNoticeFlag(WfConstants.PA_NOTICE_FLAG_YES); - processDetail.setNoticeAuth(String.join(",", userNameList)); - } else { - processDetail.setNoticeFlag(WfConstants.PA_NOTICE_FLAG_NO); - } +// R activityRes = remoteSysCommonService.selectProcessActivityUserInfo(SecurityConstants.INNER, processActivityId); +// String title = activityRes.getData().getProcessActivityName() + "[" + mesPurchaseApplyProcess.getTaskCode() + "]"; +// String text = mesPurchaseApplyProcess.getRemark(); +// List activityAuthList = activityRes.getData().getWfProcessActivityAuthList(); +// List userNameList = new ArrayList<>();//已通知用户 +// for (WfProcessActivityAuth activityAuth : activityAuthList) { +// //邮件通知 +// String email = activityAuth.getEmail(); +// if (StringUtils.isNotEmpty(email)){ +// MailUtils.processSendEmail(email, title, text); +// userNameList.add(activityAuth.getUserName()); +// } +// } +// if (userNameList.size() > 0){ +// processDetail.setNoticeFlag(WfConstants.PA_NOTICE_FLAG_YES); +// processDetail.setNoticeAuth(String.join(",", userNameList)); +// } else { +// processDetail.setNoticeFlag(WfConstants.PA_NOTICE_FLAG_NO); +// } } /** diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseOrderServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseOrderServiceImpl.java index d0a5861a..d2f7f19a 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseOrderServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesPurchaseOrderServiceImpl.java @@ -6,9 +6,11 @@ import java.util.Date; import java.util.List; import java.util.stream.Collectors; +import com.alibaba.fastjson2.JSONObject; import com.hw.common.core.constant.Constants; import com.hw.common.core.constant.MesConstants; import com.hw.common.core.constant.SecurityConstants; +import com.hw.common.core.constant.SystemConstants; import com.hw.common.core.domain.R; import com.hw.common.core.exception.ServiceException; import com.hw.common.core.utils.DateUtils; @@ -17,8 +19,11 @@ import com.hw.common.security.utils.SecurityUtils; import com.hw.mes.api.domain.MesBaseMaterialInfo; import com.hw.mes.api.domain.MesOrderBind; import com.hw.mes.api.domain.MesSaleOrderRelate; +import com.hw.mes.domain.MesProductOrder; import com.hw.mes.domain.MesSaleOrder; import com.hw.mes.mapper.*; +import com.hw.system.api.RemoteSysCommonService; +import com.hw.system.api.domain.common.SysPointRouter; import com.hw.wms.api.RemoteWmsService; import com.hw.wms.api.domain.vo.WmsAutoOutstockVo; import org.springframework.beans.factory.annotation.Autowired; @@ -55,6 +60,10 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService { @Resource private RemoteWmsService remoteWmsService; + @Resource + private RemoteSysCommonService remoteSysCommonService; + + /** * 查询采购订单信息 * @@ -611,4 +620,51 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService { mesPurchaseOrder.setBindFlag("1"); return mesPurchaseOrderMapper.selectMesPurchaseOrderJoinList(mesPurchaseOrder); } + + + + /** + *采购订单超时统计 + */ + @Override + public void purchaseOrderOverTimeAlarm(){ +// 订单状态(1待采购2采购中3采购完成4自动出库完成) + MesPurchaseOrder queryPurchaseOrder = new MesPurchaseOrder(); + queryPurchaseOrder.setPurchaseOrderClassfication(MesConstants.MES_PURCHASE_ORDER_CLASSFICATION_ERP); + queryPurchaseOrder.setOrderStatusStr(MesConstants.MES_PURCHASE_ORDER_STATUS_TOPURCHASE+","+MesConstants.MES_PURCHASE_ORDER_STATUS_PURCHASEING); + + List purchaseOrderList = mesPurchaseOrderMapper.selectMesPurchaseOrderList(queryPurchaseOrder); + Date currentDate = new Date(); + List overTimePurchaseOrderList = purchaseOrderList.stream() + .filter(mpo -> mpo.getPlanDeliveryDate()!=null && mpo.getPlanDeliveryDate().getTime() <= currentDate.getTime()).collect(Collectors.toList()); + if(overTimePurchaseOrderList!=null && !overTimePurchaseOrderList.isEmpty()){ +// String nickName = SecurityUtils.getLoginUser().getNickname(); +// for(MesProductOrder mesProductOrder:overTimeProductOrderList){ + List sysPointRouterList = new ArrayList<>(); + SysPointRouter sysPointRouter = getSysPointRouter(null, currentDate); + sysPointRouterList.add(sysPointRouter); + remoteSysCommonService.insertSysPointRouterPort(sysPointRouterList, SecurityConstants.INNER); +// } + } + + + } + + + private static SysPointRouter getSysPointRouter(Long purchaseOrderId, Date currentDate) { + SysPointRouter sysPointRouter = new SysPointRouter(); + sysPointRouter.setModuleCode("MES"); + sysPointRouter.setPointType(SystemConstants.SYS_ROUTER_POINT_TYPE_ALARM); + sysPointRouter.setRouterAddress("/mes/plan/purchaseOrder"); + if(purchaseOrderId!=null){ + JSONObject routerAddressDetailJson = new JSONObject(); + routerAddressDetailJson.put("purchaseOrderId", purchaseOrderId); + sysPointRouter.setRouterAddressDetail(routerAddressDetailJson.toString()); + } + sysPointRouter.setRemark("采购订单交货超时报警"); + sysPointRouter.setCreateBy("auto"); + sysPointRouter.setCreateTime(currentDate); + return sysPointRouter; + } + } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesSaleOrderServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesSaleOrderServiceImpl.java index 0e392f15..e0a02931 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesSaleOrderServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesSaleOrderServiceImpl.java @@ -4,25 +4,35 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; +import com.alibaba.fastjson2.JSONObject; +import com.hw.common.core.constant.MesConstants; +import com.hw.common.core.constant.SecurityConstants; +import com.hw.common.core.constant.SystemConstants; import com.hw.common.core.exception.ServiceException; import com.hw.common.core.utils.DateUtils; import com.hw.common.core.utils.StringUtils; import com.hw.common.security.utils.SecurityUtils; import com.hw.mes.api.domain.MesBaseBarcodeInfo; import com.hw.mes.api.domain.MesBaseMaterialInfo; +import com.hw.mes.api.domain.MesPurchaseOrder; import com.hw.mes.api.domain.MesSaleOrderRelate; import com.hw.mes.api.domain.vo.MesBaseBarcodeInfoTransferVo; import com.hw.mes.api.domain.vo.MesSaleOrderTransferVo; import com.hw.mes.domain.MesMaterialBom; import com.hw.mes.domain.MesSaleOrderMaterial; import com.hw.mes.mapper.*; +import com.hw.system.api.RemoteSysCommonService; +import com.hw.system.api.domain.common.SysPointRouter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.hw.mes.domain.MesSaleOrder; import com.hw.mes.service.IMesSaleOrderService; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; + /** * 销售订单信息Service业务层处理 * @@ -49,6 +59,9 @@ public class MesSaleOrderServiceImpl implements IMesSaleOrderService { @Autowired private MesSaleOrderMaterialMapper mesSaleOrderMaterialMapper; + @Resource + private RemoteSysCommonService remoteSysCommonService; + /** * 查询销售订单信息 * @@ -292,9 +305,9 @@ public class MesSaleOrderServiceImpl implements IMesSaleOrderService { for (MesSaleOrderMaterial mesSaleOrderMaterial : mesSaleOrderMaterialList) { if (mesSaleOrderMaterial.getUsedAmount() != null && mesSaleOrderMaterial.getUsedAmount().compareTo(BigDecimal.ZERO) > 0) { BigDecimal realOutstockAmount = mesSaleOrderMaterial.getRealOutstockAmount(); - BigDecimal totalUsedAmount = mesSaleOrderMaterial.getTotalUsedAmount()==null?BigDecimal.ZERO:mesSaleOrderMaterial.getTotalUsedAmount();//其他订单已分摊数量 - BigDecimal oriUsedAmount = mesSaleOrderMaterial.getOriUsedAmount()==null?BigDecimal.ZERO:mesSaleOrderMaterial.getOriUsedAmount(); - BigDecimal usedAmount = mesSaleOrderMaterial.getUsedAmount()==null?BigDecimal.ZERO:mesSaleOrderMaterial.getUsedAmount(); + BigDecimal totalUsedAmount = mesSaleOrderMaterial.getTotalUsedAmount() == null ? BigDecimal.ZERO : mesSaleOrderMaterial.getTotalUsedAmount();//其他订单已分摊数量 + BigDecimal oriUsedAmount = mesSaleOrderMaterial.getOriUsedAmount() == null ? BigDecimal.ZERO : mesSaleOrderMaterial.getOriUsedAmount(); + BigDecimal usedAmount = mesSaleOrderMaterial.getUsedAmount() == null ? BigDecimal.ZERO : mesSaleOrderMaterial.getUsedAmount(); BigDecimal updateAmount = usedAmount.subtract(oriUsedAmount);//修改的数量差 if (updateAmount.compareTo(BigDecimal.ZERO) != 0) { BigDecimal newTotalUsedAmount = totalUsedAmount.add(usedAmount); @@ -306,8 +319,8 @@ public class MesSaleOrderServiceImpl implements IMesSaleOrderService { if (mesSaleOrderMaterial.getSaleOrderMaterialId() != null) { // toUpdatedMesSaleOrderMateriaList.add(mesSaleOrderMaterial); - mesSaleOrderMaterial.setUpdateBy(nickName); - mesSaleOrderMaterial.setUpdateTime(currentDate); + mesSaleOrderMaterial.setUpdateBy(nickName); + mesSaleOrderMaterial.setUpdateTime(currentDate); mesSaleOrderMaterialMapper.updateMesSaleOrderMaterial(mesSaleOrderMaterial); } else { @@ -326,4 +339,49 @@ public class MesSaleOrderServiceImpl implements IMesSaleOrderService { return 1; } + + /** + * 销售订单交货超时统计 + */ + @Override + public void saleOrderOverTimeAlarm() { +// 状态(0-待发布工单,1-已发布工单,2-已开始,3-已完成) + MesSaleOrder querySaleOrder = new MesSaleOrder(); + querySaleOrder.setSaleOrderClassfication(MesConstants.MES_SALE_ORDER_CLASSFICATION_ERP); + querySaleOrder.setIsReleaseStr(MesConstants.MES_SALE_ORDER_IS_RELEASE_TO_PUBLISH + "," + + MesConstants.MES_SALE_ORDER_IS_RELEASE_PUBLISHED + "," + MesConstants.MES_SALE_ORDER_IS_RELEASE_BEGIN); + + List mesSaleOrderList = mesSaleOrderMapper.selectMesSaleOrderList(querySaleOrder); + Date currentDate = new Date(); + List overTimeSaleOrderList = mesSaleOrderList.stream() + .filter(mpo -> mpo.getPlanDeliveryDate() != null && mpo.getPlanDeliveryDate().getTime() <= currentDate.getTime()).collect(Collectors.toList()); + if (overTimeSaleOrderList != null && !overTimeSaleOrderList.isEmpty()) { +// String nickName = SecurityUtils.getLoginUser().getNickname(); +// for(MesProductOrder mesProductOrder:overTimeProductOrderList){ + List sysPointRouterList = new ArrayList<>(); + SysPointRouter sysPointRouter = getSysPointRouter(null, currentDate); + sysPointRouterList.add(sysPointRouter); + remoteSysCommonService.insertSysPointRouterPort(sysPointRouterList, SecurityConstants.INNER); +// } + } + + + } + + + private static SysPointRouter getSysPointRouter(Long saleOrderId, Date currentDate) { + SysPointRouter sysPointRouter = new SysPointRouter(); + sysPointRouter.setModuleCode("MES"); + sysPointRouter.setPointType(SystemConstants.SYS_ROUTER_POINT_TYPE_ALARM); + sysPointRouter.setRouterAddress("/mes/plan/saleOrder"); + if (saleOrderId != null) { + JSONObject routerAddressDetailJson = new JSONObject(); + routerAddressDetailJson.put("saleOrderId", saleOrderId); + sysPointRouter.setRouterAddressDetail(routerAddressDetailJson.toString()); + } + sysPointRouter.setRemark("销售订单交货超时报警"); + sysPointRouter.setCreateBy("auto"); + sysPointRouter.setCreateTime(currentDate); + return sysPointRouter; + } } diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesMaterialBomMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesMaterialBomMapper.xml index 1b3d6f96..ccbcd98b 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesMaterialBomMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesMaterialBomMapper.xml @@ -71,7 +71,7 @@ and project_id = #{projectId} and active_flag = #{activeFlag} - order by material_id, create_time desc + order by material_bom_id desc @@ -85,6 +87,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" insert into mes_produce_statistics_detail product_order_id, + dispatch_type, + dispatch_id, sale_order_id, saleorder_code, plan_id, @@ -108,6 +112,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{productOrderId}, + #{dispatchType}, + #{dispatchId}, #{saleOrderId}, #{saleorderCode}, #{planId}, @@ -187,4 +193,48 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ( #{item.statisticsDetailMaterialId}, #{item.statisticsDetailId}, #{item.materialId}, #{item.materialCode}, #{item.materialName}, #{item.materialSpec}, #{item.usedAmount}) + + + + + + + + + + select mpsd.statistics_detail_id, mpsd.product_order_id, mpsd.dispatch_type,mpsd.dispatch_id,mpsd.sale_order_id, mpsd.saleorder_code, mpsd.plan_id, + mpsd.plan_code, mpsd.plan_detail_id, mpsd.plan_detail_code, mpsd.product_id, + mpsd.user_id, mpsd.nick_name, mpsd.process_id, mpsd.plan_begin_time, mpsd.plan_end_time, mpsd.real_begin_time, + mpsd.real_end_time, mpsd.produce_time, mpsd.create_time, + mbmi.material_code as product_code,mbmi.material_name as product_name,mbmi.material_spec as product_spec,mbpi.process_name + from mes_produce_statistics_detail mpsd + left join mes_base_material_info mbmi on mpsd.product_id = mbmi.material_id + left join mes_base_process_info mbpi on mpsd.process_id=mbpi.process_id + + + + \ No newline at end of file diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductOrderMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductOrderMapper.xml index 17bdc59a..602c0578 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductOrderMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductOrderMapper.xml @@ -382,6 +382,9 @@ AND (plan_begin_time <= #{params.planEndTime} AND plan_end_time >= #{params.planBeginTime}) + and mpo.order_status in ('0','1','3','4') and mpo.plan_end_time is not null and mpo.plan_end_time < now() + and mpo.plan_end_time is not null and mpo.plan_end_time >= now() + order by mpo.product_order_id desc @@ -395,7 +398,7 @@ FROM mes_product_order WHERE plan_begin_time = (select max(plan_begin_time) FROM mes_product_order) order by product_order_id desc limit 1 - SELECT x.status_value FROM `hwjy-cloud`.dms_realtime_status x where x.status_name = '烘干机风机状态' SELECT x.* FROM `hwjy-cloud`.mes_product_order x where x.plan_begin_time > now() - interval 1 month order by plan_begin_time asc + + + diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductPlanMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductPlanMapper.xml index 6822febd..695159bb 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductPlanMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductPlanMapper.xml @@ -56,6 +56,8 @@ + + @@ -580,9 +582,89 @@ a.update_by, a.update_time, b.sale_order_id, - b.saleorder_code + b.saleorder_code, + b.dispatch_type, + b.dispatch_id from mes_product_plan a left join mes_product_order b on a.product_order_id = b.product_order_id where a.plan_id = #{planId} + + + + + + select mpp.plan_id, + mpp.product_order_id, + po.order_code, + mpp.plan_code, + mpp.dispatch_code, + mpp.material_id, + mi.material_code, + mi.material_name, + mi.material_spec, + mpp.material_bom_id, + mpp.process_id, + bpi.process_name, + mpp.process_order, + mpp.last_process_id, + mpp.station_id, + mpp.user_id, + mpp.production_time, + mpp.dispatch_amount, + mpp.plan_amount, + mpp.complete_amount, + mpp.plan_begin_time, + mpp.plan_end_time, + mpp.real_begin_time, + mpp.real_end_time, + mpp.attach_id, + mpp.sop_id, + po.sale_order_id, + po.saleorder_code, + mpp.plan_status, + mpp.final_process_flag, + mpp.is_flag, + mpp.remark, + mpp.create_by, + mpp.create_time, + mpp.update_by, + mpp.update_time, + su.nick_name as user_name + from mes_product_plan mpp + left join mes_base_process_info bpi on bpi.process_id = mpp.process_id + left join mes_base_material_info mi on mi.material_id = mpp.material_id + left join mes_product_order po on po.product_order_id = mpp.product_order_id + left join sys_user su on mpp.user_id=su.user_id + + + + + diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductionQualifiedMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductionQualifiedMapper.xml index 54eefa8c..84e23dc5 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductionQualifiedMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesProductionQualifiedMapper.xml @@ -67,6 +67,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" parameterType="java.lang.Long"> select * from mes_production_qualified where qualified_id = #{qualifiedId} + insert into mes_alarm_info diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderMapper.xml index f4f9eea5..9dcd07bc 100644 --- a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderMapper.xml +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesPurchaseOrderMapper.xml @@ -126,6 +126,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and src_bill_no like concat('%', #{srcBillNo}, '%') and tond_base like concat('%', #{tondBase}, '%') + and order_status in (${orderStatusStr}) diff --git a/hw-modules/hw-system/src/main/java/com/hw/system/controller/SysUserController.java b/hw-modules/hw-system/src/main/java/com/hw/system/controller/SysUserController.java index 34ff7407..c20db824 100644 --- a/hw-modules/hw-system/src/main/java/com/hw/system/controller/SysUserController.java +++ b/hw-modules/hw-system/src/main/java/com/hw/system/controller/SysUserController.java @@ -7,6 +7,8 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; import javax.servlet.http.HttpServletResponse; + +import com.hw.common.core.constant.WmsConstants; import org.apache.commons.lang3.ArrayUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; @@ -350,4 +352,12 @@ public class SysUserController extends BaseController { return success(deptService.selectDeptTreeList(dept)); } + + + @GetMapping("/getUserList") + public AjaxResult getUserList(SysUser sysUser) { + List list = userService.selectUserList(sysUser); + return success(list); + } + } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/board/controller/FirstWmsBorderController.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/board/controller/FirstWmsBorderController.java new file mode 100644 index 00000000..ea26dae4 --- /dev/null +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/board/controller/FirstWmsBorderController.java @@ -0,0 +1,51 @@ +package com.hw.wms.board.controller; + +import com.hw.common.core.web.domain.AjaxResult; +import com.hw.wms.board.service.FirstWmsBorderService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("FirstWmsBorder") +public class FirstWmsBorderController { + @Autowired + private FirstWmsBorderService firstWmsBorderService; + /** + * 当日出、入库详情 + */ + @GetMapping("/inAndOutInfo") + public AjaxResult inAndOutInfo(){ + return AjaxResult.success(firstWmsBorderService.inAndOutInfo()); + } + /** + * 原材料库存占比 + */ + @GetMapping("stockPercentage") + public AjaxResult stockPercentage(){ + return AjaxResult.success(firstWmsBorderService.stockPercentage()); + } + /** + * 采购订单 + */ + @GetMapping("purchaseInfo") + public AjaxResult purchaseInfo(){ + return AjaxResult.success(firstWmsBorderService.purchaseInfo()); + } + /** + * 生产订单物料需求 + */ + @GetMapping("/bomInfo") + public AjaxResult bomInfo(){ + return AjaxResult.success(firstWmsBorderService.bomInfo()); + } + /** + * 成品出入库 + */ + @GetMapping("/productInAndOutInfo") + public AjaxResult productInAndOutInfo(){ + return AjaxResult.success(firstWmsBorderService.productInAndOutInfo()); + } + +} diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/board/controller/FourthWmsBorderController.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/board/controller/FourthWmsBorderController.java new file mode 100644 index 00000000..acf8e299 --- /dev/null +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/board/controller/FourthWmsBorderController.java @@ -0,0 +1,52 @@ +package com.hw.wms.board.controller; + +import com.hw.common.core.web.domain.AjaxResult; +import com.hw.wms.board.service.FirstWmsBorderService; +import com.hw.wms.board.service.FourthWmsBorderService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("FourthWmsBorder") +public class FourthWmsBorderController { + @Autowired + private FourthWmsBorderService fouthWmsBorderService; + /** + * 当日原材料出、入库详情 + */ + @GetMapping("/inAndOutInfo") + public AjaxResult inAndOutInfo(){ + return AjaxResult.success(fouthWmsBorderService.inAndOutInfo()); + } + /** + * 原材料库存占比 + */ + @GetMapping("stockPercentage") + public AjaxResult stockPercentage(){ + return AjaxResult.success(fouthWmsBorderService.stockPercentage()); + } + /** + * 成品出入库 + */ + @GetMapping("/productInAndOutInfo") + public AjaxResult productInAndOutInfo(){ + return AjaxResult.success(fouthWmsBorderService.productInAndOutInfo()); + } + /** + * 采购订单 + */ + @GetMapping("purchaseInfo") + public AjaxResult purchaseInfo(){ + return AjaxResult.success(fouthWmsBorderService.purchaseInfo()); + } + /** + * 生产订单物料需求 + */ + @GetMapping("/bomInfo") + public AjaxResult bomInfo(){ + return AjaxResult.success(fouthWmsBorderService.bomInfo()); + } + +} diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/FirstWmsBorderService.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/FirstWmsBorderService.java new file mode 100644 index 00000000..06fb03ef --- /dev/null +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/FirstWmsBorderService.java @@ -0,0 +1,24 @@ +package com.hw.wms.board.service; + + +import com.hw.wms.domain.MesProductOrder; +import com.hw.wms.domain.WmsBaseLocation; +import com.hw.wms.domain.WmsProductInstock; +import com.hw.wms.domain.WmsRawInstock; + +import java.util.List; +import java.util.Map; + +public interface FirstWmsBorderService { + + + Map inAndOutInfo(); + + Map stockPercentage(); + + List purchaseInfo(); + + List bomInfo(); + + List productInAndOutInfo(); +} diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/FourthWmsBorderService.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/FourthWmsBorderService.java new file mode 100644 index 00000000..488c0c9f --- /dev/null +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/FourthWmsBorderService.java @@ -0,0 +1,23 @@ +package com.hw.wms.board.service; + + +import com.hw.wms.domain.MesProductOrder; +import com.hw.wms.domain.WmsProductInstock; +import com.hw.wms.domain.WmsRawInstock; + +import java.util.List; +import java.util.Map; + +public interface FourthWmsBorderService { + + + Map inAndOutInfo(); + + Map stockPercentage(); + + List productInAndOutInfo(); + + List purchaseInfo(); + + List bomInfo(); +} diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/SecondWmsBorderService.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/SecondWmsBorderService.java index 36f8e47c..7cfc676e 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/SecondWmsBorderService.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/SecondWmsBorderService.java @@ -22,5 +22,5 @@ public interface SecondWmsBorderService { Map instockTimeCount(); - BigDecimal todayInstockAmount(); + Map todayInstockAmount(); } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/impl/FirstWmsBoardServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/impl/FirstWmsBoardServiceImpl.java new file mode 100644 index 00000000..f0646f01 --- /dev/null +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/impl/FirstWmsBoardServiceImpl.java @@ -0,0 +1,74 @@ +package com.hw.wms.board.service.impl; + +import com.hw.wms.board.service.FifthWmsBorderService; +import com.hw.wms.board.service.FirstWmsBorderService; +import com.hw.wms.domain.*; +import com.hw.wms.mapper.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class FirstWmsBoardServiceImpl implements FirstWmsBorderService { + @Autowired + private WmsRawOutstockMapper wmsRawOutstockMapper; + @Autowired + private WmsRawInstockMapper wmsRawInstockMapper; + @Autowired + private WmsBaseLocationMapper wmsBaseLocationMapper; + @Autowired + private WmsProductInstockMapper wmsProductInstockMapper; + @Override + public Map inAndOutInfo() { + List rawOutstocks = wmsRawOutstockMapper.selectInAndOutInfo(); + List inStocks = wmsRawInstockMapper.selectInAndOutInfo(); + HashMap> map = new HashMap<>(); + map.put("rawOutstocks",rawOutstocks); + map.put("inStocks",inStocks); + return map; + } + + @Override + public Map stockPercentage() { + int stockAmount = wmsBaseLocationMapper.stockAmount(); + int nostockAmount = wmsBaseLocationMapper.nostockAmount(); + int productstockAmount = wmsBaseLocationMapper.productstockAmount(); + int noProductstockAmount = wmsBaseLocationMapper.noProductstockAmount(); + HashMap map = new HashMap<>(); + map.put("stockAmount",stockAmount); + map.put("nostockAmount",nostockAmount); + map.put("productstockAmount",productstockAmount); + map.put("noProductstockAmount",noProductstockAmount); + return map; + + } + + @Override + public List productInAndOutInfo() { + List instocks = wmsProductInstockMapper.productFirstInInfo(); + List outstocks = wmsRawOutstockMapper.productFirstOutInfo(); + for (WmsProductInstock instock : instocks) { + for (WmsProductInstock outstock : outstocks) { + if (instock.getDay().equals(outstock.getDay())){ + instock.setOutStockAmount(outstock.getInstockAmount()); + } + } + } + return instocks; + } + + @Override + public List bomInfo() { + return wmsRawInstockMapper.bomInfo(1); + + } + + @Override + public List purchaseInfo() { + return wmsRawInstockMapper.purchaseInfo(); + } +} diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/impl/FouthWmsBoardServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/impl/FouthWmsBoardServiceImpl.java new file mode 100644 index 00000000..ecacc8f0 --- /dev/null +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/impl/FouthWmsBoardServiceImpl.java @@ -0,0 +1,77 @@ +package com.hw.wms.board.service.impl; + +import com.hw.wms.board.service.FirstWmsBorderService; +import com.hw.wms.board.service.FourthWmsBorderService; +import com.hw.wms.domain.MesProductOrder; +import com.hw.wms.domain.WmsProductInstock; +import com.hw.wms.domain.WmsRawInstock; +import com.hw.wms.domain.WmsRawOutstock; +import com.hw.wms.mapper.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class FouthWmsBoardServiceImpl implements FourthWmsBorderService { + @Autowired + private WmsRawOutstockMapper wmsRawOutstockMapper; + @Autowired + private WmsRawInstockMapper wmsRawInstockMapper; + @Autowired + private WmsBaseLocationMapper wmsBaseLocationMapper; + @Autowired + private WmsProductInstockMapper wmsProductInstockMapper; + @Autowired + private WmsProductOutstockMapper wmsProductOutstockMapper; + + @Override + public Map inAndOutInfo() { + List rawOutstock = wmsRawOutstockMapper.fourthOutstockList(); + List inStocks = wmsRawInstockMapper.fourthInstockList(); + HashMap> map = new HashMap<>(); + map.put("rawOutstock",rawOutstock); + map.put("inStocks",inStocks); + return map; + } + + @Override + public Map stockPercentage() { + Integer stockAmount = wmsBaseLocationMapper.selectFourthLocation(); + Integer nostockAmount = wmsBaseLocationMapper.selectFourthNostockLocation(); + Integer fustockLocation = wmsBaseLocationMapper.selectFourthFustockLocation(); + Integer noFustockLocation = wmsBaseLocationMapper.selectFourthNoFustockLocation(); + HashMap map = new HashMap<>(); + map.put("stockAmount",stockAmount); + map.put("nostockAmount",nostockAmount); + map.put("fustockLocation",fustockLocation); + map.put("noFustockLocation",noFustockLocation); + return map; + } + + @Override + public List bomInfo() { + return wmsRawInstockMapper.bomInfo(3); + } + + @Override + public List purchaseInfo() { + return wmsRawInstockMapper.purchaseFirstInfo(); + } + + @Override + public List productInAndOutInfo() { + List instocks = wmsProductInstockMapper.productInInfo(); + List outstocks = wmsRawOutstockMapper.productOutInfo(); + for (WmsProductInstock instock : instocks) { + for (WmsProductInstock outstock : outstocks) { + if (instock.getDay().equals(outstock.getDay())){ + instock.setOutStockAmount(outstock.getInstockAmount()); + } + } + } + return instocks; + } +} diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/impl/SecondWmsBoardServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/impl/SecondWmsBoardServiceImpl.java index e240b804..5c935810 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/impl/SecondWmsBoardServiceImpl.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/impl/SecondWmsBoardServiceImpl.java @@ -5,6 +5,8 @@ import com.hw.wms.domain.WmsProductInstock; import com.hw.wms.domain.WmsProductOutstock; import com.hw.wms.domain.WmsProductOutstockDetail; import com.hw.wms.domain.WmsProductStock; +import com.hw.wms.mapper.WmsProductInstockMapper; +import com.hw.wms.mapper.WmsProductOutstockMapper; import com.hw.wms.mapper.WmsProductStockMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -20,6 +22,8 @@ import java.util.stream.Collectors; public class SecondWmsBoardServiceImpl implements SecondWmsBorderService { @Autowired private WmsProductStockMapper wmsProductStockMapper; + @Autowired + private WmsProductOutstockMapper wmsProductOutstockMapper; @Override public List totalStock() { @@ -27,9 +31,17 @@ public class SecondWmsBoardServiceImpl implements SecondWmsBorderService { } @Override - public BigDecimal todayInstockAmount() { - BigDecimal result = wmsProductStockMapper.todayInstockAmount(); - return result; + public Map todayInstockAmount() { + BigDecimal dayInstockAmount = wmsProductStockMapper.todayInstockAmount(); + BigDecimal dayOutstockAmount = wmsProductOutstockMapper.todayOutstockAmount(); + BigDecimal monthInstockAmount = wmsProductStockMapper.monthInstockAmount(); + BigDecimal monthOutstockAmount = wmsProductOutstockMapper.monthOutstockAmount(); + HashMap map = new HashMap<>(); + map.put("dayInstockAmount",dayInstockAmount); + map.put("dayOutstockAmount",dayOutstockAmount); + map.put("monthInstockAmount",monthInstockAmount); + map.put("monthOutstockAmount",monthOutstockAmount); + return map; } @Override diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/impl/ThirdWmsBorderServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/impl/ThirdWmsBorderServiceImpl.java index 91e3e30b..8fa1999a 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/impl/ThirdWmsBorderServiceImpl.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/board/service/impl/ThirdWmsBorderServiceImpl.java @@ -27,9 +27,13 @@ public class ThirdWmsBorderServiceImpl implements ThirdWmsBorderService { public Map monthRawAmount() { BigDecimal monthRawInAmount = wmsRawInstockMapper.monthRawInAmount(); BigDecimal monthRawOutAmount = wmsRawOutstockMapper.monthRawOutAmount(); + BigDecimal dayRawInAmount = wmsRawInstockMapper.dayRawInAmount(); + BigDecimal dayRawOutAmount = wmsRawOutstockMapper.dayRawOutAmount(); HashMap hashMap = new HashMap(); hashMap.put("monthRawInAmount",monthRawInAmount); hashMap.put("monthRawOutAmount",monthRawOutAmount); + hashMap.put("dayRawInAmount",dayRawInAmount); + hashMap.put("dayRawOutAmount",dayRawOutAmount); return hashMap; } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/MesProductOrder.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/MesProductOrder.java new file mode 100644 index 00000000..8b51101b --- /dev/null +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/MesProductOrder.java @@ -0,0 +1,609 @@ +package com.hw.wms.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.hw.common.core.annotation.Excel; +import com.hw.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 生产工单对象 mes_product_order + * + * @author Yinq + * @date 2024-02-20 + */ +public class MesProductOrder extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 主键标识 + */ + private Long productOrderId; + + /** + * 工单编号 + */ + @Excel(name = "工单编号") + private String orderCode; + + /** + * 销售订单ID,关联mes_sale_order的order_id;一个销售订单可以有多个生产工单 + */ + @Excel(name = "销售订单ID") + private Long saleOrderId; + + /** + * 销售订单编号 + */ + @Excel(name = "销售订单编号") + private String saleorderCode; + + /** + * 销售订单行号 + */ + @Excel(name = "销售订单行号") + private String saleorderLinenumber; + + /** + * 项目编号 + */ + @Excel(name = "项目编号") + private String projectNo; + + /** + * 销售类型 + */ + @Excel(name = "销售类型(1外部销售 2对内生产 3集装箱生产)") + private String saleType; + + /** + * 物料ID,关联mes_base_material_info的material_id;成品信息 + */ + @Excel(name = "物料ID") + private Long materialId; + + /** + * 物料bomID,关联mes_material_bom的material_bom_id;默认选择最新的正常状态的bom,可修改 + */ + @Excel(name = "物料bomID") + private Long materialBomId; + + /**对内生产生产的实际物料信息*/ + private Long produceMaterialId; + + /** + * BOM说明 + */ + @Excel(name = "BOM说明") + private String materialBomDesc; + + /** + * 派工类型(1产线 2工艺路线) + */ + @Excel(name = "派工类型") + private String dispatchType; + + /** + * 派工ID(派工类型为产线关联产线主键,派工类型为工艺路线关联工艺路线主键) + */ + @Excel(name = "派工ID") + private Long dispatchId; + + + /** + * 柜体渠道 + */ + private String cabinetChannel; + + + /** + * 销售数量;销售订单的销售数量 + */ + @Excel(name = "销售数量") + private BigDecimal saleAmount; + + /** + * 计划数量 + */ + @Excel(name = "计划数量") + private BigDecimal planAmount; + + /** + * 已派工数量;派工类型是工艺路线的每个工位派工数量相同,派工类型是产线的派工数量是所有工位累加的 + */ + @Excel(name = "已派工数量") + private BigDecimal dispatchAmount; + + /** + * 完成数量 + */ + @Excel(name = "完成数量") + private BigDecimal completeAmount; + + /** + * 发布时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "发布时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date releaseTime; + + /** + * 计划开始时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "计划开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date planBeginTime; + + /** + * 计划结束时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "计划结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date planEndTime; + + /** + * 开始时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date realBeginTime; + + /** + * 完成时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date realEndTime; + + /** + * 计划交货日期 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "计划交货日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date planDeliveryDate; + + /** + * 工单状态:0-待发布;1-已发布;2-已完成;3-已开始;4-暂停;8-已撤回;9-已删除 + */ + @Excel(name = "工单状态") + private String orderStatus; + + /** + * 库存锁定标识:1-是;0-否 + */ + @Excel(name = "库存锁定标识") + private String stockLockFlag; + + /** + * 是否销售订单创建生产工单(1=是;0=否) + */ + private String saleOrderFlag; + + /** + * 工艺路线名称 + */ + @Excel(name = "工艺路线名称") + private String dispatchName; + + /** + * 成品编号 + */ + @Excel(name = "成品编号") + private String materialCode; + + /** + * 成品名称 + */ + @Excel(name = "成品名称") + private String materialName; + + /** + * 成品规格 + */ + private String materialSpec; + + /** + * 生产物料编号 + */ + private String produceMaterialCode; + + /** + * 生产物料名称 + */ + private String produceMaterialName; + + /** + * 生产物料规格 + */ + private String produceMaterialSpec; + + /** + * 单位时间 + */ + @Excel(name = "单位时间") + private Long productionTime; + + /** + * 前置生产工单ID + */ + @Excel(name = "前置生产工单ID") + private Long preOrderId; + + /** + * 前置生产工单编号 + */ + @Excel(name = "前置生产工单编号") + private String preOrderCode; + + /** MesProductPlan主键标识 */ + private Long planId; + + /** + * MesProductPlan计划编号 + */ + private String planCode; + + /** + * 时间范围-计划开始结束时间 + */ + private List planDateRange; + + public List getPlanDateRange() { + return planDateRange; + } + + public void setPlanDateRange(List planDateRange) { + this.planDateRange = planDateRange; + } + + public Long getPlanId() { + return planId; + } + + public void setPlanId(Long planId) { + this.planId = planId; + } + + public String getPlanCode() { + return planCode; + } + + public void setPlanCode(String planCode) { + this.planCode = planCode; + } + + public String getPreOrderCode() { + return preOrderCode; + } + + public void setPreOrderCode(String preOrderCode) { + this.preOrderCode = preOrderCode; + } + + public Long getPreOrderId() { + return preOrderId; + } + + public void setPreOrderId(Long preOrderId) { + this.preOrderId = preOrderId; + } + + public Long getProductionTime() { + return productionTime; + } + + public void setProductionTime(Long productionTime) { + this.productionTime = productionTime; + } + + public String getMaterialBomDesc() { + return materialBomDesc; + } + + public void setMaterialBomDesc(String materialBomDesc) { + this.materialBomDesc = materialBomDesc; + } + + public String getDispatchName() { + return dispatchName; + } + + public void setDispatchName(String dispatchName) { + this.dispatchName = dispatchName; + } + + + + public Date getPlanDeliveryDate() { + return planDeliveryDate; + } + + public void setPlanDeliveryDate(Date planDeliveryDate) { + this.planDeliveryDate = planDeliveryDate; + } + + public String getSaleOrderFlag() { + return saleOrderFlag; + } + + public void setSaleOrderFlag(String saleOrderFlag) { + this.saleOrderFlag = saleOrderFlag; + } + + public void setProductOrderId(Long productOrderId) { + this.productOrderId = productOrderId; + } + + public Long getProductOrderId() { + return productOrderId; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderCode() { + return orderCode; + } + + public void setSaleOrderId(Long saleOrderId) { + this.saleOrderId = saleOrderId; + } + + public Long getSaleOrderId() { + return saleOrderId; + } + + public void setSaleorderCode(String saleorderCode) { + this.saleorderCode = saleorderCode; + } + + public String getSaleorderCode() { + return saleorderCode; + } + + public void setSaleorderLinenumber(String saleorderLinenumber) { + this.saleorderLinenumber = saleorderLinenumber; + } + + public String getSaleorderLinenumber() { + return saleorderLinenumber; + } + + public void setProjectNo(String projectNo) { + this.projectNo = projectNo; + } + + public String getProjectNo() { + return projectNo; + } + + public String getSaleType() { + return saleType; + } + + public void setSaleType(String saleType) { + this.saleType = saleType; + } + + public void setMaterialId(Long materialId) { + this.materialId = materialId; + } + + public Long getMaterialId() { + return materialId; + } + + public void setMaterialBomId(Long materialBomId) { + this.materialBomId = materialBomId; + } + + public Long getMaterialBomId() { + return materialBomId; + } + + public Long getProduceMaterialId() { + return produceMaterialId; + } + + public void setProduceMaterialId(Long produceMaterialId) { + this.produceMaterialId = produceMaterialId; + } + + public void setDispatchType(String dispatchType) { + this.dispatchType = dispatchType; + } + + public String getDispatchType() { + return dispatchType; + } + + public void setDispatchId(Long dispatchId) { + this.dispatchId = dispatchId; + } + + public Long getDispatchId() { + return dispatchId; + } + + public String getCabinetChannel() { + return cabinetChannel; + } + + public void setCabinetChannel(String cabinetChannel) { + this.cabinetChannel = cabinetChannel; + } + + public void setSaleAmount(BigDecimal saleAmount) { + this.saleAmount = saleAmount; + } + + public BigDecimal getSaleAmount() { + return saleAmount; + } + + public void setPlanAmount(BigDecimal planAmount) { + this.planAmount = planAmount; + } + + public BigDecimal getPlanAmount() { + return planAmount; + } + + public void setDispatchAmount(BigDecimal dispatchAmount) { + this.dispatchAmount = dispatchAmount; + } + + public BigDecimal getDispatchAmount() { + return dispatchAmount; + } + + public void setCompleteAmount(BigDecimal completeAmount) { + this.completeAmount = completeAmount; + } + + public BigDecimal getCompleteAmount() { + return completeAmount; + } + + public void setReleaseTime(Date releaseTime) { + this.releaseTime = releaseTime; + } + + public Date getReleaseTime() { + return releaseTime; + } + + public void setPlanBeginTime(Date planBeginTime) { + this.planBeginTime = planBeginTime; + } + + public Date getPlanBeginTime() { + return planBeginTime; + } + + public void setPlanEndTime(Date planEndTime) { + this.planEndTime = planEndTime; + } + + public Date getPlanEndTime() { + return planEndTime; + } + + public void setRealBeginTime(Date realBeginTime) { + this.realBeginTime = realBeginTime; + } + + public Date getRealBeginTime() { + return realBeginTime; + } + + public void setRealEndTime(Date realEndTime) { + this.realEndTime = realEndTime; + } + + public Date getRealEndTime() { + return realEndTime; + } + + public void setOrderStatus(String orderStatus) { + this.orderStatus = orderStatus; + } + + public String getOrderStatus() { + return orderStatus; + } + + public void setStockLockFlag(String stockLockFlag) { + this.stockLockFlag = stockLockFlag; + } + + public String getStockLockFlag() { + return stockLockFlag; + } + + public String getMaterialCode() { + return materialCode; + } + + public void setMaterialCode(String materialCode) { + this.materialCode = materialCode; + } + + public String getMaterialName() { + return materialName; + } + + public void setMaterialName(String materialName) { + this.materialName = materialName; + } + + + public String getMaterialSpec() { + return materialSpec; + } + + public void setMaterialSpec(String materialSpec) { + this.materialSpec = materialSpec; + } + + public String getProduceMaterialCode() { + return produceMaterialCode; + } + + public void setProduceMaterialCode(String produceMaterialCode) { + this.produceMaterialCode = produceMaterialCode; + } + + public String getProduceMaterialName() { + return produceMaterialName; + } + + public void setProduceMaterialName(String produceMaterialName) { + this.produceMaterialName = produceMaterialName; + } + + public String getProduceMaterialSpec() { + return produceMaterialSpec; + } + + public void setProduceMaterialSpec(String produceMaterialSpec) { + this.produceMaterialSpec = produceMaterialSpec; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("productOrderId", getProductOrderId()) + .append("orderCode", getOrderCode()) + .append("saleOrderId", getSaleOrderId()) + .append("saleorderCode", getSaleorderCode()) + .append("saleorderLinenumber", getSaleorderLinenumber()) + .append("projectNo", getProjectNo()) + .append("materialId", getMaterialId()) + .append("materialBomId", getMaterialBomId()) + .append("dispatchType", getDispatchType()) + .append("dispatchId", getDispatchId()) + .append("saleAmount", getSaleAmount()) + .append("planAmount", getPlanAmount()) + .append("dispatchAmount", getDispatchAmount()) + .append("completeAmount", getCompleteAmount()) + .append("releaseTime", getReleaseTime()) + .append("planBeginTime", getPlanBeginTime()) + .append("planEndTime", getPlanEndTime()) + .append("realBeginTime", getRealBeginTime()) + .append("realEndTime", getRealEndTime()) + .append("orderStatus", getOrderStatus()) + .append("stockLockFlag", getStockLockFlag()) + .append("remark", getRemark()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsProductInstock.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsProductInstock.java index ab3c54f1..b39463c0 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsProductInstock.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/domain/WmsProductInstock.java @@ -163,6 +163,7 @@ public class WmsProductInstock extends BaseEntity { @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "结束时间;agv处理结束时间", width = 30, dateFormat = "yyyy-MM-dd") private Date endTime; + private Date day; /** 同步ERP状态(0:失败,1成功) */ @Excel(name = "同步ERP状态(0:失败,1成功)") @@ -453,6 +454,13 @@ public class WmsProductInstock extends BaseEntity { public Date getEndTime() { return endTime; } + public void setDay(Date day) { + this.day = day; + } + + public Date getDay() { + return day; + } public String getErpStatus() { return erpStatus; diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsBaseLocationMapper.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsBaseLocationMapper.java index 632367e3..94325f2b 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsBaseLocationMapper.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsBaseLocationMapper.java @@ -101,4 +101,20 @@ public interface WmsBaseLocationMapper int selectAllProductLocation(); int selectAllProductEmptyLocation(); + + int stockAmount(); + + int nostockAmount(); + + Integer selectFourthLocation(); + + Integer selectFourthNostockLocation(); + + int productstockAmount(); + + int noProductstockAmount(); + + Integer selectFourthFustockLocation(); + + Integer selectFourthNoFustockLocation(); } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsProductInstockMapper.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsProductInstockMapper.java index e8988211..04a5b512 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsProductInstockMapper.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsProductInstockMapper.java @@ -100,4 +100,8 @@ public interface WmsProductInstockMapper List selectWmsProductInstockJoinList(WmsProductInstock wmsProductInstock); List locationCount(); + + List productInInfo(); + + List productFirstInInfo(); } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsProductOutstockMapper.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsProductOutstockMapper.java index 03502502..c17b5850 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsProductOutstockMapper.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsProductOutstockMapper.java @@ -1,5 +1,6 @@ package com.hw.wms.mapper; +import java.math.BigDecimal; import java.util.List; import com.hw.wms.domain.WmsProductOutstock; import com.hw.wms.domain.WmsProductOutstockDetail; @@ -145,4 +146,8 @@ public interface WmsProductOutstockMapper List locationCount(); List scheduleTask(); + + BigDecimal todayOutstockAmount(); + + BigDecimal monthOutstockAmount(); } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsProductStockMapper.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsProductStockMapper.java index 64e8d50d..29b6e3c9 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsProductStockMapper.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsProductStockMapper.java @@ -157,4 +157,6 @@ public interface WmsProductStockMapper int selectTotalLocation(); int selectOpplyLocation(); + + BigDecimal monthInstockAmount(); } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsRawInstockMapper.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsRawInstockMapper.java index 63e0d088..9f548e91 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsRawInstockMapper.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsRawInstockMapper.java @@ -3,8 +3,11 @@ package com.hw.wms.mapper; import java.math.BigDecimal; import java.util.List; +import com.hw.wms.domain.MesProductOrder; import com.hw.wms.domain.WmsProductInstock; import com.hw.wms.domain.WmsRawInstock; +import com.hw.wms.domain.WmsRawOutstock; +import org.apache.ibatis.annotations.Param; /** * 原材料入库记录Mapper接口 @@ -92,4 +95,16 @@ public interface WmsRawInstockMapper BigDecimal monthRawInAmount(); + + List selectInAndOutInfo(); + + List fourthInstockList(); + + List purchaseInfo(); + + List bomInfo(@Param("dispatchId") int dispatchId); + + List purchaseFirstInfo(); + + BigDecimal dayRawInAmount(); } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsRawOutstockMapper.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsRawOutstockMapper.java index 4c171af4..6c5d74de 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsRawOutstockMapper.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/mapper/WmsRawOutstockMapper.java @@ -2,6 +2,8 @@ package com.hw.wms.mapper; import java.math.BigDecimal; import java.util.List; + +import com.hw.wms.domain.WmsProductInstock; import com.hw.wms.domain.WmsRawOutstock; import com.hw.wms.domain.WmsRawOutstockDetail; @@ -160,4 +162,16 @@ public interface WmsRawOutstockMapper BigDecimal monthRawOutAmount(); List productPlan(); + + List selectInAndOutInfo(); + + List fourthOutstockList(); + + List productOutInfo(); + + List productFirstOutInfo(); + + BigDecimal dayRawInAmount(); + + BigDecimal dayRawOutAmount(); } diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsErpScheduledTaskServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsErpScheduledTaskServiceImpl.java index 2e57348a..d50cf2a3 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsErpScheduledTaskServiceImpl.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsErpScheduledTaskServiceImpl.java @@ -70,7 +70,7 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi * @return */ @Override - @Transactional +// @Transactional public int synchronizeInventoryInformationToERP() { WmsRawInstock wmsRawInstock = new WmsRawInstock(); int result = 0; @@ -123,7 +123,7 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi log.info("synchronizeInventoryInformationToERP同步原材料入库成功:" + paramsResult.toString()); } else { log.error("synchronizeInventoryInformationToERP同步原材料入库失败:" + paramsResult.toString()); - throw new RuntimeException("同步原材料入库失败" + paramsResult.toString()); + throw new ServiceException("同步原材料入库失败" + paramsResult.toString()); } } @@ -133,17 +133,16 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi * @return */ @Override - @Transactional public int synchronizeRawMaterialDeliveryInformationToERP() { int result = 0; -// WmsRawOutstock otherRawOutstock = new WmsRawOutstock(); -// otherRawOutstock.setTaskTypeStr(WmsConstants.WMS_RAW_OUTSTOCK_TASK_TYPE_PRODUCTION_PICKING + "," + WmsConstants.WMS_RAW_OUTSTOCK_TASK_TYPE_PRODUCTION_INSTALL -// + "," + WmsConstants.WMS_RAW_OUTSTOCK_TASK_TYPE_OTHER); -// List otherRawOutstockList = wmsRawOutstockMapper.selectWmsRawOutstockERPNotSynchronized(otherRawOutstock); -// Map> otherMaterialIdMap = otherRawOutstockList.stream().collect(Collectors.groupingBy(WmsRawOutstock::getMaterialId)); -// for (Long materialId : otherMaterialIdMap.keySet()) { -// result += syncOutstockInformation(otherMaterialIdMap, materialId, ""); -// } + WmsRawOutstock otherRawOutstock = new WmsRawOutstock(); + otherRawOutstock.setTaskTypeStr(WmsConstants.WMS_RAW_OUTSTOCK_TASK_TYPE_PRODUCTION_PICKING + "," + WmsConstants.WMS_RAW_OUTSTOCK_TASK_TYPE_PRODUCTION_INSTALL + + "," + WmsConstants.WMS_RAW_OUTSTOCK_TASK_TYPE_OTHER); + List otherRawOutstockList = wmsRawOutstockMapper.selectWmsRawOutstockERPNotSynchronized(otherRawOutstock); + Map> otherMaterialIdMap = otherRawOutstockList.stream().collect(Collectors.groupingBy(WmsRawOutstock::getMaterialId)); + for (Long materialId : otherMaterialIdMap.keySet()) { + result += syncOutstockInformation(otherMaterialIdMap, materialId, ""); + } WmsRawOutstock returnRawOutstock = new WmsRawOutstock(); returnRawOutstock.setTaskType(WmsConstants.WMS_RAW_OUTSTOCK_TASK_TYPE_RETURN_OUTSTOCK); diff --git a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsProductOutstockServiceImpl.java b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsProductOutstockServiceImpl.java index 75b936e4..0db30e34 100644 --- a/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsProductOutstockServiceImpl.java +++ b/hw-modules/hw-wms/src/main/java/com/hw/wms/service/impl/WmsProductOutstockServiceImpl.java @@ -382,7 +382,7 @@ public class WmsProductOutstockServiceImpl implements IWmsProductOutstockService wmsProductOutstock.setPlanDetailCode(planDetailCode); wmsProductOutstock.setSaleOrderId(saleOrderId); wmsProductOutstock.setSaleorderCode(saleorderCode); - wmsProductOutstock.setProductBatch(materialBarcode); + wmsProductOutstock.setProductBatch(mesBaseBarcodeInfo.getBarcodeInfo()); wmsProductOutstock.setApplyBy(userName); wmsProductOutstock.setApplyDate(currentDate); wmsProductOutstock.setTaskCode(Seq.getId(Seq.productOutstockSeqType, Seq.productOutstockCode)); @@ -448,7 +448,7 @@ public class WmsProductOutstockServiceImpl implements IWmsProductOutstockService } productOutstock.setUpdateDate(currentDate); productOutstock.setUpdateBy(userName); - productOutstock.setProductBatch(materialBarcode); + productOutstock.setProductBatch(mesBaseBarcodeInfo.getBarcodeInfo()); wmsProductOutstockMapper.updateWmsProductOutstock(productOutstock); wmsProductStockMapper.deleteWmsProductStockByProductStockId(productStock.getProductStockId()); diff --git a/hw-modules/hw-wms/src/main/resources/bootstrap.yml b/hw-modules/hw-wms/src/main/resources/bootstrap.yml index e8b92a2f..b14b326d 100644 --- a/hw-modules/hw-wms/src/main/resources/bootstrap.yml +++ b/hw-modules/hw-wms/src/main/resources/bootstrap.yml @@ -1,4 +1,4 @@ -# Tomcat +# 测试92服务器 server: port: 7304 @@ -15,13 +15,13 @@ spring: discovery: # 服务注册地址 server-addr: 175.27.215.92:8848 - namespace: jyhb-test - group: xins1 + namespace: jyhb100 + group: jyhb config: # 配置中心地址 server-addr: 175.27.215.92:8848 - namespace: jyhb-test - group: xins1 + namespace: jyhb100 + group: jyhb # 配置文件格式 file-extension: yml # 共享配置 @@ -29,9 +29,7 @@ spring: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} - - -## Tomcat +## 92服务器 #server: # port: 7304 # @@ -60,3 +58,67 @@ spring: # # 共享配置 # shared-configs: # - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + + +## 测试100正式服务器 +#server: +# port: 7304 +# +## Spring +#spring: +# application: +# # 应用名称 +# name: hw-wms +# profiles: +# # 环境配置 +# active: dev +# cloud: +# nacos: +# discovery: +# # 服务注册地址 +# server-addr: 127.0.0.1:8848 +# namespace: jyhb100 +# group: xins +# config: +# # 配置中心地址 +# server-addr: 127.0.0.1:8848 +# namespace: jyhb100 +# group: xins +# # 配置文件格式 +# file-extension: yml +# # 共享配置 +# shared-configs: +# - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + + + + +## 正式服务器 +#server: +# port: 7304 +# +## Spring +#spring: +# application: +# # 应用名称 +# name: hw-wms +# profiles: +# # 环境配置 +# active: dev +# cloud: +# nacos: +# discovery: +# # 服务注册地址 +# server-addr: 172.16.12.100:8848 +# namespace: jyhb +# group: jyhb +# config: +# # 配置中心地址 +# server-addr: 172.16.12.100:8848 +# namespace: jyhb +# group: jyhb +# # 配置文件格式 +# file-extension: yml +# # 共享配置 +# shared-configs: +# - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsBaseLocationMapper.xml b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsBaseLocationMapper.xml index e65748c1..9253cc98 100644 --- a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsBaseLocationMapper.xml +++ b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsBaseLocationMapper.xml @@ -300,7 +300,8 @@ order by location_code SELECT x.* FROM `hwjy-cloud`.wms_base_location x where x.warehouse_id = 531 + + + + + + + + diff --git a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductInstockMapper.xml b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductInstockMapper.xml index 03367ebd..611ba560 100644 --- a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductInstockMapper.xml +++ b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductInstockMapper.xml @@ -257,6 +257,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and (wpi.erp_status is null or wpi.erp_status != '1') and wpi.instock_type = '1' and mbmi.material_classfication = '1' + and mbmi.material_unit_id is not null and mbmi.material_unit_id !='' and wpi.apply_date between #{beginTime} and #{endTime} @@ -306,4 +307,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" apply_date > now() - interval 1 month and warehouse_id = 531 + + diff --git a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductOutstockMapper.xml b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductOutstockMapper.xml index 9d6b89fd..4404d9ef 100644 --- a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductOutstockMapper.xml +++ b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductOutstockMapper.xml @@ -334,6 +334,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and wpo.apply_qty >= wpo.outstock_qty and wpo.outstock_qty > if(wpo.erp_amount is null, 0, wpo.erp_amount) and mbmi.material_classfication = '1' + and mbmi.material_unit_id is not null and mbmi.material_unit_id !='' and wpi.apply_date between #{beginTime} and #{endTime} @@ -413,6 +414,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + update wms_product_outstock diff --git a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductStockMapper.xml b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductStockMapper.xml index 0b549631..0badad0e 100644 --- a/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductStockMapper.xml +++ b/hw-modules/hw-wms/src/main/resources/mapper/wms/WmsProductStockMapper.xml @@ -384,7 +384,7 @@ +