diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteQualityService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteQualityService.java new file mode 100644 index 000000000..e17a555ce --- /dev/null +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteQualityService.java @@ -0,0 +1,28 @@ +package com.op.system.api; + +import com.op.common.core.constant.ServiceNameConstants; +import com.op.common.core.domain.R; +import com.op.system.api.domain.quality.QcCheckTaskIncomeDTO; +import com.op.system.api.factory.RemoteDeviceFallbackFactory; +import com.op.system.api.factory.RemoteQualityFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * 用户服务 + * + * @author OP + */ +@FeignClient(contextId = "remoteQualityService", value = ServiceNameConstants.QMS_SERVICE, fallbackFactory = RemoteQualityFallbackFactory.class) + + + +public interface RemoteQualityService { + + @PostMapping("/qcProduce/createProduceXJTask") + public R createProduceXJTask(); + + @PostMapping("/qcIncome/createIncomeTask") + public R createIncomeTask(@RequestBody QcCheckTaskIncomeDTO qcCheckTaskIncome); +} diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/ProOrderWorkorderDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/ProOrderWorkorderDTO.java index 9499fabf1..be6c83690 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/ProOrderWorkorderDTO.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/ProOrderWorkorderDTO.java @@ -69,14 +69,6 @@ public class ProOrderWorkorderDTO extends TreeEntity { // 工艺名称 private String routeName; - public String getRouteName() { - return routeName; - } - - public void setRouteName(String routeName) { - this.routeName = routeName; - } - /** 产线编码 */ @Excel(name = "线体") private String prodLineCode; @@ -86,14 +78,6 @@ public class ProOrderWorkorderDTO extends TreeEntity { // TODO 暂时存放线体编码 private String prodLineName; - public String getProdLineName() { - return prodLineName; - } - - public void setProdLineName(String prodLineName) { - this.prodLineName = prodLineName; - } - /** 工单生产日期 */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "工单生产日期", width = 30, dateFormat = "yyyy-MM-dd") @@ -138,14 +122,6 @@ public class ProOrderWorkorderDTO extends TreeEntity { /** 是否为底层节点 1是 0不是 */ private Integer endFlag; - public Integer getEndFlag() { - return endFlag; - } - - public void setEndFlag(Integer endFlag) { - this.endFlag = endFlag; - } - /** 班次名称(数据库无该字段,需自行查询) */ private String shiftDesc; @@ -153,14 +129,6 @@ public class ProOrderWorkorderDTO extends TreeEntity { private Integer carNum; private Integer sortNo; - public Integer getCarNum() { - return carNum; - } - - public void setCarNum(Integer carNum) { - this.carNum = carNum; - } - // 料罐id(湿料计划模块使用) private Integer bucketId; @@ -192,6 +160,36 @@ public class ProOrderWorkorderDTO extends TreeEntity { private BigDecimal quantitySplits; private String units; + public String getProdLineName() { + return prodLineName; + } + + public void setProdLineName(String prodLineName) { + this.prodLineName = prodLineName; + } + public String getRouteName() { + return routeName; + } + + public void setRouteName(String routeName) { + this.routeName = routeName; + } + public Integer getEndFlag() { + return endFlag; + } + + public void setEndFlag(Integer endFlag) { + this.endFlag = endFlag; + } + + public Integer getCarNum() { + return carNum; + } + + public void setCarNum(Integer carNum) { + this.carNum = carNum; + } + public String getWorkorderCodes() { return workorderCodes; } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/quality/QcCheckTaskIncomeDto.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskIncomeDTO.java similarity index 78% rename from op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/quality/QcCheckTaskIncomeDto.java rename to op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskIncomeDTO.java index a6cd94bda..8464cbcac 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/quality/QcCheckTaskIncomeDto.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskIncomeDTO.java @@ -1,4 +1,4 @@ -package com.op.system.api.domain.dto.quality; +package com.op.system.api.domain.quality; import com.fasterxml.jackson.annotation.JsonFormat; import com.op.common.core.annotation.Excel; @@ -8,6 +8,7 @@ import org.apache.commons.lang3.builder.ToStringStyle; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 来料检验对象 qc_check_task_income @@ -15,7 +16,7 @@ import java.util.Date; * @author Open Platform * @date 2023-10-19 */ -public class QcCheckTaskIncomeDto extends BaseEntity { +public class QcCheckTaskIncomeDTO extends BaseEntity { private static final long serialVersionUID = 1L; /** id */ @@ -25,8 +26,10 @@ public class QcCheckTaskIncomeDto extends BaseEntity { @Excel(name = "检验任务编号") private String checkNo; + private String workorderCode; + /** 来料批次号 */ - @Excel(name = "来料批次号") + @Excel(name = "批次号") private String incomeBatchNo; /** 订单号 */ @@ -45,6 +48,9 @@ public class QcCheckTaskIncomeDto extends BaseEntity { @Excel(name = "收货数量") private BigDecimal quality; + @Excel(name = "不合格数量") + private BigDecimal noOkQuality; + /** 单位 */ @Excel(name = "单位") private String unit; @@ -120,6 +126,95 @@ public class QcCheckTaskIncomeDto extends BaseEntity { private String checkTimeEnd; private String typeCode; private String checkType; + private String qualityStatus; + private String batchCode; + private String batchId; + private List qcCheckTaskDetails; + + private BigDecimal sampleQuality; + private BigDecimal aNoOkquality; + private BigDecimal bNoOkquality; + private BigDecimal cNoOkquality; + + public BigDecimal getSampleQuality() { + return sampleQuality; + } + + public void setSampleQuality(BigDecimal sampleQuality) { + this.sampleQuality = sampleQuality; + } + + public BigDecimal getaNoOkquality() { + return aNoOkquality; + } + + public void setaNoOkquality(BigDecimal aNoOkquality) { + this.aNoOkquality = aNoOkquality; + } + + public void setbNoOkquality(BigDecimal bNoOkquality) { + this.bNoOkquality = bNoOkquality; + } + + public void setcNoOkquality(BigDecimal cNoOkquality) { + this.cNoOkquality = cNoOkquality; + } + + public BigDecimal getbNoOkquality() { + return bNoOkquality; + } + + public BigDecimal getcNoOkquality() { + return cNoOkquality; + } + + public List getQcCheckTaskDetails() { + return qcCheckTaskDetails; + } + + public void setQcCheckTaskDetails(List qcCheckTaskDetails) { + this.qcCheckTaskDetails = qcCheckTaskDetails; + } + + public String getBatchCode() { + return batchCode; + } + + public void setBatchCode(String batchCode) { + this.batchCode = batchCode; + } + + public String getBatchId() { + return batchId; + } + + public void setBatchId(String batchId) { + this.batchId = batchId; + } + + public String getWorkorderCode() { + return workorderCode; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + + public String getQualityStatus() { + return qualityStatus; + } + + public void setQualityStatus(String qualityStatus) { + this.qualityStatus = qualityStatus; + } + + public BigDecimal getNoOkQuality() { + return noOkQuality; + } + + public void setNoOkQuality(BigDecimal noOkQuality) { + this.noOkQuality = noOkQuality; + } public String getCheckType() { return checkType; diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskProduceDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskProduceDTO.java index 2e6cf0da2..ab8ba8bca 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskProduceDTO.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskProduceDTO.java @@ -148,6 +148,16 @@ public class QcCheckTaskProduceDTO extends BaseEntity { @Excel(name = "C类不合格数量") private BigDecimal cNoOkquality; + private String workorderCode; + + public String getWorkorderCode() { + return workorderCode; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + public Date getProduceDate() { return produceDate; } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteQualityFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteQualityFallbackFactory.java new file mode 100644 index 000000000..f7a38663d --- /dev/null +++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteQualityFallbackFactory.java @@ -0,0 +1,38 @@ +package com.op.system.api.factory; + + +import com.op.common.core.domain.R; +import com.op.system.api.RemoteDeviceService; +import com.op.system.api.RemoteQualityService; +import com.op.system.api.domain.quality.QcCheckTaskIncomeDTO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * 用户服务降级处理 + * + * @author OP + */ +@Component +public class RemoteQualityFallbackFactory implements FallbackFactory { + private static final Logger log = LoggerFactory.getLogger(RemoteQualityFallbackFactory.class); + + @Override + public RemoteQualityService create(Throwable throwable) { + log.error("Quality服务调用失败:{}", throwable.getMessage()); + return new RemoteQualityService() { + @Override + public R createProduceXJTask() { + return R.fail("巡检计划创建失败:" + throwable.getMessage()); + } + + @Override + public R createIncomeTask(QcCheckTaskIncomeDTO qcCheckTaskIncome) { + return R.fail("来料计划创建失败:" + throwable.getMessage()); + } + }; + } +} + diff --git a/op-api/op-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/op-api/op-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index d8e2009be..6e7b448c1 100644 --- a/op-api/op-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/op-api/op-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -6,3 +6,4 @@ com.op.system.api.factory.RemotePlanFallbackFactory com.op.system.api.factory.RemoteTechnologyFallbackFactory com.op.system.api.factory.RemoteSapFallbackFactory com.op.system.api.factory.RemoteDeviceFallbackFactory +com.op.system.api.factory.RemoteQualityFallbackFactory diff --git a/op-common/op-common-core/src/main/java/com/op/common/core/constant/ServiceNameConstants.java b/op-common/op-common-core/src/main/java/com/op/common/core/constant/ServiceNameConstants.java index 6fa1d7dcc..6a783069c 100644 --- a/op-common/op-common-core/src/main/java/com/op/common/core/constant/ServiceNameConstants.java +++ b/op-common/op-common-core/src/main/java/com/op/common/core/constant/ServiceNameConstants.java @@ -48,4 +48,6 @@ public class ServiceNameConstants { * 设备模块的serviceid */ public static final String DEVICE_SERVICE = "op-device"; + /**质量模块**/ + public static final String QMS_SERVICE = "op-quality"; } diff --git a/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java b/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java index e2815c4d5..186e0565d 100644 --- a/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java +++ b/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java @@ -1,9 +1,6 @@ package com.op.job.task; -import com.op.system.api.RemoteDeviceService; -import com.op.system.api.RemoteMesService; -import com.op.system.api.RemotePlanService; -import com.op.system.api.RemoteSapService; +import com.op.system.api.*; import com.op.system.api.domain.sap.SapRouterQuery; import com.op.system.api.domain.sap.SapShopOrderQuery; import org.slf4j.Logger; @@ -35,6 +32,9 @@ public class RyTask { @Autowired private RemoteDeviceService remoteDeviceService; + @Autowired + private RemoteQualityService remoteQualityService; + public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) { System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i)); } @@ -150,4 +150,12 @@ public class RyTask { logger.info("++设备运行记录+数据库备份的数据+开始++equipmentBkTask+++++"); remoteDeviceService.equipmentBKTask(); } + + /************质量管理系统定时任务开始*****************/ + //过程巡检,每15分钟执行一次 + public void createProduceXJTask(){ + logger.info("++质量管理系统+过程巡检+开始++createProduceXJTask+++++"); + remoteQualityService.createProduceXJTask(); + } + /************质量管理系统定时任务结束*****************/ } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesInterfaceController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesInterfaceController.java new file mode 100644 index 000000000..7e8730b07 --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesInterfaceController.java @@ -0,0 +1,29 @@ +package com.op.mes.controller; + +import com.op.mes.domain.MesBoard; +import com.op.mes.service.MesInterfaceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +/** + * mes看板接口 + * + * @author zxl + * @date 2023-11-15 + */ +@RestController +@RequestMapping("/mesInterface") +public class MesInterfaceController { + + @Autowired + private MesInterfaceService mesInterfaceService; + + //工艺看板 + @PostMapping("/getTechnologyBoard") + public List getTechnologyBoard(@RequestBody MesBoard mesBoard) { + return mesInterfaceService.getTechnologyBoard(mesBoard); + } +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesBoard.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesBoard.java new file mode 100644 index 000000000..39748bb2a --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesBoard.java @@ -0,0 +1,118 @@ +package com.op.mes.domain; + +import com.op.common.core.domain.BaseFileData; + +import java.util.List; + +//看板实体类 +public class MesBoard { + + private String factoryCode; + private String workorderCode; + private String workorderCodeSap; + private String workorderName; + private String equipmentName; + private String productCode; + private String productName; + private String routeCode; + private String routeId; + private List files; + private String workshopCode; + private String workshopName; + + public String getWorkshopCode() { + return workshopCode; + } + + public void setWorkshopCode(String workshopCode) { + this.workshopCode = workshopCode; + } + + public String getWorkshopName() { + return workshopName; + } + + public void setWorkshopName(String workshopName) { + this.workshopName = workshopName; + } + + public String getEquipmentName() { + return equipmentName; + } + + public void setEquipmentName(String equipmentName) { + this.equipmentName = equipmentName; + } + + public List getFiles() { + return files; + } + + public void setFiles(List files) { + this.files = files; + } + + public String getWorkorderCode() { + return workorderCode; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + + public String getWorkorderCodeSap() { + return workorderCodeSap; + } + + public void setWorkorderCodeSap(String workorderCodeSap) { + this.workorderCodeSap = workorderCodeSap; + } + + public String getWorkorderName() { + return workorderName; + } + + public void setWorkorderName(String workorderName) { + this.workorderName = workorderName; + } + + public String getProductCode() { + return productCode; + } + + public void setProductCode(String productCode) { + this.productCode = productCode; + } + + public String getProductName() { + return productName; + } + + public void setProductName(String productName) { + this.productName = productName; + } + + public String getRouteCode() { + return routeCode; + } + + public void setRouteCode(String routeCode) { + this.routeCode = routeCode; + } + + public String getRouteId() { + return routeId; + } + + public void setRouteId(String routeId) { + this.routeId = routeId; + } + + public String getFactoryCode() { + return factoryCode; + } + + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesDailyReport.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesDailyReport.java index 94ec1a5b1..d732abb4c 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesDailyReport.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesDailyReport.java @@ -39,6 +39,7 @@ public class MesDailyReport extends BaseEntity { private String manAvgActual;//人均效率-实际 private String manAvgDo;//人均效率-达成 private String actManHour;//实际人工时 + @JsonFormat(pattern = "yyyy-MM-dd") private Date productDate;//工单日期 private String productDateStr;//工单日期字符串 private String productStartDate; diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java index c8c8c84b1..66e520797 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java @@ -1,5 +1,7 @@ package com.op.mes.mapper; +import com.op.common.core.domain.BaseFileData; +import com.op.mes.domain.MesBoard; import com.op.mes.domain.dto.BaseEquipmentDto; import com.op.mes.domain.dto.LGInfoDto; import com.op.system.api.domain.SysDept; @@ -58,4 +60,8 @@ public interface MesMapper { List> selectdryingRoomListInfo(); void deleteDateByTableName0(@Param("table")String table,@Param("ymdhms")String ymdhms); + + List getTechnologyBoard(MesBoard mesBoard); + + List getTechnologyFiles(MesBoard dto); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/MesInterfaceService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/MesInterfaceService.java new file mode 100644 index 000000000..cf8ef698e --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/MesInterfaceService.java @@ -0,0 +1,18 @@ +package com.op.mes.service; + +import com.op.mes.domain.MesBoard; +import com.op.mes.domain.dto.BaseEquipmentDto; + +import java.util.List; + +/** + * 看板 Service接口 + * + * @author Open Platform + * @date 2023-07-13 + */ +public interface MesInterfaceService { + + + List getTechnologyBoard(MesBoard mesBoard); +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesInterfaceServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesInterfaceServiceImpl.java new file mode 100644 index 000000000..3f7053500 --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesInterfaceServiceImpl.java @@ -0,0 +1,41 @@ +package com.op.mes.service.impl; + +import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; +import com.op.common.core.domain.BaseFileData; +import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.uuid.IdUtils; +import com.op.common.security.utils.SecurityUtils; +import com.op.mes.domain.MesBoard; +import com.op.mes.domain.dto.BaseEquipmentDto; +import com.op.mes.mapper.MesMapper; +import com.op.mes.service.MesInterfaceService; +import com.op.mes.service.PDAService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * wcs接口业务层处理 + * + * @author Open Platform + * @date 2023-07-13 + */ +@Service +public class MesInterfaceServiceImpl implements MesInterfaceService { + + @Autowired + private MesMapper mesMapper; + + @Override + public List getTechnologyBoard(MesBoard mesBoard) { + DynamicDataSourceContextHolder.push(mesBoard.getFactoryCode()); + List dtos= mesMapper.getTechnologyBoard(mesBoard); + for(MesBoard dto:dtos){ + //取附件 + List files = mesMapper.getTechnologyFiles(dto); + dto.setFiles(files); + } + return dtos; + } +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java index 677d2eea0..3a05d7015 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java @@ -227,7 +227,7 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService { for(MesDailyReport dto:dtos){ String spc = dto.getSpec();//规格 //本日产量-实际(盒数) - BigDecimal actCase = new BigDecimal(dto.getQuantityFeedback()).multiply(new BigDecimal(spc)); + BigDecimal actCase = new BigDecimal(dto.getQuantityFeedback()); dto.setQuantityAct(actCase.toString()); //本日产量-完成率=实际箱数/计划箱数 BigDecimal completeRate = new BigDecimal(dto.getQuantityFeedback()) diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml index 89b8fa215..38013df17 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml @@ -205,4 +205,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" delete from ${table} where #{ymdhms} > CONVERT(varchar(30),creter_time, 120) + + 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 d160f0473..0196be053 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 @@ -192,23 +192,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - + insert into qc_check_task record_id,