From a6e4223a6322b48ba0250b3e0ae0fbcb06bc5c01 Mon Sep 17 00:00:00 2001 From: yinq Date: Tue, 8 Oct 2024 09:31:44 +0800 Subject: [PATCH] =?UTF-8?q?change=20-=20=E7=94=9F=E4=BA=A7=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E5=8A=A0=E5=AF=BC=E5=85=A5=E7=B1=BB=E5=9E=8B=E3=80=81?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E5=90=8C=E6=AD=A5ERP=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E8=AE=A1=E5=88=92=E7=AE=A1=E7=90=86=E3=80=81=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E7=9C=8B=E6=9D=BF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-druid.yml | 4 +- .../com/os/mes/api/domain/ERPParamDto.java | 28 +++ .../os/mes/api/service/IERPPortService.java | 6 + .../api/service/impl/ERPPortServiceImpl.java | 40 ++-- .../os/mes/base/domain/BaseDeviceLedger.java | 19 ++ .../base/mapper/BaseDeviceLedgerMapper.java | 8 + .../os/mes/prod/domain/ProdPlanErpInfo.java | 92 ++++++--- .../com/os/mes/prod/domain/ProdPlanInfo.java | 15 +- .../impl/ProdPlanErpInfoServiceImpl.java | 28 ++- .../mes/record/domain/RecordStaffSalary.java | 11 ++ .../os/mes/record/domain/StaffSalaryVo.java | 94 +++++++++ .../impl/RecordStaffSalaryServiceImpl.java | 186 +++++++++--------- .../controller/ReportBoardPortController.java | 16 +- .../service/IReportBoardPortService.java | 8 + .../impl/ReportBoardPortServiceImpl.java | 48 +++++ .../mes/base/BaseDeviceLedgerMapper.xml | 12 +- .../mapper/mes/prod/ProdPlanInfoMapper.xml | 9 +- .../main/java/com/os/quartz/task/ERPTask.java | 11 +- 18 files changed, 478 insertions(+), 157 deletions(-) create mode 100644 os-mes/src/main/java/com/os/mes/record/domain/StaffSalaryVo.java diff --git a/os-admin/src/main/resources/application-druid.yml b/os-admin/src/main/resources/application-druid.yml index 1c1b4c7..6bf3e2b 100644 --- a/os-admin/src/main/resources/application-druid.yml +++ b/os-admin/src/main/resources/application-druid.yml @@ -6,9 +6,9 @@ spring: # 主库数据源 master: driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver - url: jdbc:sqlserver://121.37.164.0:1433;SelectMethod=cursor;DatabaseName=xmxs_os + url: jdbc:sqlserver://119.45.202.115:1433;SelectMethod=cursor;DatabaseName=xmxs_os username: sa - password: Yq123456 + password: haiwei@123 # 从库数据源 slave: driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver diff --git a/os-mes/src/main/java/com/os/mes/api/domain/ERPParamDto.java b/os-mes/src/main/java/com/os/mes/api/domain/ERPParamDto.java index 7539360..9d46c5c 100644 --- a/os-mes/src/main/java/com/os/mes/api/domain/ERPParamDto.java +++ b/os-mes/src/main/java/com/os/mes/api/domain/ERPParamDto.java @@ -61,6 +61,34 @@ public class ERPParamDto { @JsonProperty(value = "TaskCode") private String TaskCode; + /** + * 计划开始时间 + */ + @JsonProperty(value = "PlanStartTime") + private String PlanStartTime; + + /** + * 计划结束时间 + */ + @JsonProperty(value = "PlanEndTime") + private String PlanEndTime; + + public String getPlanStartTime() { + return PlanStartTime; + } + + public void setPlanStartTime(String planStartTime) { + PlanStartTime = planStartTime; + } + + public String getPlanEndTime() { + return PlanEndTime; + } + + public void setPlanEndTime(String planEndTime) { + PlanEndTime = planEndTime; + } + public String getTaskCode() { return TaskCode; } diff --git a/os-mes/src/main/java/com/os/mes/api/service/IERPPortService.java b/os-mes/src/main/java/com/os/mes/api/service/IERPPortService.java index 0a1d8f5..386bc62 100644 --- a/os-mes/src/main/java/com/os/mes/api/service/IERPPortService.java +++ b/os-mes/src/main/java/com/os/mes/api/service/IERPPortService.java @@ -54,4 +54,10 @@ public interface IERPPortService { */ String getERPProductionPlan(ERPParamDto paramDto); + /** + * 定时同步ERP生产计划管理 + * @param paramDto + */ + void getProductionPlanTask(ERPParamDto paramDto); + } diff --git a/os-mes/src/main/java/com/os/mes/api/service/impl/ERPPortServiceImpl.java b/os-mes/src/main/java/com/os/mes/api/service/impl/ERPPortServiceImpl.java index ccd284e..7fe6e31 100644 --- a/os-mes/src/main/java/com/os/mes/api/service/impl/ERPPortServiceImpl.java +++ b/os-mes/src/main/java/com/os/mes/api/service/impl/ERPPortServiceImpl.java @@ -187,20 +187,20 @@ public class ERPPortServiceImpl implements IERPPortService { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.UPPER_CAMEL_CASE); requestParam = objectMapper.writeValueAsString(erpStaffSalary); -// result = ApiUtils.sendERPHttpPost(ERPConstants.ERP_URL, requestParam); - result = "{\n" + - "\t\"Successful\": true,\n" + - "\t\"ErrorMessage\": null,\n" + - "\t\"Logined\": false,\n" + - "\t\"ReturnData\": {\n" + - "\t\t\"data\": {\n" + - "\t\t\t\"ObjectId\": \"25ff81b4-fb0b-4f1c-b9b1-6a2afab1cd0f\"\n" + - "\t\t},\n" + - "\t\t\"result\": \"success\",\n" + - "\t\t\"message\": \"创建成功!\"\n" + - "\t},\n" + - "\t\"DataType\": 0\n" + - "}"; + result = ApiUtils.sendERPHttpPost(ERPConstants.ERP_URL, requestParam); +// result = "{\n" + +// "\t\"Successful\": true,\n" + +// "\t\"ErrorMessage\": null,\n" + +// "\t\"Logined\": false,\n" + +// "\t\"ReturnData\": {\n" + +// "\t\t\"data\": {\n" + +// "\t\t\t\"ObjectId\": \"25ff81b4-fb0b-4f1c-b9b1-6a2afab1cd0f\"\n" + +// "\t\t},\n" + +// "\t\t\"result\": \"success\",\n" + +// "\t\t\"message\": \"创建成功!\"\n" + +// "\t},\n" + +// "\t\"DataType\": 0\n" + +// "}"; // 处理接口返回消息 ObjectMapper resultMapper = new ObjectMapper(); // 将 JSON 字符串转换为 Java 对象 @@ -233,9 +233,6 @@ public class ERPPortServiceImpl implements IERPPortService { if (StringUtils.isEmpty(paramDto.getActionName())) { paramDto.setActionName(ERPConstants.planActionName); } - if (StringUtils.isEmpty(paramDto.getTaskCode())) { - return null; - } try { // 创建ObjectMapper实例 对象转JSON字符串 @@ -260,4 +257,13 @@ public class ERPPortServiceImpl implements IERPPortService { } + /** + * 定时同步ERP生产计划管理 + * @param paramDto + */ + @Override + public void getProductionPlanTask(ERPParamDto paramDto) { + this.getERPProductionPlan(paramDto); + } + } diff --git a/os-mes/src/main/java/com/os/mes/base/domain/BaseDeviceLedger.java b/os-mes/src/main/java/com/os/mes/base/domain/BaseDeviceLedger.java index e8ee3a5..5e5a251 100644 --- a/os-mes/src/main/java/com/os/mes/base/domain/BaseDeviceLedger.java +++ b/os-mes/src/main/java/com/os/mes/base/domain/BaseDeviceLedger.java @@ -85,6 +85,25 @@ public class BaseDeviceLedger extends BaseEntity @Excel(name = "资产编号") private String assetCode; + private String processCode; + private String processName; + + public String getProcessCode() { + return processCode; + } + + public void setProcessCode(String processCode) { + this.processCode = processCode; + } + + public String getProcessName() { + return processName; + } + + public void setProcessName(String processName) { + this.processName = processName; + } + public String getProductLineName() { return productLineName; } diff --git a/os-mes/src/main/java/com/os/mes/base/mapper/BaseDeviceLedgerMapper.java b/os-mes/src/main/java/com/os/mes/base/mapper/BaseDeviceLedgerMapper.java index e961300..4b35923 100644 --- a/os-mes/src/main/java/com/os/mes/base/mapper/BaseDeviceLedgerMapper.java +++ b/os-mes/src/main/java/com/os/mes/base/mapper/BaseDeviceLedgerMapper.java @@ -64,4 +64,12 @@ public interface BaseDeviceLedgerMapper * @return */ public String getDeviceCode(); + + /** + * 通过设备编号查询设备台账 + * + * @param deviceCode 设备台账 + * @return 设备台账集合 + */ + public BaseDeviceLedger selectBaseDeviceLedgerByDeviceCode(String deviceCode); } diff --git a/os-mes/src/main/java/com/os/mes/prod/domain/ProdPlanErpInfo.java b/os-mes/src/main/java/com/os/mes/prod/domain/ProdPlanErpInfo.java index ad13cb8..3e1aaba 100644 --- a/os-mes/src/main/java/com/os/mes/prod/domain/ProdPlanErpInfo.java +++ b/os-mes/src/main/java/com/os/mes/prod/domain/ProdPlanErpInfo.java @@ -2,6 +2,7 @@ package com.os.mes.prod.domain; import java.math.BigDecimal; import java.util.Date; +import java.util.HashMap; import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; @@ -62,39 +63,39 @@ public class ProdPlanErpInfo extends BaseEntity private String equipmentNo; /** 准备时间(分) */ - @Excel(name = "准备时间", readConverterExp = "分=") + @Excel(name = "准备时间") private BigDecimal preparationDuration; /** 收尾时间(分) */ - @Excel(name = "收尾时间", readConverterExp = "分=") + @Excel(name = "收尾时间") private BigDecimal windUpDuration; /** 出布最小速度(米 / 分) */ - @Excel(name = "出布最小速度", readConverterExp = "米=,/=,分=") + @Excel(name = "出布最小速度") private BigDecimal clothMinimumSpeed; /** 出布最大速度(米 / 分) */ - @Excel(name = "出布最大速度", readConverterExp = "米=,/=,分=") + @Excel(name = "出布最大速度") private BigDecimal clothMaximumSpeed; /** 成型最小速度(米 / 分) */ - @Excel(name = "成型最小速度", readConverterExp = "米=,/=,分=") + @Excel(name = "成型最小速度") private BigDecimal formingMinimumSpeed; /** 成型最大速度(米 / 分) */ - @Excel(name = "成型最大速度", readConverterExp = "米=,/=,分=") + @Excel(name = "成型最大速度") private BigDecimal formingMaximumSpeed; /** 包胶最小速度(米 / 分) */ - @Excel(name = "包胶最小速度", readConverterExp = "米=,/=,分=") + @Excel(name = "包胶最小速度") private BigDecimal glueMinimumSpeed; /** 包胶最大速度(米 / 分) */ - @Excel(name = "包胶最大速度", readConverterExp = "米=,/=,分=") + @Excel(name = "包胶最大速度") private BigDecimal glueMaximumSpeed; /** 每锅硫化米数(m) */ - @Excel(name = "每锅硫化米数", readConverterExp = "m=") + @Excel(name = "每锅硫化米数") private BigDecimal sulfurizationLength; /** 硫化机类型 */ @@ -130,31 +131,31 @@ public class ProdPlanErpInfo extends BaseEntity private String conveyorLengthSpecification; /** 上胶厚度(mm) */ - @Excel(name = "上胶厚度", readConverterExp = "m=m") + @Excel(name = "上胶厚度") private BigDecimal upGlueThickness; /** 上缓冲胶厚度(mm) */ - @Excel(name = "上缓冲胶厚度", readConverterExp = "m=m") + @Excel(name = "上缓冲胶厚度") private BigDecimal upBufferGlueThickness; /** 下胶厚度(mm) */ - @Excel(name = "下胶厚度", readConverterExp = "m=m") + @Excel(name = "下胶厚度") private BigDecimal belowGlueThickness; /** 下缓冲胶厚度(mm) */ - @Excel(name = "下缓冲胶厚度", readConverterExp = "m=m") + @Excel(name = "下缓冲胶厚度") private BigDecimal belowBufferGlueThickness; /** 输送带宽度(mm) */ - @Excel(name = "输送带宽度", readConverterExp = "m=m") + @Excel(name = "输送带宽度") private BigDecimal beltWidth; /** 客户要求输送带长度(m) */ - @Excel(name = "客户要求输送带长度", readConverterExp = "m=") + @Excel(name = "客户要求输送带长度") private BigDecimal customerRequestConveyorLength; /** 压延生产米数(m) */ - @Excel(name = "压延生产米数", readConverterExp = "m=") + @Excel(name = "压延生产米数") private BigDecimal rollingProductionMeters; /** 需要硫化米数 */ @@ -178,27 +179,27 @@ public class ProdPlanErpInfo extends BaseEntity private BigDecimal encapsulationMeters; /** 工作速度(每小时) */ - @Excel(name = "工作速度", readConverterExp = "每=小时") + @Excel(name = "工作速度") private BigDecimal workSpeed; /** 需要工时(小时) */ - @Excel(name = "需要工时", readConverterExp = "小=时") + @Excel(name = "需要工时") private BigDecimal workingHours; /** 出布面积(㎡) */ - @Excel(name = "出布面积", readConverterExp = "㎡=") + @Excel(name = "出布面积") private BigDecimal distributionArea; /** 包胶面积(㎡) */ - @Excel(name = "包胶面积", readConverterExp = "㎡=") + @Excel(name = "包胶面积") private BigDecimal encapsulationArea; /** 硫化面积(㎡) */ - @Excel(name = "硫化面积", readConverterExp = "㎡=") + @Excel(name = "硫化面积") private BigDecimal vulcanizationArea; /** 输送带总面积(㎡) */ - @Excel(name = "输送带总面积", readConverterExp = "㎡=") + @Excel(name = "输送带总面积") private BigDecimal conveyorTotalArea; /** 胶料工艺 */ @@ -214,7 +215,7 @@ public class ProdPlanErpInfo extends BaseEntity private BigDecimal upGlueCoefficient; /** 上胶标准用胶量(KG) */ - @Excel(name = "上胶标准用胶量", readConverterExp = "K=G") + @Excel(name = "上胶标准用胶量") private BigDecimal upGlueDosage; /** 下胶使用胶料 */ @@ -226,7 +227,7 @@ public class ProdPlanErpInfo extends BaseEntity private BigDecimal belowGlueCoefficient; /** 下胶标准用胶量(KG) */ - @Excel(name = "下胶标准用胶量", readConverterExp = "K=G") + @Excel(name = "下胶标准用胶量") private BigDecimal belowGlueDosage; /** 缓冲/布胶使用胶料 */ @@ -238,7 +239,7 @@ public class ProdPlanErpInfo extends BaseEntity private BigDecimal bufferGlueCoefficient; /** 缓冲胶标准用胶量(KG) */ - @Excel(name = "缓冲胶标准用胶量", readConverterExp = "K=G") + @Excel(name = "缓冲胶标准用胶量") private BigDecimal bufferGlueDosage; /** 大布布料规格 */ @@ -250,7 +251,7 @@ public class ProdPlanErpInfo extends BaseEntity private BigDecimal largeClothFrictioningCoefficient; /** 胶布标准用胶量(KG) */ - @Excel(name = "胶布标准用胶量", readConverterExp = "K=G") + @Excel(name = "胶布标准用胶量") private BigDecimal largeClothDosage; /** 中间胶使用胶料 */ @@ -262,7 +263,7 @@ public class ProdPlanErpInfo extends BaseEntity private BigDecimal middleGlueCoefficient; /** 中间胶标准用胶量(KG) */ - @Excel(name = "中间胶标准用胶量", readConverterExp = "K=G") + @Excel(name = "中间胶标准用胶量") private BigDecimal middleGlueDosage; /** 设备使用限制 */ @@ -289,9 +290,40 @@ public class ProdPlanErpInfo extends BaseEntity @Excel(name = "组长") private String groupLeader; + /** 小组编号 */ + @Excel(name = "小组编号") + private String teamNo; + /** 人员活动详情 */ @Excel(name = "人员活动详情") - private List personnelOperationDetails; + private List> personnelOperationDetails; + + private String processCode; + private String stationCode; + + public String getTeamNo() { + return teamNo; + } + + public void setTeamNo(String teamNo) { + this.teamNo = teamNo; + } + + public String getProcessCode() { + return processCode; + } + + public void setProcessCode(String processCode) { + this.processCode = processCode; + } + + public String getStationCode() { + return stationCode; + } + + public void setStationCode(String stationCode) { + this.stationCode = stationCode; + } public void setObjId(Long objId) { @@ -897,11 +929,11 @@ public class ProdPlanErpInfo extends BaseEntity return groupLeader; } - public List getPersonnelOperationDetails() { + public List> getPersonnelOperationDetails() { return personnelOperationDetails; } - public void setPersonnelOperationDetails(List personnelOperationDetails) { + public void setPersonnelOperationDetails(List> personnelOperationDetails) { this.personnelOperationDetails = personnelOperationDetails; } diff --git a/os-mes/src/main/java/com/os/mes/prod/domain/ProdPlanInfo.java b/os-mes/src/main/java/com/os/mes/prod/domain/ProdPlanInfo.java index ae93799..803b787 100644 --- a/os-mes/src/main/java/com/os/mes/prod/domain/ProdPlanInfo.java +++ b/os-mes/src/main/java/com/os/mes/prod/domain/ProdPlanInfo.java @@ -150,8 +150,8 @@ public class ProdPlanInfo extends BaseEntity { @Excel(name = "计划结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date planEndTime; - /** 工单状态(0未开始 1执行中 2执行完成 3取消) */ - @Excel(name = "工单状态", readConverterExp = "0=未开始,1=执行中,2=执行完成,3=取消") + /** 工单状态(0未开始 1执行中 2执行完成 3取消 4待执行) */ + @Excel(name = "工单状态", readConverterExp = "0=未开始,1=执行中,2=执行完成,3=取消,4=待执行") private String planStatus; /** 班次(1早班 2小夜 3大夜) */ @@ -162,8 +162,19 @@ public class ProdPlanInfo extends BaseEntity { @Excel(name = "工序编号") private String processCode; + /** 导入类型(0=人工,1=ERP) */ + private String importFlag; + private List prodPlanDetailList; + public String getImportFlag() { + return importFlag; + } + + public void setImportFlag(String importFlag) { + this.importFlag = importFlag; + } + public List getProdPlanDetailList() { return prodPlanDetailList; } diff --git a/os-mes/src/main/java/com/os/mes/prod/service/impl/ProdPlanErpInfoServiceImpl.java b/os-mes/src/main/java/com/os/mes/prod/service/impl/ProdPlanErpInfoServiceImpl.java index 2565772..13f137d 100644 --- a/os-mes/src/main/java/com/os/mes/prod/service/impl/ProdPlanErpInfoServiceImpl.java +++ b/os-mes/src/main/java/com/os/mes/prod/service/impl/ProdPlanErpInfoServiceImpl.java @@ -3,6 +3,9 @@ package com.os.mes.prod.service.impl; import java.util.List; import com.os.common.utils.DateUtils; +import com.os.common.utils.StringUtils; +import com.os.mes.base.domain.BaseDeviceLedger; +import com.os.mes.base.mapper.BaseDeviceLedgerMapper; import com.os.mes.prod.domain.ProdPlanInfo; import com.os.mes.prod.service.IProdPlanInfoService; import org.springframework.beans.factory.annotation.Autowired; @@ -26,6 +29,9 @@ public class ProdPlanErpInfoServiceImpl implements IProdPlanErpInfoService { @Autowired private IProdPlanInfoService prodPlanInfoService; + @Autowired + private BaseDeviceLedgerMapper deviceLedgerMapper; + /** * 查询生产计划信息 * @@ -104,6 +110,14 @@ public class ProdPlanErpInfoServiceImpl implements IProdPlanErpInfoService { @Transactional public void insertOrUpdateProdPlanErpInfoList(List dataList) { for (ProdPlanErpInfo planErpInfo : dataList) { + String equipmentNo = planErpInfo.getEquipmentNo(); + if (StringUtils.isNotEmpty(equipmentNo)) { + BaseDeviceLedger deviceLedger = deviceLedgerMapper.selectBaseDeviceLedgerByDeviceCode(equipmentNo); + if (StringUtils.isNotNull(deviceLedger)){ + planErpInfo.setStationCode(deviceLedger.getProductLineCode()); + planErpInfo.setProcessCode(deviceLedger.getProcessCode()); + } + } String seqNo = planErpInfo.getSeqNo(); ProdPlanErpInfo selectErpInfo = new ProdPlanErpInfo(); selectErpInfo.setSeqNo(seqNo); @@ -118,8 +132,11 @@ public class ProdPlanErpInfoServiceImpl implements IProdPlanErpInfoService { planInfo.setPlanAmount(planErpInfo.getCustomerRequestConveyorLength()); planInfo.setPlanBeginTime(planErpInfo.getPlanStartTime()); planInfo.setPlanEndTime(planErpInfo.getPlanEndTime()); + planInfo.setDeviceCode(equipmentNo); + planInfo.setProcessCode(planErpInfo.getProcessCode()); + planInfo.setStationCode(planErpInfo.getStationCode()); + planInfo.setTeamCode(planErpInfo.getTeamNo()); prodPlanInfoService.updateProdPlanInfo(planInfo); - ProdPlanErpInfo prodPlanErpInfo = infoList.get(0); planErpInfo.setObjId(prodPlanErpInfo.getObjId()); this.updateProdPlanErpInfo(planErpInfo); @@ -128,14 +145,17 @@ public class ProdPlanErpInfoServiceImpl implements IProdPlanErpInfoService { planInfo.setPlanCode(planErpInfo.getSeqNo()); planInfo.setOrderCode(planErpInfo.getTaskCode()); planInfo.setPlanAmount(planErpInfo.getCustomerRequestConveyorLength()); -// planInfo.setDeviceCode(planErpInfo.getResourceName()); + planInfo.setDeviceCode(equipmentNo); + planInfo.setProcessCode(planErpInfo.getProcessCode()); + planInfo.setStationCode(planErpInfo.getStationCode()); planInfo.setPlanBeginTime(planErpInfo.getPlanStartTime()); planInfo.setPlanEndTime(planErpInfo.getPlanEndTime()); - + planInfo.setTeamCode(planErpInfo.getTeamNo()); + planInfo.setPlanStatus("0"); + planInfo.setImportFlag("1"); prodPlanInfoService.insertProdPlanInfo(planInfo); this.insertProdPlanErpInfo(planErpInfo); } - } } } diff --git a/os-mes/src/main/java/com/os/mes/record/domain/RecordStaffSalary.java b/os-mes/src/main/java/com/os/mes/record/domain/RecordStaffSalary.java index 4d84172..6070563 100644 --- a/os-mes/src/main/java/com/os/mes/record/domain/RecordStaffSalary.java +++ b/os-mes/src/main/java/com/os/mes/record/domain/RecordStaffSalary.java @@ -101,6 +101,17 @@ public class RecordStaffSalary extends BaseEntity /** ERP数据的ObjectId */ private String objectId; + /** 工序编号 */ + private String processCode; + + public String getProcessCode() { + return processCode; + } + + public void setProcessCode(String processCode) { + this.processCode = processCode; + } + public String getObjectId() { return objectId; } diff --git a/os-mes/src/main/java/com/os/mes/record/domain/StaffSalaryVo.java b/os-mes/src/main/java/com/os/mes/record/domain/StaffSalaryVo.java new file mode 100644 index 0000000..3cf5d03 --- /dev/null +++ b/os-mes/src/main/java/com/os/mes/record/domain/StaffSalaryVo.java @@ -0,0 +1,94 @@ +package com.os.mes.record.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.os.common.annotation.Excel; +import com.os.common.core.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 员工工资记录对象 record_staff_salary + * + * @author Yinq + * @date 2024-07-02 + */ +public class StaffSalaryVo extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** + * 工序编号 + */ + private String processCode; + + /** + * 员工ID + */ + private String staffId; + + /** + * 员工名称 + */ + private String staffName; + + /** 工资系数 */ + private BigDecimal salaryCoefficient; + + /** 该工序所有员工工资系数 */ + private BigDecimal sumSalaryCoefficient; + + public String getProcessCode() { + return processCode; + } + + public void setProcessCode(String processCode) { + this.processCode = processCode; + } + + public String getStaffId() { + return staffId; + } + + public void setStaffId(String staffId) { + this.staffId = staffId; + } + + public String getStaffName() { + return staffName; + } + + public void setStaffName(String staffName) { + this.staffName = staffName; + } + + public BigDecimal getSalaryCoefficient() { + return salaryCoefficient; + } + + public void setSalaryCoefficient(BigDecimal salaryCoefficient) { + this.salaryCoefficient = salaryCoefficient; + } + + public BigDecimal getSumSalaryCoefficient() { + return sumSalaryCoefficient; + } + + public void setSumSalaryCoefficient(BigDecimal sumSalaryCoefficient) { + this.sumSalaryCoefficient = sumSalaryCoefficient; + } + + @Override + public String toString() { + return "StaffSalaryVo{" + + "processCode='" + processCode + '\'' + + ", staffId='" + staffId + '\'' + + ", staffName='" + staffName + '\'' + + ", salaryCoefficient=" + salaryCoefficient + + ", sumSalaryCoefficient=" + sumSalaryCoefficient + + '}'; + } + +} diff --git a/os-mes/src/main/java/com/os/mes/record/service/impl/RecordStaffSalaryServiceImpl.java b/os-mes/src/main/java/com/os/mes/record/service/impl/RecordStaffSalaryServiceImpl.java index 3d07fd3..c7afc75 100644 --- a/os-mes/src/main/java/com/os/mes/record/service/impl/RecordStaffSalaryServiceImpl.java +++ b/os-mes/src/main/java/com/os/mes/record/service/impl/RecordStaffSalaryServiceImpl.java @@ -4,6 +4,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; +import com.os.common.exception.ServiceException; import com.os.common.utils.DateUtils; import com.os.common.utils.StringUtils; import com.os.common.utils.uuid.PlanCodeUtils; @@ -22,12 +23,15 @@ import com.os.mes.prod.domain.ProdPlanInfo; import com.os.mes.prod.mapper.ProdOrderInfoMapper; import com.os.mes.prod.mapper.ProdPlanInfoMapper; import com.os.mes.record.domain.RecordStaffCommute; +import com.os.mes.record.domain.StaffSalaryVo; import com.os.mes.record.mapper.RecordStaffCommuteMapper; +import com.sun.org.apache.xpath.internal.operations.Bool; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.os.mes.record.mapper.RecordStaffSalaryMapper; import com.os.mes.record.domain.RecordStaffSalary; import com.os.mes.record.service.IRecordStaffSalaryService; +import org.springframework.transaction.annotation.Transactional; /** * 员工工资记录Service业务层处理 @@ -130,6 +134,12 @@ public class RecordStaffSalaryServiceImpl implements IRecordStaffSalaryService { /** * 生成班组员工工资 + * (工序硫化的工资计算方法 = 硫化系数*硫化面积*(工资系数/参加该工序的所有人的工资系数的总和) + * 这里的硫化面积=硫化米数/客户要求总米数*硫化面积) + * + * 1、需知道每个员工在时间范围内的上班天数 + * 2、需要知道时间范围内生产工单生产完成多少米 + * 3、工序硫化员工工资 = 硫化系数 * (每个工单的实际硫化米数/客户要求总米数*硫化面积) * (员工的工资系数/参加该工序的所有人的工资系数的总和) * (当前员工在班时长/该工序的所有人在班时长) * * @param recordStaffSalary * @return @@ -137,12 +147,93 @@ public class RecordStaffSalaryServiceImpl implements IRecordStaffSalaryService { @Override public List selectTeamEmployeesWages(RecordStaffSalary recordStaffSalary) { List result = new ArrayList<>(); - //调用最新工资系数接口 LatestSalary salaryData = portService.getERPLatestSalaryData(new ERPParamDto()); //遍历工序 - List processInfoList = baseProcessInfoMapper.selectBaseProcessInfoList(new BaseProcessInfo()); + BaseProcessInfo selectProcessInfo = new BaseProcessInfo(); + selectProcessInfo.setProcessCode(recordStaffSalary.getProcessCode()); + List processInfoList = baseProcessInfoMapper.selectBaseProcessInfoList(selectProcessInfo); + + ProdPlanInfo planInfo = new ProdPlanInfo(); + Map params = recordStaffSalary.getParams(); + planInfo.setParams(params); + + Date beginOrderDate = null; + Date endOrderDate = null; + if (params.containsKey("beginOrderDate")) { + beginOrderDate = DateUtils.parseDate(String.valueOf(params.get("beginOrderDate"))); + } + if (params.containsKey("endOrderDate")) { + endOrderDate = DateUtils.parseDate(String.valueOf(params.get("endOrderDate"))); + } + + long objId = 1L; + String taskCode = PlanCodeUtils.getTaskCode(); + + //(每个工单的实际硫化米数/客户要求总米数*硫化面积) + for (BaseProcessInfo processInfo : processInfoList) { + List salaryVoList = selectSumEmployeeSalary(processInfo.getProcessCode()); + for (StaffSalaryVo staffSalaryVo : salaryVoList) { + + } + + } + + return result; + } + + + /** + * 该工序所有员工的工序工资系数 + * @param processCode + * @return + */ + public List selectSumEmployeeSalary(String processCode) { + List employeeList = new ArrayList<>(); + BaseTeamMembers teamMembers = new BaseTeamMembers(); + teamMembers.setProcessCode(processCode); + List members = baseTeamMembersMapper.selectBaseTeamMembersList(teamMembers); + BigDecimal sumSalaryCoefficient = new BigDecimal(0); + for (BaseTeamMembers member : members) { + BaseStaffInfo staffInfo = new BaseStaffInfo(); + staffInfo.setTeamCode(member.getTeamCode()); + List staffInfoList = baseStaffInfoMapper.selectBaseStaffInfoList(staffInfo); + for (BaseStaffInfo baseStaffInfo : staffInfoList) { + StaffSalaryVo salary = new StaffSalaryVo(); + salary.setProcessCode(processCode); + salary.setStaffId(baseStaffInfo.getStaffId()); + salary.setStaffName(baseStaffInfo.getStaffName()); + salary.setSalaryCoefficient(baseStaffInfo.getWageCoefficient()); + sumSalaryCoefficient = sumSalaryCoefficient.add(baseStaffInfo.getWageCoefficient()); + boolean isRepeat = true; + for (StaffSalaryVo salaryVo : employeeList) { + if (salaryVo.getStaffId().equals(baseStaffInfo.getStaffId())){ + salaryVo.setSalaryCoefficient(salaryVo.getSumSalaryCoefficient().add(sumSalaryCoefficient)); + isRepeat = false; + } + } + if (isRepeat){ + employeeList.add(salary); + } + } + } + for (StaffSalaryVo salaryVo : employeeList) { + salaryVo.setSumSalaryCoefficient(sumSalaryCoefficient); + } + return employeeList; + } + + /* @Override + public List selectTeamEmployeesWages(RecordStaffSalary recordStaffSalary) { + List result = new ArrayList<>(); + //调用最新工资系数接口 + LatestSalary salaryData = portService.getERPLatestSalaryData(new ERPParamDto()); + + //遍历工序 + BaseProcessInfo selectProcessInfo = new BaseProcessInfo(); + selectProcessInfo.setProcessCode(recordStaffSalary.getProcessCode()); + List processInfoList = baseProcessInfoMapper.selectBaseProcessInfoList(selectProcessInfo); ProdPlanInfo planInfo = new ProdPlanInfo(); Map params = recordStaffSalary.getParams(); @@ -256,95 +347,7 @@ public class RecordStaffSalaryServiceImpl implements IRecordStaffSalaryService { } return result; - } - -// /** -// * 生成班组员工工资 -// * @param recordStaffSalary -// * @return -// */ -// @Override -// public List selectTeamEmployeesWages(RecordStaffSalary recordStaffSalary) { -// List result = new ArrayList<>(); -// BaseTeamMembers members = new BaseTeamMembers(); -// members.setTeamCode(recordStaffSalary.getGroupId()); -// List membersList = baseTeamMembersMapper.selectBaseTeamMembersList(members); -// //调用最新工资系数接口 -// LatestSalary salaryData = portService.getERPLatestSalaryData(new ERPParamDto()); -// -// ProdOrderInfo orderInfo = new ProdOrderInfo(); -// Map params = recordStaffSalary.getParams(); -// Date beginOrderDate = null; -// Date endOrderDate = null; -// if (params.containsKey("beginOrderDate")){ -// beginOrderDate = DateUtils.parseDate(String.valueOf(params.get("beginOrderDate"))); -// } -// if (params.containsKey("endOrderDate")){ -// endOrderDate = DateUtils.parseDate(String.valueOf(params.get("endOrderDate"))); -// } -// orderInfo.setParams(params); -// List orderInfoList = prodOrderInfoMapper.selectProdOrderInfoList(orderInfo); -// -// long objId = 1L; -// String taskCode = PlanCodeUtils.getTaskCode(); -// //按照班组 分工资; -// for (BaseTeamMembers team : membersList) { -// String processCode = team.getProcessCode(); -// //工序工资系数 -// BigDecimal coefficient = new BigDecimal(0); -// //工序生产面积 -// BigDecimal totalArea = new BigDecimal(0); -// -// //硫化工序 工序硫化的工资 = 硫化系数*硫化面积*(工资系数/参加该工序的所有人的工资系数的总和) -// //硫化面积=硫化米数/客户要求总米数*硫化面积 -// if(processCode.equals("1002")){ -// coefficient = salaryData.getVulcanizationCoefficient(); -// totalArea = orderInfoList.stream().map(ProdOrderInfo::getOrderDetail) -// .map(e -> e.getBeltRequiredLength().divide(e.getBeltRequiredLength(), 6, RoundingMode.HALF_UP) -// .multiply(e.getSulfurizationArea())) -// .reduce(BigDecimal.ZERO, BigDecimal::add); -// } -// //成型工序 -// if(processCode.equals("1001")){ -// coefficient = salaryData.getFormingCoefficient(); -// totalArea = orderInfoList.stream().map(ProdOrderInfo::getOrderDetail) -// .map(e -> e.getBeltRequiredLength().divide(e.getBeltRequiredLength(), 6, RoundingMode.HALF_UP) -// .multiply(e.getFormingArea())) -// .reduce(BigDecimal.ZERO, BigDecimal::add); -// } -// //获取这个时间段内员工打卡记录 -// BaseStaffInfo selectStaffInfo = new BaseStaffInfo(); -// selectStaffInfo.setTeamCode(team.getTeamCode()); -// selectStaffInfo.setDelFlag("0"); -// List staffInfoList = baseStaffInfoMapper.selectBaseStaffInfoList(selectStaffInfo); -// BigDecimal totalWageCoefficient = staffInfoList.stream().map(BaseStaffInfo::getWageCoefficient) -// .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); -// -// for (BaseStaffInfo staffInfo : staffInfoList) { -// RecordStaffSalary staffSalary = new RecordStaffSalary(); -// staffSalary.setObjId(objId++); -// staffSalary.setTaskCode(taskCode); -// staffSalary.setIdCard(staffInfo.getPassWord()); -// staffSalary.setGroupId(team.getTeamCode()); -// staffSalary.setEventDate(new Date()); -// staffSalary.setSalaryCategory("收入"); -// staffSalary.setRevenueClass("完成生产任务"); -// BigDecimal staffCoefficient = staffInfo.getWageCoefficient().divide(totalWageCoefficient, 6, RoundingMode.HALF_UP); -// BigDecimal revenueAmount = coefficient.multiply(totalArea).multiply(staffCoefficient); -// revenueAmount = revenueAmount.setScale(2, RoundingMode.HALF_UP); -// staffSalary.setRevenueAmount(revenueAmount); -// staffSalary.setSalaryCoefficient(staffInfo.getWageCoefficient()); -// staffSalary.setStaffName(staffInfo.getStaffName()); -// staffSalary.setCardId(staffInfo.getCardId()); -// staffSalary.setTeamName(team.getTeamName()); -// staffSalary.setBeginDate(beginOrderDate); -// staffSalary.setEndDate(endOrderDate); -// result.add(staffSalary); -// } -// -// } -// return result; -// } + }*/ /** * 维护员工工资记录 @@ -354,6 +357,7 @@ public class RecordStaffSalaryServiceImpl implements IRecordStaffSalaryService { * @return */ @Override + @Transactional(rollbackFor = ServiceException.class) public int uploadERPStaffSalary(List recordStaffSalaryList) { Thread thread = new Thread(() -> { for (RecordStaffSalary staffSalary : recordStaffSalaryList) { diff --git a/os-mes/src/main/java/com/os/mes/report/controller/ReportBoardPortController.java b/os-mes/src/main/java/com/os/mes/report/controller/ReportBoardPortController.java index 5e2d72b..98ddd9b 100644 --- a/os-mes/src/main/java/com/os/mes/report/controller/ReportBoardPortController.java +++ b/os-mes/src/main/java/com/os/mes/report/controller/ReportBoardPortController.java @@ -1,11 +1,10 @@ package com.os.mes.report.controller; +import java.util.HashMap; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.*; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; import com.os.common.core.controller.BaseController; import com.os.common.core.domain.AjaxResult; import com.os.mes.report.domain.ReportBoardPort; @@ -34,5 +33,16 @@ public class ReportBoardPortController extends BaseController return success(list); } + /** + * 首页看板接口 + * @param paramMap + * @return + */ + @PostMapping("/homeBoard") + public AjaxResult homeBoard(@RequestBody HashMap paramMap) + { + HashMap list = reportBoardPortService.selectReportHomeBoard(paramMap); + return success(list); + } } diff --git a/os-mes/src/main/java/com/os/mes/report/service/IReportBoardPortService.java b/os-mes/src/main/java/com/os/mes/report/service/IReportBoardPortService.java index 5923b0f..33acb91 100644 --- a/os-mes/src/main/java/com/os/mes/report/service/IReportBoardPortService.java +++ b/os-mes/src/main/java/com/os/mes/report/service/IReportBoardPortService.java @@ -1,5 +1,6 @@ package com.os.mes.report.service; +import java.util.HashMap; import java.util.List; import com.os.mes.report.domain.ReportBoardPort; @@ -20,4 +21,11 @@ public interface IReportBoardPortService public List selectReportBoardPortList(ReportBoardPort reportBoardPort); + /** + * 首页看板接口 + * @param paramMap + * @return + */ + HashMap selectReportHomeBoard(HashMap paramMap); + } diff --git a/os-mes/src/main/java/com/os/mes/report/service/impl/ReportBoardPortServiceImpl.java b/os-mes/src/main/java/com/os/mes/report/service/impl/ReportBoardPortServiceImpl.java index 8dc5121..5544262 100644 --- a/os-mes/src/main/java/com/os/mes/report/service/impl/ReportBoardPortServiceImpl.java +++ b/os-mes/src/main/java/com/os/mes/report/service/impl/ReportBoardPortServiceImpl.java @@ -1,6 +1,13 @@ package com.os.mes.report.service.impl; +import java.math.BigDecimal; +import java.util.HashMap; import java.util.List; + +import com.os.common.utils.DateUtils; +import com.os.mes.prod.domain.ProdOrderInfo; +import com.os.mes.prod.service.IProdOrderInfoService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.os.mes.report.domain.ReportBoardPort; import com.os.mes.report.service.IReportBoardPortService; @@ -15,8 +22,49 @@ import com.os.mes.report.service.IReportBoardPortService; public class ReportBoardPortServiceImpl implements IReportBoardPortService { + @Autowired + private IProdOrderInfoService prodOrderInfoService; + @Override public List selectReportBoardPortList(ReportBoardPort reportBoardPort) { return null; } + + /** + * 首页看板接口 + * @param paramMap + * @return + */ + @Override + public HashMap selectReportHomeBoard(HashMap paramMap) { + //计划订单数量 在制订单数量 今日计划米数 今日完成米数 + HashMap result = new HashMap<>(); + ProdOrderInfo orderInfo = new ProdOrderInfo(); + HashMap map = new HashMap<>(); + String date = DateUtils.getDate() + " 00:00:00"; + map.put("beginBeginDate", date); + map.put("endBeginDate", date); + orderInfo.setParams(map); + List infoList = prodOrderInfoService.selectProdOrderInfoList(orderInfo); + Long planOrder = 0L; + Long makeOrder = 0L; + BigDecimal todayNumber = new BigDecimal(0); + BigDecimal finishNumber = new BigDecimal(0); + for (ProdOrderInfo prodOrderInfo : infoList) { + planOrder++; + todayNumber = todayNumber.add(prodOrderInfo.getOrderAmount()); + if (prodOrderInfo.getOrderAmount().compareTo(prodOrderInfo.getCompleteAmount()) < 1){ + makeOrder++; + finishNumber = finishNumber.add(prodOrderInfo.getOrderAmount()); + } + } + result.put("planOrder", planOrder); + result.put("makeOrder", makeOrder); + result.put("todayNumber", todayNumber); + result.put("finishNumber", finishNumber); + + + return result; + } + } diff --git a/os-mes/src/main/resources/mapper/mes/base/BaseDeviceLedgerMapper.xml b/os-mes/src/main/resources/mapper/mes/base/BaseDeviceLedgerMapper.xml index c8d9f3f..b15497b 100644 --- a/os-mes/src/main/resources/mapper/mes/base/BaseDeviceLedgerMapper.xml +++ b/os-mes/src/main/resources/mapper/mes/base/BaseDeviceLedgerMapper.xml @@ -26,6 +26,8 @@ + + @@ -49,9 +51,12 @@ bdl.update_time, bdl.factory_code, bdl.team_code, - bdl.asset_code + bdl.asset_code, + bpi.process_code, + bpi.process_name from base_device_ledger bdl left join base_product_line bpl on bpl.product_line_code = bdl.product_line_code + left join base_process_info bpi on bpi.station_codes like concat('%', bpl.product_line_code, '%') + + \ No newline at end of file diff --git a/os-mes/src/main/resources/mapper/mes/prod/ProdPlanInfoMapper.xml b/os-mes/src/main/resources/mapper/mes/prod/ProdPlanInfoMapper.xml index 7f7725f..c2d39ab 100644 --- a/os-mes/src/main/resources/mapper/mes/prod/ProdPlanInfoMapper.xml +++ b/os-mes/src/main/resources/mapper/mes/prod/ProdPlanInfoMapper.xml @@ -29,6 +29,7 @@ + @@ -68,7 +69,8 @@ ppi.updated_by, ppi.updated_time, ppi.plan_begin_time, - ppi.plan_end_time + ppi.plan_end_time, + ppi.import_flag from prod_plan_info ppi left join base_product_line bpl on bpl.product_line_code = ppi.station_code left join base_team_members btm on btm.team_code = ppi.team_code @@ -177,6 +179,7 @@ plan_status, classes, process_code, + import_flag, #{planCode}, @@ -200,6 +203,7 @@ #{planStatus}, #{classes}, #{processCode}, + #{importFlag}, @@ -227,6 +231,7 @@ plan_status = #{planStatus}, classes = #{classes}, process_code = #{processCode}, + import_flag = #{importFlag}, where obj_id = #{objId} @@ -251,7 +256,7 @@ and ppi.order_code = #{orderCode} and ppi.process_code = #{processCode} - and LEFT(CONVERT(VARCHAR(17), ppd.begin_time, 120), 10) between #{params.beginOrderDate} and #{params.endOrderDate} + and ppd.end_time between #{params.beginOrderDate} and #{params.endOrderDate} diff --git a/os-quartz/src/main/java/com/os/quartz/task/ERPTask.java b/os-quartz/src/main/java/com/os/quartz/task/ERPTask.java index 7638133..e476dc0 100644 --- a/os-quartz/src/main/java/com/os/quartz/task/ERPTask.java +++ b/os-quartz/src/main/java/com/os/quartz/task/ERPTask.java @@ -49,13 +49,14 @@ public class ERPTask { portService.getERPEmployeeWageData(paramDto); } - public void ERPProductionPlanTask() { + public void ERPProductionPlanTask(Long startDays, Long endDays) { //获取生产计划管理 + String startDate = convertDaysToDateString(startDays, 0); + String endDate = convertDaysToDateString(endDays, 1); ERPParamDto paramDto = new ERPParamDto(); - paramDto.setAppCode(ERPConstants.salaryAppCode); - paramDto.setController(ERPConstants.salaryController); - paramDto.setActionName(ERPConstants.salaryActionName); - portService.getERPEmployeeWageData(paramDto); + paramDto.setPlanStartTime(startDate); + paramDto.setPlanEndTime(endDate); + portService.getProductionPlanTask(paramDto); } /**