From b170e910a543c79ff787875989e354cf7c04bdff Mon Sep 17 00:00:00 2001 From: FCD <2453864257@qq.com> Date: Thu, 22 Jan 2026 17:17:46 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=A8=81=E4=BC=9F?= =?UTF-8?q?=E7=94=B5=E8=A1=A8=E4=BF=AE=E6=AD=A3=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../op/system/api/RemoteEnergyService.java | 5 ++ .../factory/RemoteEnergyFallbackFactory.java | 7 +++ .../energy/base/domain/BaseMonitorInfo.java | 10 +++ .../RecordDnbInstantController.java | 24 +++++++ .../record/domain/RecordDnbInstant.java | 12 ---- .../service/IRecordDnbInstantService.java | 5 ++ .../impl/RecordDnbInstantServiceImpl.java | 42 +++++++++++++ .../mapper/base/BaseMonitorInfo1Mapper.xml | 1 + .../mapper/report/ReportPointDnbMapper.xml | 63 +++++++++++++++++++ .../src/main/java/com/op/job/task/RyTask.java | 20 ++++++ 10 files changed, 177 insertions(+), 12 deletions(-) diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteEnergyService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteEnergyService.java index 402061924..83c3eda55 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteEnergyService.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteEnergyService.java @@ -8,6 +8,8 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import java.util.Map; + /** auth YangWl * 能源服务 */ @@ -26,4 +28,7 @@ public interface RemoteEnergyService { @PostMapping(value = "/record/dnbInstant/getNhEnergyDetail") public R SyncNhEnergyDetail(); + + @PostMapping(value = "/record/dnbInstant/fixWwEnergyData",headers = {"poolName=ds_1000"}) + public R syncFixWwEnergyData(@RequestBody Map map); } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteEnergyFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteEnergyFallbackFactory.java index 32a0e9b19..085e5d861 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteEnergyFallbackFactory.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteEnergyFallbackFactory.java @@ -9,6 +9,8 @@ import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; +import java.util.Map; + @Component public class RemoteEnergyFallbackFactory implements FallbackFactory { private static final Logger log = LoggerFactory.getLogger(RemoteEnergyFallbackFactory.class); @@ -36,6 +38,11 @@ public class RemoteEnergyFallbackFactory implements FallbackFactory map) { + return R.fail("修正威伟电表数据失败:" + throwable.getMessage()); + } }; } } diff --git a/op-modules/op-energy/src/main/java/com/op/energy/base/domain/BaseMonitorInfo.java b/op-modules/op-energy/src/main/java/com/op/energy/base/domain/BaseMonitorInfo.java index 1f599e72a..d913c6ba2 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/base/domain/BaseMonitorInfo.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/base/domain/BaseMonitorInfo.java @@ -200,6 +200,8 @@ public class BaseMonitorInfo extends BaseEntity { private Boolean flag; + private String electricityMeterType; + public String getPhysicalCode() { return physicalCode; } @@ -481,6 +483,14 @@ public class BaseMonitorInfo extends BaseEntity { this.connCode = connCode; } + public String getElectricityMeterType() { + return electricityMeterType; + } + + public void setElectricityMeterType(String electricityMeterType) { + this.electricityMeterType = electricityMeterType; + } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) diff --git a/op-modules/op-energy/src/main/java/com/op/energy/record/controller/RecordDnbInstantController.java b/op-modules/op-energy/src/main/java/com/op/energy/record/controller/RecordDnbInstantController.java index 5f85a9f51..792f0fed1 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/record/controller/RecordDnbInstantController.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/record/controller/RecordDnbInstantController.java @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.List; +import java.util.Map; /** * 电实时数据Controller @@ -209,5 +210,28 @@ public class RecordDnbInstantController extends BaseController { return AjaxResult.success(); } + /** + * 获取威伟电表能耗明细导出 + * **/ + @PostMapping("/testGetNhEnergyDetail") + @ResponseBody + public void testGetNhEnergyDetail( HttpServletResponse response ,@RequestBody Map params) { + List list = recordDnbInstantService.testGetNhEnergyDetail(params); + ExcelUtil util = new ExcelUtil(RecordDnbInstant.class); + util.exportExcel(response, list, "导出"); + } + + /** + * 修正威伟电表数据 + * **/ + @PostMapping("/fixWwEnergyData") + @ResponseBody + public AjaxResult fixWwEnergyData(@RequestBody Map params ) { + recordDnbInstantService.fixWwEnergyData(params); + return AjaxResult.success(); + } + + + } diff --git a/op-modules/op-energy/src/main/java/com/op/energy/record/domain/RecordDnbInstant.java b/op-modules/op-energy/src/main/java/com/op/energy/record/domain/RecordDnbInstant.java index 6fad8b347..ceeeaa72b 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/record/domain/RecordDnbInstant.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/record/domain/RecordDnbInstant.java @@ -32,7 +32,6 @@ public class RecordDnbInstant extends BaseEntity { /** * 计量设备名称 */ - @Excel(name = "计量设备名称") private String monitorName; /** @@ -51,37 +50,31 @@ public class RecordDnbInstant extends BaseEntity { /** * A项电压 */ - @Excel(name = "A项电压") private BigDecimal vA; /** * B项电压 */ - @Excel(name = "B项电压") private BigDecimal vB; /** * C项电压 */ - @Excel(name = "C项电压") private BigDecimal vC; /** * A项电流 */ - @Excel(name = "A项电流") private BigDecimal iA; /** * B项电流 */ - @Excel(name = "B项电流") private BigDecimal iB; /** * C项电流 */ - @Excel(name = "C项电流") private BigDecimal iC; /** @@ -92,7 +85,6 @@ public class RecordDnbInstant extends BaseEntity { /** * 功率因数 */ - @Excel(name = "功率因数") private BigDecimal glys; /** @@ -104,25 +96,21 @@ public class RecordDnbInstant extends BaseEntity { /** * 有功功率 */ - @Excel(name = "有功功率") private BigDecimal activePower; /** * 无功功率 */ - @Excel(name = "无功功率") private BigDecimal reactivePower; /** * 电耗量 */ - @Excel(name = "电耗量") private BigDecimal consumption; /** * 采集方式 */ - @Excel(name = "采集方式") private Long collectType; /** diff --git a/op-modules/op-energy/src/main/java/com/op/energy/record/service/IRecordDnbInstantService.java b/op-modules/op-energy/src/main/java/com/op/energy/record/service/IRecordDnbInstantService.java index 837ea3fdb..dc67af770 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/record/service/IRecordDnbInstantService.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/record/service/IRecordDnbInstantService.java @@ -4,6 +4,7 @@ package com.op.energy.record.service; import com.op.energy.record.domain.RecordDnbInstant; import java.util.List; +import java.util.Map; /** * 电实时数据Service接口 @@ -89,4 +90,8 @@ public interface IRecordDnbInstantService { void getNhEnergyDetail(); void getNhEnergy(); + + List testGetNhEnergyDetail(Map params); + + void fixWwEnergyData(Map params); } diff --git a/op-modules/op-energy/src/main/java/com/op/energy/record/service/impl/RecordDnbInstantServiceImpl.java b/op-modules/op-energy/src/main/java/com/op/energy/record/service/impl/RecordDnbInstantServiceImpl.java index 113588c0a..517d274ba 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/record/service/impl/RecordDnbInstantServiceImpl.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/record/service/impl/RecordDnbInstantServiceImpl.java @@ -454,4 +454,46 @@ public class RecordDnbInstantServiceImpl implements IRecordDnbInstantService { return defaultValue; } } + + + @Override + public List testGetNhEnergyDetail(Map params) { + List list = new ArrayList<>(); + + /** + * 电压/电流 + * **/ + AjaxResult electricQuantityRes= remoteOpenService.getElectricQuantity(params); + + if(electricQuantityRes.isSuccess()){ + JSONObject resData = JSONObject.parseObject(JSON.toJSONString(electricQuantityRes.get(AjaxResult.DATA_TAG))); + JSONArray array = JSONArray.parseArray(resData.get("Data").toString()); + + for (int i = 0; i < array.size(); i++) { + RecordDnbInstant instant = new RecordDnbInstant(); + instant.setMonitorId(array.getJSONObject(i).getString("Address")); + instant.setZxyg(getSafeBigDecimal(array.getJSONObject(i), "ZYGDNSZ")); + instant.setCollectTime(DateUtils.dateTime("yyyy-MM-dd HH:mm", array.getJSONObject(i).getString("ReadingDate"))); + list.add(instant); + } + } + + return list; + + } + + @Override + @DS("#header.poolName") + public void fixWwEnergyData(Map params) { + //获取威伟电表 + BaseMonitorInfo query = new BaseMonitorInfo(); + query.setElectricityMeterType("2"); + List list = baseMonitorInfoMapper.selectBaseMonitorInfoList(query); + + for (BaseMonitorInfo info : list) { + params.put("monitorId", info.getMonitorId()); + reportPointDnbMapper.fixWwEnergyData(params); + } + + } } diff --git a/op-modules/op-energy/src/main/resources/mapper/base/BaseMonitorInfo1Mapper.xml b/op-modules/op-energy/src/main/resources/mapper/base/BaseMonitorInfo1Mapper.xml index b13249795..b792d0788 100644 --- a/op-modules/op-energy/src/main/resources/mapper/base/BaseMonitorInfo1Mapper.xml +++ b/op-modules/op-energy/src/main/resources/mapper/base/BaseMonitorInfo1Mapper.xml @@ -81,6 +81,7 @@ and room_code = #{roomCode} and address_code = #{addressCode} and conn_code = #{connCode} + and electricity_meter_type = #{electricityMeterType} diff --git a/op-modules/op-energy/src/main/resources/mapper/report/ReportPointDnbMapper.xml b/op-modules/op-energy/src/main/resources/mapper/report/ReportPointDnbMapper.xml index 4e9d9d6ad..712aa7eee 100644 --- a/op-modules/op-energy/src/main/resources/mapper/report/ReportPointDnbMapper.xml +++ b/op-modules/op-energy/src/main/resources/mapper/report/ReportPointDnbMapper.xml @@ -506,4 +506,67 @@ order by ert.pointTime asc + + + + INSERT INTO report_point_dnb + ( + monitor_id, monitor_name, begin_time, end_time, + record_time, expend, meter_value, collect_type + ) + SELECT + t.monitorId, t.monitorName, t.beginTime, t.endTime, + t.recordTime, t.expend, t.meterValue, t.collectType + FROM ( + + SELECT + #{item.monitorId,jdbcType=VARCHAR} AS monitorId, + #{item.monitorName,jdbcType=VARCHAR} AS monitorName, + #{item.beginTime,jdbcType=TIMESTAMP} AS beginTime, + #{item.endTime,jdbcType=TIMESTAMP} AS endTime, + GETDATE() AS recordTime, + #{item.expend,jdbcType=DECIMAL} AS expend, + #{item.meterValue,jdbcType=DECIMAL} AS meterValue, + '1' AS collectType + + ) t + + 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 ea361f333..1efa5f283 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 @@ -11,7 +11,9 @@ import org.springframework.stereotype.Component; import com.op.common.core.utils.StringUtils; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 定时任务调度测试 @@ -291,5 +293,23 @@ public class RyTask { logger.info("+++留样复检任务提醒++syncSendSampleCheckRemind+++++"); remoteQualityService.syncSendSampleCheckRemind(); } + + /**********修正威伟电表数据(有参)*********/ + public void syncFixWwEnergyData(String beginDate,String endDate){ + logger.info("+++修正威伟电表数据(有参)++syncFixWwEnergyData+++++"); + Map map = new HashMap<>(); + map.put("beginDate",beginDate); + map.put("endDate",endDate); + remoteEnergyService.syncFixWwEnergyData(map); + } + + /** 修正威伟电表数据(无参) **/ + public void syncFixWwEnergyData(){ + logger.info("+++修正威伟电表数据(无参)++syncFixWwEnergyData+++++"); + Map map = new HashMap<>(); + map.put("beginDate",""); + map.put("endDate",""); + remoteEnergyService.syncFixWwEnergyData(map); + } } From e8df7cd4f6b46bf6fd0c9c22f0cdb358c101b78c Mon Sep 17 00:00:00 2001 From: FCD <2453864257@qq.com> Date: Fri, 23 Jan 2026 13:41:44 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=83=BD=E8=80=97?= =?UTF-8?q?=E8=A1=A5=E5=BD=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/dataAnalysisController.java | 22 +++++++++++++++++++ .../energy/report/domain/ReportPointDnb.java | 6 ++--- .../report/mapper/ReportPointDnbMapper.java | 7 ++++++ .../report/service/IDataAnalysisService.java | 3 +++ .../service/impl/DataAnalysisServiceImpl.java | 12 ++++++++++ 5 files changed, 47 insertions(+), 3 deletions(-) diff --git a/op-modules/op-energy/src/main/java/com/op/energy/report/controller/dataAnalysisController.java b/op-modules/op-energy/src/main/java/com/op/energy/report/controller/dataAnalysisController.java index 7db82206d..779248c3c 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/report/controller/dataAnalysisController.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/report/controller/dataAnalysisController.java @@ -13,11 +13,13 @@ import com.op.energy.base.utils.ExportExcelUtil; import com.op.energy.base.utils.SpringUtils; import com.op.energy.report.domain.ExportReport; import com.op.energy.report.domain.ReportOrderEnergyDTO; +import com.op.energy.report.domain.ReportPointDnb; import com.op.energy.report.service.IDataAnalysisService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; @@ -280,4 +282,24 @@ public class dataAnalysisController extends BaseController { util.exportExcel(response, orderEnergyList, "单耗统计数据"); } + + /** + * 能耗补录模版 + * **/ + @PostMapping("/energyTemplate") + public void energyTemplate(HttpServletResponse response) { + ExcelUtil util = new ExcelUtil<>(ReportPointDnb.class); + util.importTemplateExcel(response, "能耗补录-导入模板"); + } + + /** + * 能耗补录 + * **/ + @PostMapping("/energyImport") + public AjaxResult energyImport(MultipartFile file) throws Exception { + ExcelUtil util = new ExcelUtil<>(ReportPointDnb.class); + List list = util.importExcel(file.getInputStream()); + return AjaxResult.success(dataAnalysisService.importReportPointDnb(list)); + } + } diff --git a/op-modules/op-energy/src/main/java/com/op/energy/report/domain/ReportPointDnb.java b/op-modules/op-energy/src/main/java/com/op/energy/report/domain/ReportPointDnb.java index cd6136866..4dc4289eb 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/report/domain/ReportPointDnb.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/report/domain/ReportPointDnb.java @@ -56,7 +56,7 @@ public class ReportPointDnb extends BaseEntity { /** * 计量设备位置 */ - @Excel(name = "计量设备位置") + @Excel(name = "计量设备位置", type = Excel.Type.EXPORT) private String address; /** @@ -68,7 +68,7 @@ public class ReportPointDnb extends BaseEntity { /** * 价格 */ - @Excel(name = "价格") + @Excel(name = "价格", type = Excel.Type.EXPORT) private BigDecimal price; /** @@ -95,7 +95,7 @@ public class ReportPointDnb extends BaseEntity { * 记录时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @Excel(name = "记录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "记录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Excel.Type.EXPORT) private Date recordTime; /** diff --git a/op-modules/op-energy/src/main/java/com/op/energy/report/mapper/ReportPointDnbMapper.java b/op-modules/op-energy/src/main/java/com/op/energy/report/mapper/ReportPointDnbMapper.java index 7d7c9ddd6..da27a7b44 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/report/mapper/ReportPointDnbMapper.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/report/mapper/ReportPointDnbMapper.java @@ -4,6 +4,7 @@ package com.op.energy.report.mapper; import com.op.energy.report.domain.ReportOrderEnergyDTO; import com.op.energy.report.domain.ReportPointDnb; import com.op.energy.report.domain.ReportPointDnbDTO; +import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; @@ -90,4 +91,10 @@ public interface ReportPointDnbMapper { List selectPointDnbGroupList(ReportPointDnb pointDnb); List> datePointDnbGroupList(ReportPointDnb lineDnb); + + Integer fixWwEnergyData(@Param("params") Map params); + + int batchInsertReportPointDnb(@Param("list") List list); + + } diff --git a/op-modules/op-energy/src/main/java/com/op/energy/report/service/IDataAnalysisService.java b/op-modules/op-energy/src/main/java/com/op/energy/report/service/IDataAnalysisService.java index cde409d23..24c09ab7d 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/report/service/IDataAnalysisService.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/report/service/IDataAnalysisService.java @@ -3,6 +3,7 @@ package com.op.energy.report.service; import com.op.energy.base.domain.BaseLineLoss; import com.op.energy.report.domain.ExportReport; import com.op.energy.report.domain.ReportOrderEnergyDTO; +import com.op.energy.report.domain.ReportPointDnb; import java.util.List; import java.util.Map; @@ -108,4 +109,6 @@ public interface IDataAnalysisService { List classificationExportReport(Map paramMap); public List OrderEnergyList(ReportOrderEnergyDTO reportOrderEnergyDTO); + + String importReportPointDnb(List list); } diff --git a/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/DataAnalysisServiceImpl.java b/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/DataAnalysisServiceImpl.java index d2fc2fa37..95dd0d12d 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/DataAnalysisServiceImpl.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/DataAnalysisServiceImpl.java @@ -22,6 +22,7 @@ import com.op.energy.report.domain.ReportPointWater; import com.op.energy.report.mapper.ReportPointDnbMapper; import com.op.energy.report.mapper.ReportPointWaterMapper; import com.op.energy.report.service.IDataAnalysisService; +import org.apache.commons.collections4.ListUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -1047,4 +1048,15 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService { return reportOrderEnergyDTOList; } + + @Override + @DS("#header.poolName") + public String importReportPointDnb(List importList) { + if (importList.isEmpty()){ + throw new RuntimeException("导入数据为空"); + } + int successCount = reportPointDnbMapper.batchInsertReportPointDnb(importList); + + return String.format("导入成功。上传数量:%d,导入数量:%d", importList.size(), successCount); + } } From 5da4324c1b13c635673586e48c7c01f731bf94cd Mon Sep 17 00:00:00 2001 From: FCD <2453864257@qq.com> Date: Fri, 23 Jan 2026 13:52:25 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E7=89=A9=E6=96=99=E6=8D=9F=E8=80=97?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../op/mes/service/impl/MesReportWorkConsumeServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkConsumeServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkConsumeServiceImpl.java index cb2ac7294..2de90e543 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkConsumeServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkConsumeServiceImpl.java @@ -266,9 +266,9 @@ public class MesReportWorkConsumeServiceImpl implements IMesReportWorkConsumeSer mesReportWorkMapper.updateAttr2AndRspos(params); } //attr2 0->1组件完成修改 -// int f = mesReportWorkMapper.updateAttr2(workorder); - logger.info("组件修改完成:"); } + int f = mesReportWorkMapper.updateAttr2(workorder); + logger.info("组件修改完成:"); } } From 78923b5ee21edff9d5b2e35edc918e44c0cbbca7 Mon Sep 17 00:00:00 2001 From: FCD <2453864257@qq.com> Date: Fri, 23 Jan 2026 13:54:05 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AF=B9=E5=A4=96?= =?UTF-8?q?=E7=BC=BA=E9=99=B7=E7=B1=BB=E5=9E=8B=E6=9F=A5=E8=AF=A2=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../op/open/controller/OpenController.java | 7 +++++++ .../java/com/op/open/mapper/OpenMapper.java | 6 ++++++ .../java/com/op/open/service/OpenService.java | 2 ++ .../op/open/service/impl/OpenServiceImpl.java | 20 +++++++++++++++++++ .../main/resources/mapper/open/OpenMapper.xml | 9 +++++++++ 5 files changed, 44 insertions(+) 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 index a3f7f287e..cdac6a16c 100644 --- 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 @@ -313,4 +313,11 @@ public class OpenController extends BaseController { } + /** + * 对外缺陷类型查询 + * **/ + @GetMapping("/getClassInfoListByCheckType") + public AjaxResult getClassInfoListByCheckType(String checkType) { + return openService.getClassInfoListByCheckType(checkType); + } } 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 index d58853640..ac3fe37e7 100644 --- 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 @@ -11,11 +11,13 @@ import com.op.system.api.domain.device.EquEquipmentDTO; import com.op.system.api.domain.dto.WCSDTO; import com.op.system.api.domain.mes.*; import com.op.system.api.domain.quality.*; +import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.Date; import java.util.List; +import java.util.Map; /** * 生产rfid流程Mapper接口 @@ -109,6 +111,10 @@ public interface OpenMapper { void updateEquipmentStatuss(EquEquipmentBo equEquipment); EquEquipmentBo selectEquEquipmentByEquEquipmentCode(String equipmentCode); + + + @MapKey("id") + List> getClassInfoListByCheckType(@Param(value = "checkType") String checkType); // // int updateEquBatchs(@Param("list") List updates); // 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 index df54f5c33..8a5de1aee 100644 --- 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 @@ -59,4 +59,6 @@ public interface OpenService { AjaxResult getFrozenElectricity(NhQuery paramMap); AjaxResult getAttRecord(HrQuery paramMap); + + AjaxResult getClassInfoListByCheckType(String checkType); } diff --git a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java index bde409b2d..cb931b235 100644 --- a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java +++ b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java @@ -1059,4 +1059,24 @@ public class OpenServiceImpl implements OpenService { public AjaxResult getAttRecord(HrQuery paramMap) { return AjaxResult.success(hrApi.getAttRecord(paramMap)); } + + @Override + public AjaxResult getClassInfoListByCheckType(String checkType) { + if (StringUtils.isBlank(checkType)){ + return error("缺陷类型不能为空"); + } + + DynamicDataSourceContextHolder.push("ds_1000" ); + try { + return success(openMapper.getClassInfoListByCheckType(checkType)) ; + }catch(Exception e){ + logger.info(e.getMessage()); + e.printStackTrace(); + return error(e.getMessage()); + } + finally { + DynamicDataSourceContextHolder.poll(); + } + + } } 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 index 6e7fcfd96..b9dce7d87 100644 --- a/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml +++ b/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml @@ -626,4 +626,13 @@ and del_flag = '0' + + From b631b84543e961bcd1992d69d4175626f9e9f1a7 Mon Sep 17 00:00:00 2001 From: FCD <2453864257@qq.com> Date: Fri, 23 Jan 2026 13:55:33 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E7=99=BD=E5=9D=AF=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/QcInterfaceController.java | 11 +++++ .../controller/QcStaticTableController.java | 13 +++--- .../op/quality/mapper/QcInterfaceMapper.java | 3 ++ .../quality/service/IQcInterfaceService.java | 2 + .../service/impl/QcInterfaceServiceImpl.java | 29 +++++++++++++ .../impl/QcStaticTableServiceImpl.java | 41 ++++++++++++------- .../mapper/quality/QcInterfaceMapper.xml | 16 ++++++++ .../mapper/quality/QcStaticTableMapper.xml | 8 +--- 8 files changed, 97 insertions(+), 26 deletions(-) diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcInterfaceController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcInterfaceController.java index b3ec5c639..748a65ad4 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcInterfaceController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcInterfaceController.java @@ -155,4 +155,15 @@ public class QcInterfaceController { return qcInterfaceService.getLineQcData(qcInterface); } + /** + * 白坯每月不合格数量 + * + * @param queryDate 查询日期 + * @return + */ + @GetMapping("/getBpMonthNoOk") + public Map> getBpMonthNoOk(String queryDate) { + return qcInterfaceService.getBpMonthNoOk(queryDate); + } + } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java index b69feb899..eacc2c8af 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java @@ -968,16 +968,16 @@ public class QcStaticTableController extends BaseController { @Log(title = "白坯缺陷排列报表导出", businessType = BusinessType.EXPORT) @PostMapping("/getMonthOfDataDefectExport") public void getMonthOfDataDefectExport(HttpServletResponse response, QcStaticTable qcStaticTable) { - List> list = qcStaticTableService.getMonthOfDataDefect(qcStaticTable); + List> list = qcStaticTableService.getMonthOfDataDefectV2(qcStaticTable); //表格结构数据 List titils = qcStaticTableService.getDaysOfMonth(qcStaticTable); ArrayList excelCols = new ArrayList<>(); - excelCols.add(new ExcelCol("不良项目", "dataType", 30)); + excelCols.add(new ExcelCol("不良项目", "defect", 30)); for(int m=0;m> list = qcStaticTableService.getDefectItemData(qcStaticTable); + List> list = qcStaticTableService.getDefectItemDataV2(qcStaticTable); //表格结构数据 List titils = qcStaticTableService.getDefectItemTitle(qcStaticTable); @@ -1060,10 +1060,11 @@ public class QcStaticTableController extends BaseController { @Log(title = "白坯性能报表导出", businessType = BusinessType.EXPORT) @PostMapping("/getDefectItemDataPCExport") public void getDefectItemDataPCExport(HttpServletResponse response, QcStaticTable qcStaticTable) { - List> list = qcStaticTableService.getDefectItemDataPC(qcStaticTable); + List> list = qcStaticTableService.getDefectItemDataPCV2(qcStaticTable); //表格结构数据 List titils = qcStaticTableService.getDefectItemTitle(qcStaticTable); + titils.add("其他"); ArrayList excelCols = new ArrayList<>(); excelCols.add(new ExcelCol("项目", "dataType", 30)); for(int m=0;m getProduceNoOkList1(QcInterface qcInterface); List getCheckProjectsPie1(QcInterface qcInterface); + + @MapKey("ymd") + Map getBpMonthNoOk(String queryDate); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcInterfaceService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcInterfaceService.java index 7059b0ef0..1de1ec87f 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcInterfaceService.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcInterfaceService.java @@ -39,4 +39,6 @@ public interface IQcInterfaceService { QcLineChartDto getLineQcData(QcInterface qcInterface); List getCheckProjectsPieLL(QcInterface qcInterface); + + Map> getBpMonthNoOk(String queryDate); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcInterfaceServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcInterfaceServiceImpl.java index a79ee5484..5daf95d1b 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcInterfaceServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcInterfaceServiceImpl.java @@ -495,4 +495,33 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService { } + @Override + @DS("#header.poolName") + public Map> getBpMonthNoOk(String queryDate) { + Map> dtoMap = new HashMap<>(); + + String nowYMD = DateUtils.getDate(); + String[] nowYMDs = nowYMD.split("-"); + int nowMonth = Integer.parseInt(nowYMDs[1]); + List monthNames = new ArrayList<>(); + + Map noOkHzs = qcInterfaceMapper.getBpMonthNoOk(queryDate); + List monthData = new ArrayList<>(); + + for (int mh = 1; mh <= nowMonth; mh++) { + String yyyymm = nowYMDs[0] + "-" + String.format("%02d", mh); + monthNames.add(yyyymm); + if (!CollectionUtils.isEmpty(noOkHzs)&&noOkHzs.get(yyyymm)!=null) { + monthData.add(noOkHzs.get(yyyymm).getNoOkQuality()); + } else { + monthData.add("0"); + } + } + + dtoMap.put("month", monthNames); + dtoMap.put("monthData", monthData); + return dtoMap; + } + + } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java index 5d90b8128..d78bc4cfc 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcStaticTableServiceImpl.java @@ -1787,6 +1787,8 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { if (StringUtils.isNotBlank(data.getAttr2())){ count = count + Integer.parseInt(data.getAttr2()); } + }else { + map.put(data.getAttr1(), "0"); } } map.put("count", Integer.toString(count)); @@ -1800,7 +1802,7 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { map2.put("defect","抽样数"); for (QcCheckTaskDefect data : list){ if ("合计".equals(data.getDefectSubclass())){ - map1.put(data.getAttr1(),data.getAttr2()); + map1.put(data.getAttr1(),StringUtils.isEmpty(data.getAttr2()) ? "0" : data.getAttr2()); map2.put(data.getAttr1(),data.getAttr3()); if (StringUtils.isNotBlank(data.getAttr2())){ count1 = count1 + Integer.parseInt(data.getAttr2()); @@ -2081,6 +2083,7 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { List> dtos = new ArrayList<>(); //获取不良种类 List bpDefects = qcStaticTableMapper.getBpDefects(qcStaticTable); + bpDefects.add("其他"); List monthList = qcStaticTableMapper.getBPDefectMothPCMapV2(qcStaticTable); qcStaticTable.setYearMonth(null); List totalList = qcStaticTableMapper.getBPDefectMothPCMapV2(qcStaticTable); @@ -2099,21 +2102,16 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { for (String defect : bpDefects) { for (QcCheckTaskDefect item : list){ if (defect.equals(item.getDefectSubclass())){ - if (StringUtils.isNotBlank(item.getAttr1())){ - if ("rate".equals(type)){ - result.put("item"+i, item.getAttr1()); - }else { - if (StringUtils.isNotBlank(item.getAttr2())){ - result.put("item"+i,new BigDecimal(item.getAttr1()).divide(new BigDecimal(item.getAttr2()),2,RoundingMode.HALF_UP).toString()); - }else { - result.put("item"+i,"100"); - } - } - + if (StringUtils.isNotBlank(item.getAttr2()) && StringUtils.isNotBlank(item.getAttr3())){ + BigDecimal itemNoOkRate = new BigDecimal(0); + itemNoOkRate = new BigDecimal(item.getAttr2()).divide(new BigDecimal(item.getAttr3()),4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)); + result.put("item"+i,itemNoOkRate.toString()); }else { result.put("item"+i,"0"); } break; + }else { + result.put("item"+i,"0"); } } i++; @@ -2197,6 +2195,7 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { //获取不良种类 List bpDefects = qcStaticTableMapper.getBpDefects(qcStaticTable); + bpDefects.add("其他"); result.put("xData",bpDefects); //当前查询月份的不良率 @@ -2231,7 +2230,14 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { boolean flag = true; for (QcCheckTaskDefect item : monthList){ if (defect.equals(item.getDefectSubclass())){ - yDataLeft.add(item.getAttr1()); + if (StringUtils.isNotBlank(item.getAttr2()) && StringUtils.isNotBlank(item.getAttr3())){ + //不良率 + BigDecimal itemNoOkRate = new BigDecimal(0); + itemNoOkRate = new BigDecimal(item.getAttr2()).divide(new BigDecimal(item.getAttr3()),4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)); + yDataLeft.add(itemNoOkRate.toString()); + }else { + yDataLeft.add("0"); + } flag = false; break; } @@ -2251,7 +2257,14 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService { boolean flag = true; for (QcCheckTaskDefect item : totalList){ if (defect.equals(item.getDefectSubclass())){ - yDataRight.add(item.getAttr1()); + if (StringUtils.isNotBlank(item.getAttr2()) && StringUtils.isNotBlank(item.getAttr3())){ + //不良率 + BigDecimal itemNoOkRate = new BigDecimal(0); + itemNoOkRate = new BigDecimal(item.getAttr2()).divide(new BigDecimal(item.getAttr3()),4,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)); + yDataRight.add(itemNoOkRate.toString()); + }else { + yDataRight.add("0"); + } flag = false; break; } diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcInterfaceMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcInterfaceMapper.xml index 89f08dedc..5dfe0cc98 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcInterfaceMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcInterfaceMapper.xml @@ -360,4 +360,20 @@ order by qctd.update_time desc + + + diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcStaticTableMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcStaticTableMapper.xml index 43a18fbae..611ce0d0f 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcStaticTableMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcStaticTableMapper.xml @@ -1422,7 +1422,6 @@ LEFT JOIN qc_check_task_defect td ON qct.record_id = td.belong_to LEFT JOIN qc_defect_type_class tc ON td.class_id = tc.id WHERE qct.del_flag = '0' - AND tc.class_name IS NOT NULL AND FORMAT ( qct.create_time, 'yyyy-MM' ) = #{yearMonth} AND qct.order_type = 'bp' GROUP BY tc.class_name, FORMAT ( qct.create_time, 'yyyy-MM-dd' ) @@ -1436,7 +1435,6 @@ LEFT JOIN qc_check_task_defect td ON qct.record_id = td.belong_to LEFT JOIN qc_defect_type_class tc ON td.class_id = tc.id WHERE qct.del_flag = '0' - AND tc.class_name IS NOT NULL AND FORMAT ( qct.create_time, 'yyyy-MM' ) = #{yearMonth} AND qct.order_type = 'bp' GROUP BY FORMAT ( qct.create_time, 'yyyy-MM-dd' ) @@ -1452,7 +1450,6 @@ LEFT JOIN qc_check_task_defect td ON qct.record_id = td.belong_to LEFT JOIN qc_defect_type_class tc ON td.class_id = tc.id WHERE qct.del_flag = '0' - AND tc.class_name IS NOT NULL AND qct.order_type = 'bp' AND FORMAT ( qct.create_time, 'yyyy-MM' ) = #{yearMonth} @@ -1468,15 +1465,14 @@ FROM ( SELECT - tc.class_name defectSubclass, - SUM (CASE WHEN qct.check_status = 'N' THEN 1 ELSE 0 END) attr2, + ISNULL(tc.class_name,'其他') defectSubclass, + SUM (CASE WHEN qct.check_result = 'N' THEN 1 ELSE 0 END) attr2, COUNT ( 0 ) attr3, qct.income_batch_no FROM qc_check_task qct LEFT JOIN qc_check_task_defect td ON qct.record_id = td.belong_to LEFT JOIN qc_defect_type_class tc ON td.class_id = tc.id WHERE qct.del_flag = '0' - AND tc.class_name IS NOT NULL AND qct.order_type = 'bp' AND FORMAT ( qct.create_time, 'yyyy-MM' ) = #{yearMonth} From b2cdd35b8c8676f0a190e1d1e041f2986b3a0e7a Mon Sep 17 00:00:00 2001 From: FCD <2453864257@qq.com> Date: Fri, 23 Jan 2026 14:03:27 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E6=96=B0=E5=A2=9Elombok=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- op-modules/pom.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/op-modules/pom.xml b/op-modules/pom.xml index 185134ecf..5820aad11 100644 --- a/op-modules/pom.xml +++ b/op-modules/pom.xml @@ -28,6 +28,14 @@ op-modules pom + + + org.projectlombok + lombok + provided + + + op-modules业务模块 From 278319b6d2cb27ab0109916d673fb65785d4dbaf Mon Sep 17 00:00:00 2001 From: FCD <2453864257@qq.com> Date: Fri, 23 Jan 2026 14:11:19 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E6=96=B0=E5=A2=9E311=E8=BD=AC=E5=82=A8?= =?UTF-8?q?=E8=BF=87=E8=B4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/op/system/api/RemoteSapService.java | 11 +- .../api/factory/RemoteSapFallbackFactory.java | 10 + .../com/op/sap/controller/SapController.java | 9 + .../com/op/sap/service/SapWmsService.java | 2 + .../sap/service/impl/SapWmsServicelmpl.java | 40 +++ .../main/java/com/op/wms/WmsApplication.java | 2 + .../OdsProcureOutOrderController.java | 20 ++ .../WmsRawMaterialOutController.java | 58 +++++ .../com/op/wms/domain/OdsProcureOutOrder.java | 13 + .../query/BatchProductionMaterialQuery.java | 72 ++++++ .../com/op/wms/mapper/MesPrepareMapper.java | 22 ++ .../wms/mapper/OdsProcureOutOrderMapper.java | 8 +- .../wms/mapper/ProOrderWorkorderMapper.java | 3 +- .../service/IOdsProcureOutOrderService.java | 4 + .../service/IWmsRawMaterialOutService.java | 23 ++ .../impl/OdsProcureOutOrderServiceImpl.java | 95 +++++++ .../impl/WmsRawMaterialOutServiceImpl.java | 235 ++++++++++++++++++ .../resources/mapper/mes/MesPrepareMapper.xml | 18 ++ .../mapper/wms/OdsProcureOutOrderMapper.xml | 51 ++++ 19 files changed, 691 insertions(+), 5 deletions(-) create mode 100644 op-modules/op-wms/src/main/java/com/op/wms/controller/WmsRawMaterialOutController.java create mode 100644 op-modules/op-wms/src/main/java/com/op/wms/domain/query/BatchProductionMaterialQuery.java create mode 100644 op-modules/op-wms/src/main/java/com/op/wms/mapper/MesPrepareMapper.java create mode 100644 op-modules/op-wms/src/main/java/com/op/wms/service/IWmsRawMaterialOutService.java create mode 100644 op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsRawMaterialOutServiceImpl.java create mode 100644 op-modules/op-wms/src/main/resources/mapper/mes/MesPrepareMapper.xml diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java index e35333810..0a7eba004 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java @@ -20,7 +20,6 @@ import java.util.Map; * @author OP */ @FeignClient(contextId = "remoteSapService", value = ServiceNameConstants.SAP_SERVICE, fallbackFactory = RemoteSapFallbackFactory.class) - public interface RemoteSapService { @PostMapping("/sap/shopOrderSync") public R> shopOrderSync(@RequestBody SapShopOrderQuery sapProOrder); @@ -157,8 +156,14 @@ public interface RemoteSapService { public R handMadeInStorage(@RequestBody List list); @PostMapping("/sap/updateMaterialEntry") - R updateMaterialEntry(@RequestBody List list, @RequestParam("optionType") String optionType // 关键:指定value - ); + R updateMaterialEntry(@RequestBody List list, @RequestParam("optionType") String optionType); + + /** + * 311转储过账 + * **/ + @PostMapping("/sap/sapTransferPosting") + R sapTransferPosting(@RequestBody List> list); + } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java index 1def8ec25..8cdabb5bc 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java @@ -198,6 +198,16 @@ public class RemoteSapFallbackFactory implements FallbackFactory> list) { + return R.fail("311转储过账" + throwable.getMessage()); + } + }; } } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java b/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java index 14d3b6670..b547c0d5b 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java @@ -666,4 +666,13 @@ public class SapController extends BaseController { public R updateMaterialEntry(@RequestBody List list, @RequestParam("optionType") String optionType) { return sapWmsService.updateMaterialEntry(list, optionType); } + + /** + * 311转储过账 + * **/ + @PostMapping("/sapTransferPosting") + @Log(title = "311转储过账", businessType = BusinessType.SAP) + public R sapTransferPosting(@RequestBody List> list) { + return sapWmsService.sapTransferPosting(list); + } } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/SapWmsService.java b/op-modules/op-sap/src/main/java/com/op/sap/service/SapWmsService.java index 8afc9e00a..f34fa55ff 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/service/SapWmsService.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/SapWmsService.java @@ -20,4 +20,6 @@ public interface SapWmsService { R sapProductOutboundCostTW(List> mapList); R updateMaterialEntry(List list, String optionType) ; + + R sapTransferPosting(List> list); } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWmsServicelmpl.java b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWmsServicelmpl.java index a932ea1d8..d00826b50 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWmsServicelmpl.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWmsServicelmpl.java @@ -375,4 +375,44 @@ public class SapWmsServicelmpl implements SapWmsService { return R.fail(e.getMessage()); } } + + @Override + public R sapTransferPosting(List> list) { + try { + if (list == null || list.isEmpty()) { + return R.fail(); + } + + JCoRepository repository = dest.getRepository(); + JCoFunction func = repository.getFunction("ZMES_311_MB1B"); + if (func == null) { + return R.fail("ZMES_311_MB1B函数不存在"); + } + + JCoTable item = func.getTableParameterList().getTable("L_ITEM"); + log.info("311转储过账开始----------------------------------------"); + for (Map map : list) { + item.appendRow(); + item.setValue("PLANT", map.get("PLANT")); + item.setValue("LGORT", map.get("LGORT")); + item.setValue("MATNR", map.get("MATNR")); + item.setValue("QUANTITY", map.get("QUANTITY")); + item.setValue("MEINS", map.get("MEINS")); + item.setValue("MOVE_STLOC", map.get("MOVE_STLOC")); + } + func.execute(dest); + String msg = func.getExportParameterList().getString("L_MSG"); + String code = func.getExportParameterList().getString("RETCODE"); + String postCode = func.getExportParameterList().getString("MATERIALDOCUMENT"); + if (!("0").equals(code)) { + return R.fail(msg); + } else { + Map map = new HashMap<>(); + map.put("postCode", postCode); + return R.ok(map, msg); + } + }catch (Exception e){ + return R.fail(e.getMessage()); + } + } } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/WmsApplication.java b/op-modules/op-wms/src/main/java/com/op/wms/WmsApplication.java index ca1619428..a9d65e944 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/WmsApplication.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/WmsApplication.java @@ -5,6 +5,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import com.op.common.security.annotation.EnableCustomConfig; import com.op.common.security.annotation.EnableRyFeignClients; import com.op.common.swagger.annotation.EnableCustomSwagger2; +import org.springframework.cloud.openfeign.EnableFeignClients; /** * 系统模块 @@ -15,6 +16,7 @@ import com.op.common.swagger.annotation.EnableCustomSwagger2; @EnableCustomSwagger2 @EnableRyFeignClients @SpringBootApplication +@EnableFeignClients(basePackages = "com.op.system.api") public class WmsApplication { public static void main(String[] args) { SpringApplication.run(WmsApplication.class, args); diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProcureOutOrderController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProcureOutOrderController.java index 9fc2b8f53..986f14a21 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProcureOutOrderController.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProcureOutOrderController.java @@ -3,6 +3,7 @@ package com.op.wms.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; +import com.op.common.core.context.SecurityContextHolder; import com.op.common.core.utils.uuid.IdUtils; import com.op.wms.service.IOdsProcureOrderService; import org.springframework.beans.factory.annotation.Autowired; @@ -210,4 +211,23 @@ public class OdsProcureOutOrderController extends BaseController { odsProcureOrderService.batchSapTl(orderList); return success(); } + + /** + * 电脑端提交转储过账 + * **/ + @PostMapping("/submitTransferPosting") + @Log(title = "电脑端提交转储过账") + public AjaxResult submitTransferPosting(@RequestBody List orderList) { + return odsProcureOutOrderService.submitTransferPosting(orderList,SecurityContextHolder.getUserName()); + } + + /** + * 电脑端提交反冲过账 + * **/ + @PostMapping("/submitReversePosting") + @Log(title = "电脑端提交反冲过账") + public AjaxResult submitReversePosting(@RequestBody List orderList) { + odsProcureOutOrderService.submitReversePosting(orderList,SecurityContextHolder.getUserName()); + return success(); + } } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsRawMaterialOutController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsRawMaterialOutController.java new file mode 100644 index 000000000..89e7b380b --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsRawMaterialOutController.java @@ -0,0 +1,58 @@ +package com.op.wms.controller; + +import com.op.common.core.context.SecurityContextHolder; +import com.op.common.core.web.domain.AjaxResult; +import com.op.common.log.annotation.Log; +import com.op.wms.domain.OdsProcureOutOrder; +import com.op.wms.domain.query.BatchProductionMaterialQuery; +import com.op.wms.service.IWmsRawMaterialOutService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 手持机原料出库控制类 + * + * @author 019117 + * @date + */ +@RestController +@RequestMapping("/rawMaterialOut") +@RequiredArgsConstructor +public class WmsRawMaterialOutController { + + private final IWmsRawMaterialOutService wmsRawMaterialOutService; + + /** + * 获取转储物料 + * **/ + @GetMapping("/transferMaterialList") + public AjaxResult getTransferMaterialList(BatchProductionMaterialQuery query) { + List list = wmsRawMaterialOutService.getTransferMaterialList(query); + return AjaxResult.success(list); + } + + /** + * 提交转储数据 + * **/ + @PostMapping("/submitTransferList") + @Log(title = "手机端提交转储数据") + public AjaxResult submitTransferMaterialList(@RequestBody OdsProcureOutOrder params) { + return wmsRawMaterialOutService.submitTransferMaterialList(params); + } + + /** + * 提交反冲数据 + * **/ + @PostMapping("/submitReverseList") + @Log(title = "手机端提交反冲数据") + public AjaxResult submitReverseMaterialList(@RequestBody OdsProcureOutOrder params) { + return wmsRawMaterialOutService.submitReverseMaterialList(params); + } + + + + + +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProcureOutOrder.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProcureOutOrder.java index e95084351..f8c97dba8 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProcureOutOrder.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProcureOutOrder.java @@ -421,6 +421,11 @@ public class OdsProcureOutOrder extends BaseEntity { * **/ private String sort; + /** + * 是否过账(默认否) + * **/ + private String isPost = "0"; + public String getWhCode() { return whCode; } @@ -741,6 +746,14 @@ public class OdsProcureOutOrder extends BaseEntity { this.sort = sort; } + public String getIsPost() { + return isPost; + } + + public void setIsPost(String isPost) { + this.isPost = isPost; + } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/query/BatchProductionMaterialQuery.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/query/BatchProductionMaterialQuery.java new file mode 100644 index 000000000..27d5010dc --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/domain/query/BatchProductionMaterialQuery.java @@ -0,0 +1,72 @@ +package com.op.wms.domain.query; + +import lombok.Data; + +import java.util.List; + +/** + * 批量生产领料查询条件 + * + * @author 019117 + * @date + */ +@Data +public class BatchProductionMaterialQuery { + + /** + * 领料单 + * **/ + private String code; + + /** + * 领料类型 + * **/ + private String type; + + /** + * 工单号 + * **/ + private String workOrderCode; + + /** + * 工厂编码 + * **/ + private String factoryCode; + + /** + * 操作者 + * **/ + private String operator; + + /** + * 生产日期 + * **/ + private String productDate; + + /** + * 订单状态 + * **/ + private String orderStatus; + + /** + * 活动状态 + * **/ + private String active; + + /** + * 过账类型 + * **/ + private String userDefined3; + + /** + * 备用字段-存放物料订单号 + * **/ + private String userDefined6; + + /** + * 过账状态 + * **/ + private String userDefined10; + + +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/MesPrepareMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/MesPrepareMapper.java new file mode 100644 index 000000000..d4eed0adc --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/MesPrepareMapper.java @@ -0,0 +1,22 @@ +package com.op.wms.mapper; + +import com.op.wms.domain.query.BatchProductionMaterialQuery; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * remark + * + * @author 019117 + * @date + */ +@Mapper +public interface MesPrepareMapper { + + /** + * 获取备料单的生产工单号 + * **/ + List selectMesPrepareList(BatchProductionMaterialQuery query); + +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProcureOutOrderMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProcureOutOrderMapper.java index 404823bce..bc3ceaf93 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProcureOutOrderMapper.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProcureOutOrderMapper.java @@ -2,8 +2,9 @@ package com.op.wms.mapper; import java.util.List; -import com.op.system.api.domain.sap.SapMaterialPosting; import com.op.wms.domain.*; +import com.op.wms.domain.query.BatchProductionMaterialQuery; +import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; /** @@ -12,6 +13,7 @@ import org.apache.ibatis.annotations.Param; * @author Open Platform * @date 2023-07-06 */ +@Mapper public interface OdsProcureOutOrderMapper { /** * 查询包材出库单 @@ -188,4 +190,8 @@ public interface OdsProcureOutOrderMapper { List batchCheckDuplication(List list ); void batchInsertMaterialEntry(List list); + + List getBatchProductionMaterialList(BatchProductionMaterialQuery query); + + void batchUpdateWmsOdsProcureOutOrder(@Param("orderList") List orderList); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/ProOrderWorkorderMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/ProOrderWorkorderMapper.java index 191547d38..2cbb7ef3c 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/mapper/ProOrderWorkorderMapper.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/ProOrderWorkorderMapper.java @@ -3,7 +3,7 @@ package com.op.wms.mapper; import com.op.wms.domain.ProOrderWorkorder; import com.op.wms.domain.ProWetMaterialPlanDetail; - +import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -15,6 +15,7 @@ import java.util.List; * @date 2023-07-18 */ +@Mapper public interface ProOrderWorkorderMapper { List selectProOrderWorkorderList999(ProOrderWorkorder proOrderWorkorder); diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOutOrderService.java b/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOutOrderService.java index ef1f55568..7b1e6a55a 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOutOrderService.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOutOrderService.java @@ -2,6 +2,7 @@ package com.op.wms.service; import java.util.List; +import com.op.common.core.web.domain.AjaxResult; import com.op.wms.domain.OdsProcureOutOrder; /** @@ -90,4 +91,7 @@ public interface IOdsProcureOutOrderService { List selectOdsProcureOutOrderListZCTC(OdsProcureOutOrder odsProcureOutOrder); public int removeReturn(List iDs); + + AjaxResult submitTransferPosting(List list, String operator); + AjaxResult submitReversePosting( List list, String operator); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsRawMaterialOutService.java b/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsRawMaterialOutService.java new file mode 100644 index 000000000..82607b173 --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsRawMaterialOutService.java @@ -0,0 +1,23 @@ +package com.op.wms.service; + +import com.op.common.core.web.domain.AjaxResult; +import com.op.wms.domain.OdsProcureOutOrder; +import com.op.wms.domain.query.BatchProductionMaterialQuery; + +import java.util.List; + +/** + * remark + * + * @author 019117 + * @date + */ +public interface IWmsRawMaterialOutService { + + List getTransferMaterialList(BatchProductionMaterialQuery query); + + AjaxResult submitTransferMaterialList(OdsProcureOutOrder params); + + AjaxResult submitReverseMaterialList(OdsProcureOutOrder params); + +} diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOutOrderServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOutOrderServiceImpl.java index 15b9e6021..6d5bf4091 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOutOrderServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOutOrderServiceImpl.java @@ -8,6 +8,7 @@ import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.domain.R; import com.op.common.core.utils.uuid.IdUtils; +import com.op.common.core.web.domain.AjaxResult; import com.op.common.security.utils.SecurityUtils; import com.op.system.api.RemoteSapService; import com.op.system.api.domain.sap.SapBackflushMPQuery; @@ -633,4 +634,98 @@ public class OdsProcureOutOrderServiceImpl implements IOdsProcureOutOrderService } + + @Override + @DS("#header.poolName") + public AjaxResult submitTransferPosting(List orderList, String operator) { + List> list = new ArrayList<>(); + for(OdsProcureOutOrder order : orderList){ + Map map = new HashMap<>(); + map.put("PLANT", order.getSiteCode()); + map.put("LGORT", "0001"); + map.put("MATNR", order.getMaterialCode()); + map.put("QUANTITY", order.getOutNumber()); + map.put("MEINS", order.getUnit()); + map.put("MOVE_STLOC", "0087"); + list.add(map); + } + + //过账 + R result = remoteSapService.sapTransferPosting(list); + //过账后处理 + return postHandle(result,orderList,operator); + } + + @Override + @DS("#header.poolName") + public AjaxResult submitReversePosting(List orderList, String operator) { + List> list = new ArrayList<>(); + for(OdsProcureOutOrder order : orderList){ + Map map = new HashMap<>(); + map.put("PLANT", order.getSiteCode()); + map.put("LGORT", "0001"); + map.put("MATNR", order.getMaterialCode()); + map.put("QUANTITY", order.getOutNumber()); + map.put("MEINS", order.getUnit()); + map.put("MOVE_STLOC", "0013"); + list.add(map); + } + //过账 + R result = remoteSapService.sapTransferPosting(list); + //过账后处理 + return postHandle(result,orderList,operator); + } + + private AjaxResult postHandle( R result, List orderList, String operator){ + String msg = result.getMsg(); + if (result.getCode() == 200) { + //过账成功 + Map map = (Map) result.getData(); + String postCode = (String) map.get("postCode"); + updateOdsProcureOutOrderAndRawMissionOut(orderList, msg, postCode, operator, "2"); + odsProcureOutOrderMapper.batchUpdateWmsOdsProcureOutOrder(orderList); + return AjaxResult.success(msg); + } else { + //过账失败 + updateOdsProcureOutOrderAndRawMissionOut(orderList, msg, "", operator, "3"); + odsProcureOutOrderMapper.batchUpdateWmsOdsProcureOutOrder(orderList); + return AjaxResult.error(msg); + } + + } + + //更新出库单及出库明细 + private void updateOdsProcureOutOrderAndRawMissionOut(List orderList,String msg, String postCode, String operator, String postingStatus) { + //遍历列表 + for (OdsProcureOutOrder order : orderList) { + //更新更新出库数量以及出库状态 + order.setOrderStatus("3"); + order.setUserDefined9(postCode); + order.setUserDefined10(postingStatus); + order.setUserDefined11(msg); + order.setLastUpdateBy(operator); + order.setLastUpdateDate(new Date()); + //新增出库明细 + if ("2".equals(postingStatus)){ + OdsProcureOutOrder missionOut = new OdsProcureOutOrder(); + + missionOut.setID(IdUtils.fastSimpleUUID()); + missionOut.setProduceCode(order.getProduceCode()); + missionOut.setMaterialCode(order.getMaterialCode()); + missionOut.setMaterialDesc(order.getMaterialDesc()); + missionOut.setUnit(order.getUnit()); + missionOut.setPlanNumber(order.getOutNumber()); + missionOut.setActive("1"); + missionOut.setUserDefined3(order.getUserDefined3()); + missionOut.setUserDefined4(order.getUserDefined4()); + missionOut.setUserDefined5(postingStatus); + missionOut.setFactoryCode(order.getSiteCode()); + missionOut.setCreateBy(operator); + missionOut.setCreateDate(new Date()); + //出库记录 + odsProcureOutOrderMapper.insertWmsRawMissionOut(missionOut); + } + + } + } } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsRawMaterialOutServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsRawMaterialOutServiceImpl.java new file mode 100644 index 000000000..1756c870a --- /dev/null +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsRawMaterialOutServiceImpl.java @@ -0,0 +1,235 @@ +package com.op.wms.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.op.common.core.domain.R; +import com.op.common.core.utils.uuid.IdUtils; +import com.op.common.core.web.domain.AjaxResult; +import com.op.system.api.RemoteSapService; +import com.op.system.api.domain.sap.SapBackflushMPQuery; +import com.op.wms.domain.OdsProcureOutOrder; +import com.op.wms.domain.query.BatchProductionMaterialQuery; +import com.op.wms.mapper.MesPrepareMapper; +import com.op.wms.mapper.OdsProcureOutOrderMapper; +import com.op.wms.service.IWmsRawMaterialOutService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.*; + +/** + * remark + * + * @author 019117 + * @date + */ +@Service +@RequiredArgsConstructor +public class WmsRawMaterialOutServiceImpl implements IWmsRawMaterialOutService { + + private final OdsProcureOutOrderMapper odsProcureOutOrderMapper; + + private final MesPrepareMapper mesPrepareMapper; + + private final RemoteSapService remoteSapService; + + + @Override + @DS("#header.poolName") + public List getTransferMaterialList(BatchProductionMaterialQuery query) { + + //获取当前生产工单号 + List workOrderCodeList = mesPrepareMapper.selectMesPrepareList(query); + + //查询包材出库单是否有数据(查询每张订单是否都有物料) + for (String code : workOrderCodeList) { + query.setUserDefined6(code); + List list = odsProcureOutOrderMapper.getBatchProductionMaterialList(query); + if (list.isEmpty()){ + //如果没有数据则从生产工单获取到生产物料 + OdsProcureOutOrder order = new OdsProcureOutOrder(); + order.setWorkorderCode(code); + List orderList= odsProcureOutOrderMapper.selectMesPrepareDetailBC(order); + Integer orderItem = 0; + for (OdsProcureOutOrder order1: orderList) { + orderItem++; + OdsProcureOutOrder odsProcureOutOrder1 = new OdsProcureOutOrder(); + odsProcureOutOrder1.setID(IdUtils.fastSimpleUUID()); + odsProcureOutOrder1.setSiteCode(query.getFactoryCode()); + odsProcureOutOrder1.setProduceCode(query.getCode()); + odsProcureOutOrder1.setOutNumber(new BigDecimal("0")); + odsProcureOutOrder1.setMaterialCode(order1.getMaterialCode()); + odsProcureOutOrder1.setMaterialDesc(order1.getMaterialDesc()); + odsProcureOutOrder1.setPlanDate(new Date()); + odsProcureOutOrder1.setUnit(order1.getUnit()); + odsProcureOutOrder1.setActive("1"); + odsProcureOutOrder1.setOrderStatus("1"); + odsProcureOutOrder1.setPlanNumber(order1.getPlanNumber()); + odsProcureOutOrder1.setUserDefined2(String.format("%05d", orderItem)); + odsProcureOutOrder1.setUserDefined3("ZC"); + odsProcureOutOrder1.setUserDefined4(query.getCode()); + odsProcureOutOrder1.setUserDefined10("1"); + odsProcureOutOrder1.setUserDefined5(order1.getNeedDate()); + odsProcureOutOrder1.setUserDefined6(code); + odsProcureOutOrder1.setCreateBy(query.getOperator()); + odsProcureOutOrder1.setCreateDate(new Date()); + //写入包材出库单 + odsProcureOutOrderMapper.insertWmsOdsProcureOutOrder(odsProcureOutOrder1); + } + } + } + + //重新查询(相同物料需要合并计算) + query.setUserDefined6(null); + return odsProcureOutOrderMapper.getBatchProductionMaterialList(query); + + } + + @Override + @DS("#header.poolName") + public AjaxResult submitTransferMaterialList(OdsProcureOutOrder params) { + + //更新出库单及新增出库明细 + updateOdsProcureOutOrder(params); + + //获取已完成,但没有过账的转储物料 + BatchProductionMaterialQuery query = new BatchProductionMaterialQuery(); + query.setUserDefined3("ZC"); + query.setOrderStatus("3"); + query.setActive("1"); + query.setUserDefined10("1"); + List orderList = odsProcureOutOrderMapper.getBatchProductionMaterialList(query); + + if (orderList.isEmpty()){ + return AjaxResult.success(); + } + + List> list = new ArrayList<>(); + for(OdsProcureOutOrder order : orderList){ + Map map = new HashMap<>(); + map.put("PLANT", params.getFactoryCode()); + map.put("LGORT", "0001"); + map.put("MATNR", order.getMaterialCode()); + map.put("QUANTITY", order.getOutNumber()); + map.put("MEINS", order.getUnit()); + map.put("MOVE_STLOC", "0087"); + list.add(map); + } + + //过账 + R result = remoteSapService.sapTransferPosting(list); + return postHandle(result,orderList); + + } + + @Override + @DS("#header.poolName") + public AjaxResult submitReverseMaterialList(OdsProcureOutOrder params) { + //更新出库单及新增出库明细 + updateOdsProcureOutOrder(params); + + //获取已完成,但没有过账的反冲物料 + BatchProductionMaterialQuery query = new BatchProductionMaterialQuery(); + query.setUserDefined3("X"); + query.setOrderStatus("3"); + query.setActive("1"); + query.setUserDefined10("1"); + List orderList = odsProcureOutOrderMapper.getBatchProductionMaterialList(query); + if (orderList.isEmpty()){ + return AjaxResult.success(); + } + + List> list = new ArrayList<>(); + for(OdsProcureOutOrder order : orderList){ + Map map = new HashMap<>(); + map.put("PLANT", params.getFactoryCode()); + map.put("LGORT", "0001"); + map.put("MATNR", order.getMaterialCode()); + map.put("QUANTITY", order.getOutNumber()); + map.put("MEINS", order.getUnit()); + map.put("MOVE_STLOC", "0013"); + list.add(map); + } + + R result = remoteSapService.sapTransferPosting(list); + return postHandle(result,orderList); + } + + //更新出库单及出库明细 + private void updateOdsProcureOutOrder(OdsProcureOutOrder params) { + List orderList = params.getOrderList(); + + //遍历列表 + for (OdsProcureOutOrder order : orderList) { + //计划数量 + BigDecimal planQty = order.getPlanNumber(); + //已出数量 + BigDecimal outQty = order.getOutNumber(); + //当前需出库数量 + BigDecimal currentQty = order.getQty(); + //应出数量 = 已出+需出 + BigDecimal totalQty = BigDecimal.ZERO; + if (currentQty == null) { + totalQty = outQty; + }else { + totalQty = outQty.add(currentQty); + } + + //已出+需出=计划数量,则满足出库状态 + if (totalQty.compareTo(planQty) >= 0) { + order.setOrderStatus("3"); + }else { + order.setOrderStatus("2"); + } + if ("1".equals(order.getIsPost())){ + order.setOrderStatus("3"); + } + + if ("3".equals(order.getOrderStatus())) { + //应出数量为0,返回错误 + if (totalQty.compareTo(BigDecimal.ZERO) == 0) { + throw new RuntimeException("物料编码:"+ order.getMaterialCode() + ",出库数量为0,无法过账"); + } + } + + //更新已出数量 + order.setOutNumber(totalQty); + order.setLastUpdateBy(params.getCreateBy()); + order.setLastUpdateDate(new Date()); + //更新出库单 + odsProcureOutOrderMapper.updateWmsOdsProcureOutOrder(order); + //新增出库明细 + order.setID(IdUtils.fastSimpleUUID()); + order.setActive("1"); + order.setCreateBy(params.getCreateBy()); + order.setCreateDate(new Date()); + order.setUserDefined1(null); + order.setUserDefined2(null); + odsProcureOutOrderMapper.insertWmsRawMissionOut(order); + } + } + + //过账信息处理 + private AjaxResult postHandle(R result, List list) { + int code = result.getCode(); + OdsProcureOutOrder order = new OdsProcureOutOrder(); + String msg = result.getMsg(); + order.setUserDefined11(msg); + if (code == 200) { + //过账成功 + Map map = (Map) result.getData(); + String userDefined9 = (String) map.get("postCode"); + order.setUserDefined9(userDefined9); + //成功 + order.setUserDefined10("2"); + odsProcureOutOrderMapper.updateWMSOdsProcureOutOrderByids(order, list); + return AjaxResult.success(msg); + } else { + order.setUserDefined9(""); + //失败 + order.setUserDefined10("3"); + odsProcureOutOrderMapper.updateWMSOdsProcureOutOrderByids(order, list); + return AjaxResult.error(msg); + } + } + +} diff --git a/op-modules/op-wms/src/main/resources/mapper/mes/MesPrepareMapper.xml b/op-modules/op-wms/src/main/resources/mapper/mes/MesPrepareMapper.xml new file mode 100644 index 000000000..ba029f389 --- /dev/null +++ b/op-modules/op-wms/src/main/resources/mapper/mes/MesPrepareMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + \ No newline at end of file diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml index 134972833..8a6849afa 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml @@ -2203,4 +2203,55 @@ ) + + + + + + UPDATE wms_ods_procure_out_order + SET + order_status = #{item.orderStatus}, + Out_Number = #{item.outNumber}, + user_defined9 = #{item.userDefined9}, + user_defined10 = #{item.userDefined10}, + user_defined11 = #{item.userDefined11}, + last_update_by = #{item.lastUpdateBy}, + last_update_date = #{item.lastUpdateDate} + WHERE + id = #{item.ID} + + + + From 39c51fde4d14bfb39462796145e7b37747c7fc6f Mon Sep 17 00:00:00 2001 From: FCD <2453864257@qq.com> Date: Mon, 26 Jan 2026 15:37:11 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E6=81=A2=E5=A4=8D=E8=A2=AB=E8=A6=86?= =?UTF-8?q?=E7=9B=96=E7=9A=84=E5=BA=93=E5=AD=98=E5=A1=AB=E6=8A=A5=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WmsToWCSmissionController.java | 18 ++++++ .../wms/service/IOdsProcureOrderService.java | 4 ++ .../impl/OdsProcureOrderServiceImpl.java | 43 +++++++++++++ .../mapper/wms/OdsProcureOutOrderMapper.xml | 63 +++++++++++++++++++ 4 files changed, 128 insertions(+) diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java index 05359e21d..837d53cd7 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java @@ -1022,4 +1022,22 @@ public class WmsToWCSmissionController { return odsProcureOrderService.packingMaterialsInboundCompletedNew(wcsRequestParams); } + /** + * 查询需要填写的成品 + * **/ + @GetMapping("/wmsStockAreaEntryList") + public AjaxResult getStockAreaEntryList(WmsStockAreaEntry params) { + List list = odsProcureOrderService.getStockAreaEntryList(params); + return AjaxResult.success(list); + } + + /** + * 提交成品入库 + * **/ + @PostMapping("/submitMaterialEntry") + public AjaxResult submitMaterialEntry(@RequestBody List list) { + odsProcureOrderService.submitMaterialEntry(list); + return AjaxResult.success(); + } + } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOrderService.java b/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOrderService.java index a7e43480e..c923aa217 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOrderService.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOrderService.java @@ -172,4 +172,8 @@ public interface IOdsProcureOrderService { AjaxResult packingMaterialsInboundCompletedNew(WcsRequestParams wcsRequestParams); AjaxResult packingMaterialsRequestOutboundNew(WcsOutBoundRequestParams wcsOutBoundRequestParams) throws Exception; + + List getStockAreaEntryList(WmsStockAreaEntry params); + + void submitMaterialEntry(List list); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java index fd31bca92..5195c87f6 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java @@ -29,6 +29,7 @@ import com.op.system.api.RemoteQualityService; import com.op.system.api.RemoteSapService; import com.op.system.api.domain.quality.QcCheckTaskIncomeDTO; import com.op.system.api.domain.sap.SapBackflushMPQuery; +import com.op.system.api.domain.sap.SapMaterialEntry; import com.op.system.api.domain.sap.SapMaterialPosting; import com.op.system.api.domain.sap.SapPurchaseOrderQuery; import com.op.wms.domain.wcs.WcsOutBoundRequestParams; @@ -41,6 +42,7 @@ import okhttp3.Response; import java.io.IOException; +import java.util.stream.Collectors; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; @@ -4145,4 +4147,45 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService { String result = HttpUtils.sendPostWechart(OutboundUrl,requestParam); return AjaxResult.success(result); } + + + @Override + @DS("#header.poolName") + public List getStockAreaEntryList(WmsStockAreaEntry params) { + return odsProcureOutOrderMapper.getStockAreaEntryList(params); + } + + @Override + @DS("#header.poolName") + public void submitMaterialEntry(List list) { + + List sapList = new ArrayList<>(); + + List duplicationList = odsProcureOutOrderMapper.batchCheckDuplication(list); + + if (!duplicationList.isEmpty()){ + List materialCodeList = duplicationList.stream().map(WmsStockAreaEntry::getMaterialCode).collect(Collectors.toList()); + throw new RuntimeException("物料:"+materialCodeList+"存在重复数据"); + } + + for (WmsStockAreaEntry item : list){ + SapMaterialEntry entry = new SapMaterialEntry(); + + entry.setMaterialCode(item.getMaterialCode()); + entry.setBatchCode(item.getBatchCode()); + entry.setFactoryCode(item.getFactoryCode()); + entry.setAreaCode(item.getAreaCode()); + entry.setStatus(item.getStatus()); + entry.setUserCode(item.getCreateBy()); + + sapList.add(entry); + } + + //提交记录 + odsProcureOutOrderMapper.batchInsertMaterialEntry(list); + + + //提交到sap + remoteSapService.updateMaterialEntry(sapList,"1"); + } } diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml index 8a6849afa..082841756 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml @@ -2254,4 +2254,67 @@ + + + + + + + + INSERT INTO wms_material_entry ( + work_order_code, + material_code, + batch_code, + factory_code, + location, + area_code, + status, + create_time, + create_by + ) + VALUES + + ( + #{item.workOrderCode}, + #{item.materialCode}, + #{item.batchCode}, + #{item.factoryCode}, + #{item.location}, + #{item.areaCode}, + #{item.status}, + GETDATE(), + #{item.createBy} + ) + + + +