From 15581ac8a3abd51dd1d0d4187d46e5df175f99fb Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Thu, 9 Nov 2023 16:44:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=8E=A5=E5=8F=A3=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=EF=BC=8C=E5=8E=BB=E6=8E=89scada=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/domain/mes/MesReportWorkDTO.java | 609 ++++++++++++++++++ .../controller/WCSInterfaceController.java | 5 + .../mapper/mes/MesReportWorkMapper.xml | 2 +- op-modules/{op-scada => op-open}/pom.xml | 4 +- .../push-scada.bat => op-open/push-open.bat} | 5 +- .../java/com/op/open/OpenApplication.java} | 10 +- .../op/open}/config/DynamicDatasource.java | 2 +- .../op/open/controller/OpenController.java | 63 ++ .../java/com/op/open/mapper/OpenMapper.java | 42 ++ .../java/com/op/open/service/OpenService.java | 18 + .../open/service/impl/OpenServiceImpl.java} | 111 +++- .../src/main/resources/banner.txt | 0 .../src/main/resources/bootstrap.yml | 4 +- .../src/main/resources/logback.xml | 0 .../main/resources/mapper/open/OpenMapper.xml | 112 ++++ .../java/com/op/scada/mapper/ScadaMapper.java | 27 - .../com/op/scada/service/ScadaService.java | 18 - .../resources/mapper/scada/ScadaMapper.xml | 49 -- .../security}/controller/ScadaController.java | 8 +- op-modules/pom.xml | 2 +- 20 files changed, 963 insertions(+), 128 deletions(-) create mode 100644 op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/MesReportWorkDTO.java rename op-modules/{op-scada => op-open}/pom.xml (97%) rename op-modules/{op-scada/push-scada.bat => op-open/push-open.bat} (91%) rename op-modules/{op-scada/src/main/java/com/op/scada/ScadaApplication.java => op-open/src/main/java/com/op/open/OpenApplication.java} (84%) rename op-modules/{op-scada/src/main/java/com/op/scada => op-open/src/main/java/com/op/open}/config/DynamicDatasource.java (98%) create mode 100644 op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java create mode 100644 op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java create mode 100644 op-modules/op-open/src/main/java/com/op/open/service/OpenService.java rename op-modules/{op-scada/src/main/java/com/op/scada/service/impl/ScadaServiceImpl.java => op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java} (54%) rename op-modules/{op-scada => op-open}/src/main/resources/banner.txt (100%) rename op-modules/{op-scada => op-open}/src/main/resources/bootstrap.yml (95%) rename op-modules/{op-scada => op-open}/src/main/resources/logback.xml (100%) create mode 100644 op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml delete mode 100644 op-modules/op-scada/src/main/java/com/op/scada/mapper/ScadaMapper.java delete mode 100644 op-modules/op-scada/src/main/java/com/op/scada/service/ScadaService.java delete mode 100644 op-modules/op-scada/src/main/resources/mapper/scada/ScadaMapper.xml rename op-modules/{op-scada/src/main/java/com/op/scada => op-security/src/main/java/com/op/security}/controller/ScadaController.java (87%) diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/MesReportWorkDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/MesReportWorkDTO.java new file mode 100644 index 000000000..af864d580 --- /dev/null +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/MesReportWorkDTO.java @@ -0,0 +1,609 @@ +package com.op.system.api.domain.mes; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.op.common.core.annotation.Excel; +import com.op.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; + +/** + * 报工报表对象 mes_report_work + * + * @author Open Platform + * @date 2023-08-24 + */ +public class MesReportWorkDTO extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** 记录id */ + private String id; + + /** 报工单编号 */ + @Excel(name = "报工单编号") + private String reportCode; + + /** 报工类型,报工类型:SELF自行报工、UNI统一报工 */ + @Excel(name = "报工类型,报工类型:SELF上位机报工、UNI系统报工") + private String reportType; + + /** 生产工单编码 */ + @Excel(name = "生产工单编码") + private String workorderCode; + + /** 产品编码 */ + @Excel(name = "产品编码") + private String productCode; + + /** 产品名称 */ + @Excel(name = "产品名称") + private String productName; + + /** 规格型号 */ + @Excel(name = "规格型号") + private String spec; + + /** 单位 */ + @Excel(name = "单位") + private String unit; + + /** 排产数量 */ + @Excel(name = "排产数量") + private BigDecimal quantity; + + /** 本次报工数量 */ + @Excel(name = "本次报工数量") + private BigDecimal quantityFeedback; + + /** 合格数量 */ + //@Excel(name = "合格数量") + private BigDecimal quantityQualified; + + /** 不合格数量 */ + //@Excel(name = "不合格数量") + private BigDecimal quantityUnqualified; + + /** 报工人员 */ + @Excel(name = "报工人员") + private String userName; + + /** 人员名称 */ + @Excel(name = "人员名称") + private String nickName; + + /** 报工途径:PAD、MOBILE、PC */ + //@Excel(name = "报工途径:PAD、MOBILE、PC") + private String feedbackChannel; + + /** 报工时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "报工时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date feedbackTime; + + /** 录入人员 */ + @Excel(name = "录入人员") + private String recordUser; + + /** 状态 */ + @Excel(name = "状态") + private String status; + + /** 工时 */ + @Excel(name = "工时") + private Long workTime; + + /** 线体编码 */ + @Excel(name = "线体编码") + private String machineCode; + + /** 线体名称 */ + @Excel(name = "线体名称") + private String machineName; + + /** 班组编码 */ + @Excel(name = "班组编码") + private String teamCode; + + /** 班次编码 */ + @Excel(name = "班次编码") + private String shiftCode; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "SAP报工时间") + private Date uploadTime; + @Excel(name = "SAP报工状态0待报工1成功2失败") + private String uploadStatus; + @Excel(name = "SAP报工信息") + private String uploadMsg; + /** 预留字段1 */ + //@Excel(name = "预留字段1") + private String attr1; + + /** 预留字段2 */ + //@Excel(name = "预留字段2") + private String attr2; + + /** 预留字段3 */ + //@Excel(name = "预留字段3") + private String attr3; + + /** 预留字段4 */ + //@Excel(name = "预留字段4") + private String attr4; + @Excel(name = "计划生产日期") + private String productDate; + private String productDateStart; + private String productDateEnd; + @Excel(name = "订单编号") + private String orderCode; + @Excel(name = "规格型号") + private String productSpc; + @Excel(name = "工序名称") + private String processName; + @Excel(name = "工序编码") + private String processCode; + private String factoryCode; + private String factoryName; + private String carCode; + private String carName; + private String workorderCodeSap; + private String routeCode; + private String sac1; + private String sac2; + private String sac3; + private String sac4; + private String sac5; + private String sac6; + private String prodType; + private String createTimeStart; + private String createTimeEnd; + private String feedbackTimeStart; + private String feedbackTimeEnd; + + public String getFeedbackTimeStart() { + return feedbackTimeStart; + } + + public void setFeedbackTimeStart(String feedbackTimeStart) { + this.feedbackTimeStart = feedbackTimeStart; + } + + public String getFeedbackTimeEnd() { + return feedbackTimeEnd; + } + + public void setFeedbackTimeEnd(String feedbackTimeEnd) { + this.feedbackTimeEnd = feedbackTimeEnd; + } + + public String getCreateTimeStart() { + return createTimeStart; + } + + public void setCreateTimeStart(String createTimeStart) { + this.createTimeStart = createTimeStart; + } + + public String getCreateTimeEnd() { + return createTimeEnd; + } + + public void setCreateTimeEnd(String createTimeEnd) { + this.createTimeEnd = createTimeEnd; + } + + public String getProdType() { + return prodType; + } + + public void setProdType(String prodType) { + this.prodType = prodType; + } + + public String getWorkorderCodeSap() { + return workorderCodeSap; + } + + public void setWorkorderCodeSap(String workorderCodeSap) { + this.workorderCodeSap = workorderCodeSap; + } + + public String getRouteCode() { + return routeCode; + } + + public void setRouteCode(String routeCode) { + this.routeCode = routeCode; + } + + public String getSac1() { + return sac1; + } + + public void setSac1(String sac1) { + this.sac1 = sac1; + } + + public String getSac2() { + return sac2; + } + + public void setSac2(String sac2) { + this.sac2 = sac2; + } + + public String getSac3() { + return sac3; + } + + public void setSac3(String sac3) { + this.sac3 = sac3; + } + + public String getSac4() { + return sac4; + } + + public void setSac4(String sac4) { + this.sac4 = sac4; + } + + public String getSac5() { + return sac5; + } + + public void setSac5(String sac5) { + this.sac5 = sac5; + } + + public String getSac6() { + return sac6; + } + + public void setSac6(String sac6) { + this.sac6 = sac6; + } + + public Date getUploadTime() { + return uploadTime; + } + + public void setUploadTime(Date uploadTime) { + this.uploadTime = uploadTime; + } + + public String getUploadStatus() { + return uploadStatus; + } + + public void setUploadStatus(String uploadStatus) { + this.uploadStatus = uploadStatus; + } + + public String getUploadMsg() { + return uploadMsg; + } + + public void setUploadMsg(String uploadMsg) { + this.uploadMsg = uploadMsg; + } + + public String getFactoryCode() { + return factoryCode; + } + + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } + + public String getFactoryName() { + return factoryName; + } + + public void setFactoryName(String factoryName) { + this.factoryName = factoryName; + } + + public String getCarCode() { + return carCode; + } + + public void setCarCode(String carCode) { + this.carCode = carCode; + } + + public String getCarName() { + return carName; + } + + public void setCarName(String carName) { + this.carName = carName; + } + + public String getProcessCode() { + return processCode; + } + + public void setProcessCode(String processCode) { + this.processCode = processCode; + } + + public String getProductDateStart() { + return productDateStart; + } + + public void setProductDateStart(String productDateStart) { + this.productDateStart = productDateStart; + } + + public String getProductDateEnd() { + return productDateEnd; + } + + public void setProductDateEnd(String productDateEnd) { + this.productDateEnd = productDateEnd; + } + + public void setId(String id) { + this.id = id; + } + + public String getId() { + return id; + } + + public void setReportType(String reportType) { + this.reportType = reportType; + } + public String getReportType() { + return reportType; + } + + public void setReportCode(String reportCode) { + this.reportCode = reportCode; + } + public String getReportCode() { + return reportCode; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + + public String getWorkorderCode() { + return workorderCode; + } + public void setProductCode(String productCode) { + this.productCode = productCode; + } + + public String getProductCode() { + return productCode; + } + public void setProductName(String productName) { + this.productName = productName; + } + + public String getProductName() { + return productName; + } + public void setSpec(String spec) { + this.spec = spec; + } + + public String getSpec() { + return spec; + } + public void setUnit(String unit) { + this.unit = unit; + } + + public String getUnit() { + return unit; + } + public void setQuantity(BigDecimal quantity) { + this.quantity = quantity; + } + + public BigDecimal getQuantity() { + return quantity; + } + public void setQuantityFeedback(BigDecimal quantityFeedback) { + this.quantityFeedback = quantityFeedback; + } + + public BigDecimal getQuantityFeedback() { + return quantityFeedback; + } + public void setQuantityQualified(BigDecimal quantityQualified) { + this.quantityQualified = quantityQualified; + } + + public BigDecimal getQuantityQualified() { + return quantityQualified; + } + public void setQuantityUnqualified(BigDecimal quantityUnqualified) { + this.quantityUnqualified = quantityUnqualified; + } + + public BigDecimal getQuantityUnqualified() { + return quantityUnqualified; + } + public void setUserName(String userName) { + this.userName = userName; + } + + public String getUserName() { + return userName; + } + public void setNickName(String nickName) { + this.nickName = nickName; + } + + public String getNickName() { + return nickName; + } + public void setFeedbackChannel(String feedbackChannel) { + this.feedbackChannel = feedbackChannel; + } + + public String getFeedbackChannel() { + return feedbackChannel; + } + public void setFeedbackTime(Date feedbackTime) { + this.feedbackTime = feedbackTime; + } + + public Date getFeedbackTime() { + return feedbackTime; + } + public void setRecordUser(String recordUser) { + this.recordUser = recordUser; + } + + public String getRecordUser() { + return recordUser; + } + public void setStatus(String status) { + this.status = status; + } + + public String getStatus() { + return status; + } + public void setWorkTime(Long workTime) { + this.workTime = workTime; + } + + public Long getWorkTime() { + return workTime; + } + public void setMachineCode(String machineCode) { + this.machineCode = machineCode; + } + + public String getMachineCode() { + return machineCode; + } + public void setMachineName(String machineName) { + this.machineName = machineName; + } + + public String getMachineName() { + return machineName; + } + public void setTeamCode(String teamCode) { + this.teamCode = teamCode; + } + + public String getTeamCode() { + return teamCode; + } + public void setShiftCode(String shiftCode) { + this.shiftCode = shiftCode; + } + + public String getShiftCode() { + return shiftCode; + } + public void setAttr1(String attr1) { + this.attr1 = attr1; + } + + public String getAttr1() { + return attr1; + } + public void setAttr2(String attr2) { + this.attr2 = attr2; + } + + public String getAttr2() { + return attr2; + } + public void setAttr3(String attr3) { + this.attr3 = attr3; + } + + public String getAttr3() { + return attr3; + } + public void setAttr4(String attr4) { + this.attr4 = attr4; + } + + public String getAttr4() { + return attr4; + } + + public String getProductDate() { + return productDate; + } + + public void setProductDate(String productDate) { + this.productDate = productDate; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getProductSpc() { + return productSpc; + } + + public void setProductSpc(String productSpc) { + this.productSpc = productSpc; + } + + public String getProcessName() { + return processName; + } + + public void setProcessName(String processName) { + this.processName = processName; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("reportType", getReportType()) + .append("reportCode", getReportCode()) + .append("workorderCode", getWorkorderCode()) + .append("productCode", getProductCode()) + .append("productName", getProductName()) + .append("spec", getSpec()) + .append("unit", getUnit()) + .append("quantity", getQuantity()) + .append("quantityFeedback", getQuantityFeedback()) + .append("quantityQualified", getQuantityQualified()) + .append("quantityUnqualified", getQuantityUnqualified()) + .append("userName", getUserName()) + .append("nickName", getNickName()) + .append("feedbackChannel", getFeedbackChannel()) + .append("feedbackTime", getFeedbackTime()) + .append("recordUser", getRecordUser()) + .append("status", getStatus()) + .append("remark", getRemark()) + .append("workTime", getWorkTime()) + .append("machineCode", getMachineCode()) + .append("machineName", getMachineName()) + .append("teamCode", getTeamCode()) + .append("shiftCode", getShiftCode()) + .append("attr1", getAttr1()) + .append("attr2", getAttr2()) + .append("attr3", getAttr3()) + .append("attr4", getAttr4()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateTime", getUpdateTime()) + .append("updateBy", getUpdateBy()) + .toString(); + } +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/WCSInterfaceController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/WCSInterfaceController.java index 45ba3d3a2..3b731e6ed 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/WCSInterfaceController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/WCSInterfaceController.java @@ -114,6 +114,11 @@ public class WCSInterfaceController extends BaseController { if(StringUtils.isBlank(mesReportWork.getReportCode())){ return error("[reportCode] is null"); } + + if(mesReportWork.getFactoryCode().indexOf("ds")<0){ + mesReportWork.setFactoryCode("ds_"+mesReportWork.getFactoryCode()); + } + return success(wCInterfaceService.reportWork(mesReportWork)); } diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml index 291fe4f9c..3c14d59ad 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml @@ -412,7 +412,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" s.Shift_Desc shiftName from pro_order_workorder pow left join base_shifts_t s on pow.shift_id = s.Shift_Id - where pow.del_flag = '0' and pow.status != 'w3' and pow.end_flag ='1' + where pow.del_flag = '0' and pow.status = 'w2' and pow.end_flag ='1' order by pow.product_date desc and pow.workorder_code like concat('%', #{workorderCode}, '%') diff --git a/op-modules/op-scada/pom.xml b/op-modules/op-open/pom.xml similarity index 97% rename from op-modules/op-scada/pom.xml rename to op-modules/op-open/pom.xml index 2d99eba55..4dfb4924f 100644 --- a/op-modules/op-scada/pom.xml +++ b/op-modules/op-open/pom.xml @@ -9,10 +9,10 @@ 4.0.0 - op-modules-scada + op-modules-open - op-modules-scada系统模块 + op-modules-open接口模块 diff --git a/op-modules/op-scada/push-scada.bat b/op-modules/op-open/push-open.bat similarity index 91% rename from op-modules/op-scada/push-scada.bat rename to op-modules/op-open/push-open.bat index f0e9c1336..70672bb89 100644 --- a/op-modules/op-scada/push-scada.bat +++ b/op-modules/op-open/push-open.bat @@ -1,8 +1,8 @@ @echo off echo --------------------------------Զǰ޸-------------------------------------- -set jarName=op-modules-scada.jar +set jarName=op-modules-open.jar set profile=dev -set imageURI=192.168.202.36:30002/op-lanju/op-scada +set imageURI=192.168.202.36:30002/op-lanju/op-open rem echo ȡǰַ for /f "tokens=1,2,3 delims=/- " %%a in ("%date%") do @set D=%%a%%b%%c rem echo ȡǰʱַ @@ -28,7 +28,6 @@ if exist %df% ( echo --------------------------------Dockerfile-------------------------------- ::echo FROM 192.168.202.36:30002/library/openjdk:8u131-jdk-alpine >> Dockerfile echo FROM 192.168.202.36:30002/library/openjdk:8-sw66>> Dockerfile -echo RUN apk add --update font-adobe-100dpi ttf-dejavu fontconfig echo COPY %jarName% /application.jar >> Dockerfile echo RUN echo "Asia/Shanghai" ^> /etc/timezone >> Dockerfile echo CMD ["java", "-jar", "-Dspring.profiles.active=%profile%", "application.jar"] >> Dockerfile diff --git a/op-modules/op-scada/src/main/java/com/op/scada/ScadaApplication.java b/op-modules/op-open/src/main/java/com/op/open/OpenApplication.java similarity index 84% rename from op-modules/op-scada/src/main/java/com/op/scada/ScadaApplication.java rename to op-modules/op-open/src/main/java/com/op/open/OpenApplication.java index 2a62c303b..ecb00c84a 100644 --- a/op-modules/op-scada/src/main/java/com/op/scada/ScadaApplication.java +++ b/op-modules/op-open/src/main/java/com/op/open/OpenApplication.java @@ -1,4 +1,4 @@ -package com.op.wms; +package com.op.open; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -7,7 +7,7 @@ import com.op.common.security.annotation.EnableRyFeignClients; import com.op.common.swagger.annotation.EnableCustomSwagger2; /** - * 系统模块 + * 接口模块 * * @author OP */ @@ -15,10 +15,10 @@ import com.op.common.swagger.annotation.EnableCustomSwagger2; @EnableCustomSwagger2 @EnableRyFeignClients @SpringBootApplication -public class ScadaApplication { +public class OpenApplication { public static void main(String[] args) { - SpringApplication.run(ScadaApplication.class, args); - System.err.println("Scada服务启动成功\n" + SpringApplication.run(OpenApplication.class, args); + System.err.println("OPEN接口服务启动成功\n" + " | | \r\n" + " ___ _ __ ______ ___ _ _ ___| |_ ___ _ __ ___ \r\n" + " / _ \\| '_ \\______/ __| | | / __| __/ _ \\ '_ ` _ \\ \r\n" diff --git a/op-modules/op-scada/src/main/java/com/op/scada/config/DynamicDatasource.java b/op-modules/op-open/src/main/java/com/op/open/config/DynamicDatasource.java similarity index 98% rename from op-modules/op-scada/src/main/java/com/op/scada/config/DynamicDatasource.java rename to op-modules/op-open/src/main/java/com/op/open/config/DynamicDatasource.java index 68c1e50fc..b3242fbf5 100644 --- a/op-modules/op-scada/src/main/java/com/op/scada/config/DynamicDatasource.java +++ b/op-modules/op-open/src/main/java/com/op/open/config/DynamicDatasource.java @@ -1,4 +1,4 @@ -package com.op.scada.config; +package com.op.open.config; import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty; import com.op.common.core.domain.R; diff --git a/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java b/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java new file mode 100644 index 000000000..3af445eb0 --- /dev/null +++ b/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java @@ -0,0 +1,63 @@ +package com.op.open.controller; + +import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.StringUtils; +import com.op.common.core.web.controller.BaseController; +import com.op.common.core.web.domain.AjaxResult; +import com.op.open.service.OpenService; +import com.op.system.api.domain.dto.WCSDTO; +import com.op.system.api.domain.mes.MesReportWorkDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * mes上位机专属 + * + * @author sf + * @date 2023-05-18 + */ +@RestController +@RequestMapping("/openInterface") +public class OpenController extends BaseController { + + @Autowired + private OpenService openService; + + + /** + * 下一工序机台集合获取 + * •接口描述:成型机码垛完、暂存区、WCS 请求 MES 获取目的地集合 + * •触发时机:托盘到达 AGV 接驳口 + * @param + * @return + */ + //"下一工序机台集合获取" + @PostMapping("/requestDestinationStations") + public WCSDTO requestDestinationStations(@RequestBody WCSDTO wcsdto) { + if(StringUtils.isBlank(wcsdto.getFactory())){ + wcsdto.setCode("1"); + wcsdto.setMessage("factory is not null"); + return wcsdto; + } + return openService.requestDestinationStations(wcsdto); + } + /**上位机报工**/ + @PostMapping("/reportWork") + public AjaxResult reportWork(@RequestBody MesReportWorkDTO mesReportWork) { + if(StringUtils.isBlank(mesReportWork.getFactoryCode())){ + return error("[factoryCode] is null"); + } + if(StringUtils.isBlank(mesReportWork.getReportCode())){ + return error("[reportCode] is null"); + } + + return success(openService.reportWork(mesReportWork)); + } + + public static void main(String args[]){ + System.out.println(DateUtils.getDate()); + } +} diff --git a/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java b/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java new file mode 100644 index 000000000..9b7462dd1 --- /dev/null +++ b/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java @@ -0,0 +1,42 @@ +package com.op.open.mapper; + +import com.op.system.api.domain.SysSapLog; +import com.op.system.api.domain.mes.MesReportWorkDTO; +import com.op.system.api.domain.mes.ProOrderWorkorderDTO; +import com.op.system.api.domain.mes.ProRfidProcessDetail; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 生产rfid流程Mapper接口 + * + * @author Open Platform + * @date 2023-08-18 + */ +@Mapper +public interface OpenMapper { + + public ProRfidProcessDetail getRfidInfo(String rfidNo); + + public String getStationType(String equipmentCode); + + Integer getEquipNum(String machineCode); + + String getEquipStatus(String machineCode); + + String getEquipMode(String machineCode); + + List getReportWorkList(MesReportWorkDTO mesReportWork); + + void addSapLog(SysSapLog sysSapLog); + + void updateSyncSapStatus(MesReportWorkDTO work); + + MesReportWorkDTO getProdResult(MesReportWorkDTO work); + + void updateWorkOrderStatus(MesReportWorkDTO work); + + ProOrderWorkorderDTO getOrderByCode(String workorderCode); +} + diff --git a/op-modules/op-open/src/main/java/com/op/open/service/OpenService.java b/op-modules/op-open/src/main/java/com/op/open/service/OpenService.java new file mode 100644 index 000000000..8a069cca9 --- /dev/null +++ b/op-modules/op-open/src/main/java/com/op/open/service/OpenService.java @@ -0,0 +1,18 @@ +package com.op.open.service; + +import com.op.common.core.domain.R; +import com.op.system.api.domain.dto.WCSDTO; +import com.op.system.api.domain.mes.MesReportWorkDTO; + +/** + * 订单Service接口 + * + * @author Open Platform + * @date 2023-07-13 + */ +public interface OpenService { + + WCSDTO requestDestinationStations(WCSDTO wcsdto); + + R reportWork(MesReportWorkDTO mesReportWork); +} diff --git a/op-modules/op-scada/src/main/java/com/op/scada/service/impl/ScadaServiceImpl.java b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java similarity index 54% rename from op-modules/op-scada/src/main/java/com/op/scada/service/impl/ScadaServiceImpl.java rename to op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java index f1756488e..c07376b4f 100644 --- a/op-modules/op-scada/src/main/java/com/op/scada/service/impl/ScadaServiceImpl.java +++ b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java @@ -1,23 +1,35 @@ -package com.op.scada.service.impl; +package com.op.open.service.impl; import com.alibaba.fastjson2.JSONArray; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; +import com.op.common.core.domain.R; +import com.op.common.core.utils.DateUtils; import com.op.common.core.utils.bean.BeanUtils; -import com.op.scada.mapper.ScadaMapper; -import com.op.scada.service.ScadaService; +import com.op.common.core.utils.uuid.IdUtils; +import com.op.open.mapper.OpenMapper; +import com.op.open.service.OpenService; +import com.op.system.api.RemoteSapService; +import com.op.system.api.domain.SysSapLog; import com.op.system.api.domain.dto.WCSDTO; import com.op.system.api.domain.dto.WCSDataDTO; +import com.op.system.api.domain.mes.MesReportWorkDTO; +import com.op.system.api.domain.mes.ProOrderWorkorderDTO; import com.op.system.api.domain.mes.ProRfidProcessDetail; +import com.op.system.api.domain.sap.SapRFW; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import java.util.stream.Collectors; /** @@ -27,12 +39,13 @@ import java.util.stream.Collectors; * @date 2023-07-13 */ @Service -public class ScadaServiceImpl implements ScadaService { +public class OpenServiceImpl implements OpenService { protected Logger logger = LoggerFactory.getLogger(getClass()); @Autowired - private ScadaMapper scadaMapper; - + private OpenMapper openMapper; + @Autowired + private RemoteSapService remoteSapService; /**下一工序机台集合获取 * JSON @@ -78,17 +91,17 @@ public class ScadaServiceImpl implements ScadaService { try { BeanUtils.copyBeanProp(dto, wcsdto); //根据rfid跟工单绑定,成型机跟工单绑定,获取对应工艺。 - ProRfidProcessDetail rfidInfo = scadaMapper.getRfidInfo(wcsdto.getRfidNo()); + ProRfidProcessDetail rfidInfo = openMapper.getRfidInfo(wcsdto.getRfidNo()); //获取设备类型 if (rfidInfo != null && StringUtils.isNotBlank(rfidInfo.getMachineCode())) { //设备-工艺路线的设备大范围 String[] machineCodes0 = rfidInfo.getMachineCode().split(","); - String stationType = scadaMapper.getStationType(machineCodes0[0]); + String stationType = openMapper.getStationType(machineCodes0[0]); if (StringUtils.isNotBlank(stationType)) { dto.setStationType(stationType); } //设备-根据工单获取实际规划设备路线 - String machinecode = rfidInfo.getProdLineCode();//scadaMapper.getActuaEquips(rfidInfo); + String machinecode = rfidInfo.getProdLineCode();//openMapper.getActuaEquips(rfidInfo); JSONArray codeArray = JSONArray.parseArray(machinecode); List list2 = new ArrayList<>(); for (int c1 = 0; c1 < codeArray.size(); c1++) { @@ -111,13 +124,13 @@ public class ScadaServiceImpl implements ScadaService { wCSDataDTO = new WCSDataDTO(); if (StringUtils.isNotBlank(machineCode)) { //设备是否正常 - String status = scadaMapper.getEquipStatus(machineCode); + String status = openMapper.getEquipStatus(machineCode); if(StringUtils.isNotBlank(status) && "1".equals(status)){//正常设备且没被删除 wCSDataDTO.setStationNo(machineCode); if ("2".equals(stationType)) { - Integer qty = scadaMapper.getEquipNum(machineCode); + Integer qty = openMapper.getEquipNum(machineCode); wCSDataDTO.setQty(qty == null ? 0 : qty); - String mode = scadaMapper.getEquipMode(machineCode); + String mode = openMapper.getEquipMode(machineCode); wCSDataDTO.setFlag(mode); } stationNos.add(wCSDataDTO); @@ -137,6 +150,78 @@ public class ScadaServiceImpl implements ScadaService { return dto; } + @Override + public R reportWork(MesReportWorkDTO mesReportWork) { + DynamicDataSourceContextHolder.push("ds_"+mesReportWork.getFactoryCode());// 这是数据源的key + + mesReportWork.setUploadStatus("1");//除了1报工成功的,都需要报工 + mesReportWork.setProdType("prod"); + List reportWorks = openMapper.getReportWorkList(mesReportWork); + if(CollectionUtils.isEmpty(reportWorks)){ + return R.fail("未查询到报工单"); + } + + MesReportWorkDTO work = reportWorks.get(0); + SapRFW sapRFW = new SapRFW(); + sapRFW.setAufnr(work.getWorkorderCodeSap());//虚拟工单号 + sapRFW.setGamng(work.getQuantityFeedback().toString());//报工数量 + SapRFW.lt_gs ltgs = sapRFW.new lt_gs();//生产订单报工工时修改 + ltgs.setConf_activity1(work.getSac1());//人工 + ltgs.setConf_activity2(work.getSac2()); + ltgs.setConf_activity3(work.getSac3());//机器 + ltgs.setConf_activity4(work.getSac4()); + ltgs.setConf_activity5(work.getSac5());//折旧 + ltgs.setConf_activity6(work.getSac6()); + sapRFW.setLt_gs(ltgs); + SapRFW.lt_hw lthw = sapRFW.new lt_hw();//MES生产订单报工货物移动修改 + lthw.setEntry_qnt(work.getQuantityFeedback().toString());//TODO; + lthw.setMaterial(work.getProcessCode()); + sapRFW.setLt_hw(lthw); + //添加调用sap日志 + SysSapLog sysSapLog = new SysSapLog(); + sysSapLog.setId(IdUtils.fastSimpleUUID()); + sysSapLog.setMesssge(sapRFW.toString()); + sysSapLog.setMethod("reportWork"); + sysSapLog.setReqcode("请求"); + sysSapLog.setCreateTime(DateUtils.getNowDate()); + openMapper.addSapLog(sysSapLog); + + R r = remoteSapService.sapRFWOrder(sapRFW); + //上传成功,更改mes_report_work状态 + if (r.getCode() == 200) { + work.setUploadStatus("1"); + } else { + work.setUploadStatus("2"); + work.setUploadMsg(r.getMsg()); + } + work.setUploadTime(DateUtils.getNowDate()); + openMapper.updateSyncSapStatus(work); + //工单完成数量>工单数量:关闭订单 + MesReportWorkDTO proResult = openMapper.getProdResult(work); + ProOrderWorkorderDTO topOrder = this.getTopOrder(work.getWorkorderCode()); + if(proResult.getQuantityFeedback().compareTo(new BigDecimal(topOrder.getQuantitySplit()))>=0){ + //工单完成,关闭工单 + remoteSapService.sapCloseOrder(work.getWorkorderCodeSap()); + work.setStatus("w3"); + work.setUpdateTime(DateUtils.getNowDate()); + //pro_work_order status->w4报工 + openMapper.updateWorkOrderStatus(work); + } + return R.ok(); + } + + //根据工单子单编码获取最顶级订单的母单 + private ProOrderWorkorderDTO getTopOrder(String workorderCode) { + //pro_order_workorder + ProOrderWorkorderDTO topOrder = openMapper.getOrderByCode(workorderCode); + while (!"0".equals(topOrder.getParentOrder()) && StringUtils.isNotEmpty(topOrder.getParentOrder())) { + //pro_order_workorder + topOrder = openMapper.getOrderByCode(topOrder.getParentOrder()); + } + return topOrder; + } + + public static void main(String args[]){ DateTimeFormatter ymdhms = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate today = LocalDate.now(); diff --git a/op-modules/op-scada/src/main/resources/banner.txt b/op-modules/op-open/src/main/resources/banner.txt similarity index 100% rename from op-modules/op-scada/src/main/resources/banner.txt rename to op-modules/op-open/src/main/resources/banner.txt diff --git a/op-modules/op-scada/src/main/resources/bootstrap.yml b/op-modules/op-open/src/main/resources/bootstrap.yml similarity index 95% rename from op-modules/op-scada/src/main/resources/bootstrap.yml rename to op-modules/op-open/src/main/resources/bootstrap.yml index 196b279bb..f032dd8bc 100644 --- a/op-modules/op-scada/src/main/resources/bootstrap.yml +++ b/op-modules/op-open/src/main/resources/bootstrap.yml @@ -1,12 +1,12 @@ # Tomcat server: - port: 9211 + port: 9214 # Spring spring: application: # 应用名称 - name: op-scada + name: op-open profiles: # 环境配置 active: dev diff --git a/op-modules/op-scada/src/main/resources/logback.xml b/op-modules/op-open/src/main/resources/logback.xml similarity index 100% rename from op-modules/op-scada/src/main/resources/logback.xml rename to op-modules/op-open/src/main/resources/logback.xml diff --git a/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml b/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml new file mode 100644 index 000000000..e54f05f89 --- /dev/null +++ b/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml @@ -0,0 +1,112 @@ + + + + + insert into sys_sap_log + (id,messsge,create_time,reqcode,method,remark,status) + values( + #{id},#{messsge}, #{createTime}, #{reqcode},#{method},#{remark},#{status}) + + + update mes_report_work + + upload_time = #{uploadTime}, + upload_status = #{uploadStatus}, + upload_msg = #{uploadMsg}, + + where 1=1 + + and id = #{id} + + + and report_code = #{reportCode} + + + + update pro_order_workorder set status = #{status} where workorder_code = #{workorderCode} + + + + + + + + + + + + + + diff --git a/op-modules/op-scada/src/main/java/com/op/scada/mapper/ScadaMapper.java b/op-modules/op-scada/src/main/java/com/op/scada/mapper/ScadaMapper.java deleted file mode 100644 index 1775385b2..000000000 --- a/op-modules/op-scada/src/main/java/com/op/scada/mapper/ScadaMapper.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.op.scada.mapper; - -import com.op.system.api.domain.mes.ProRfidProcessDetail; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * 生产rfid流程Mapper接口 - * - * @author Open Platform - * @date 2023-08-18 - */ -@Mapper -public interface ScadaMapper { - - public ProRfidProcessDetail getRfidInfo(String rfidNo); - - public String getStationType(String equipmentCode); - - Integer getEquipNum(String machineCode); - - String getEquipStatus(String machineCode); - - String getEquipMode(String machineCode); -} - diff --git a/op-modules/op-scada/src/main/java/com/op/scada/service/ScadaService.java b/op-modules/op-scada/src/main/java/com/op/scada/service/ScadaService.java deleted file mode 100644 index 49f072043..000000000 --- a/op-modules/op-scada/src/main/java/com/op/scada/service/ScadaService.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.op.scada.service; - -import com.op.system.api.domain.dto.WCSDTO; - -import java.util.List; -import java.util.Map; - -/** - * 订单Service接口 - * - * @author Open Platform - * @date 2023-07-13 - */ -public interface ScadaService { - - WCSDTO requestDestinationStations(WCSDTO wcsdto); - -} diff --git a/op-modules/op-scada/src/main/resources/mapper/scada/ScadaMapper.xml b/op-modules/op-scada/src/main/resources/mapper/scada/ScadaMapper.xml deleted file mode 100644 index b30a2f5b0..000000000 --- a/op-modules/op-scada/src/main/resources/mapper/scada/ScadaMapper.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - diff --git a/op-modules/op-scada/src/main/java/com/op/scada/controller/ScadaController.java b/op-modules/op-security/src/main/java/com/op/security/controller/ScadaController.java similarity index 87% rename from op-modules/op-scada/src/main/java/com/op/scada/controller/ScadaController.java rename to op-modules/op-security/src/main/java/com/op/security/controller/ScadaController.java index 65df08394..3b420579c 100644 --- a/op-modules/op-scada/src/main/java/com/op/scada/controller/ScadaController.java +++ b/op-modules/op-security/src/main/java/com/op/security/controller/ScadaController.java @@ -1,9 +1,8 @@ -package com.op.scada.controller; +package com.op.security.controller; import com.op.common.core.utils.DateUtils; import com.op.common.core.utils.StringUtils; import com.op.common.core.web.controller.BaseController; -import com.op.scada.service.ScadaService; import com.op.system.api.domain.dto.WCSDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -21,9 +20,6 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/scadaInterface") public class ScadaController extends BaseController { - @Autowired - private ScadaService scadaService; - /** * 下一工序机台集合获取 @@ -40,7 +36,7 @@ public class ScadaController extends BaseController { wcsdto.setMessage("factory is not null"); return wcsdto; } - return scadaService.requestDestinationStations(wcsdto); + return null; } diff --git a/op-modules/pom.xml b/op-modules/pom.xml index 11d40a183..185134ecf 100644 --- a/op-modules/pom.xml +++ b/op-modules/pom.xml @@ -21,8 +21,8 @@ op-device op-energy op-quality - op-scada op-security + op-open op-modules