From fe7316047941313c8dedae92c611e0378018f360 Mon Sep 17 00:00:00 2001 From: king Date: Mon, 13 Apr 2026 17:22:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1,=20=E7=BB=BC=E5=90=88=E9=94=80=E5=94=AE=E8=B7=A8?= =?UTF-8?q?=E5=BA=A6=E6=9F=A5=E8=AF=A2,?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../job/OracleProcedureUpdateErpDataJob.java | 84 +++++++ .../NewGrBiSaAggMonthCountController.java | 6 +- .../example/report/xtsy/zhxsqkPlugin.java | 16 +- .../core/framework/entity/GrBiSaSetdtl.java | 4 + .../framework/mapper/GrBiSaSetdtlMapper.java | 16 +- .../mapper/NewGrBiSaAggMonthCountMapper.java | 10 + .../mapper/OracleProcedureMapper.java | 10 + .../INewGrBiSaAggMonthCountService.java | 2 + .../service/impl/GrBiSaSetdtlServiceImpl.java | 2 +- .../NewGrBiSaAggMonthCountServiceImpl.java | 5 + .../NewGrBiSaAggMonthCountMapper.xml | 223 ++++++++++++++++-- .../framework/NewGrBiSaAggYearCountMapper.xml | 20 +- .../framework/OracleProcedureMapper.xml | 4 + 13 files changed, 366 insertions(+), 36 deletions(-) create mode 100644 lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/OracleProcedureUpdateErpDataJob.java diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/OracleProcedureUpdateErpDataJob.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/OracleProcedureUpdateErpDataJob.java new file mode 100644 index 0000000..28ef454 --- /dev/null +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/OracleProcedureUpdateErpDataJob.java @@ -0,0 +1,84 @@ +package com.lideeyunji.core.framework.config.job; + +import com.lideeyunji.core.framework.entity.GrBiSaSetdtl; +import com.lideeyunji.core.framework.mapper.GrBiSaSetdtlMapper; +import com.lideeyunji.core.framework.mapper.OracleProcedureMapper; +import com.lideeyunji.tool.framework.common.constant.lideeYunJiBaseConstant; +import com.lideeyunji.tool.framework.quartz.core.handler.JobHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +/** + * Oracle 存储过程调用定时任务 ,RP中间库 + * 用于定时调用 Oracle 存储过程进行数据处理 + */ +@Slf4j +@Component("oracleProcedureUpdateErpDataJob") +public class OracleProcedureUpdateErpDataJob implements JobHandler { + + @Resource + private OracleProcedureMapper oracleProcedureMapper; + @Resource + private GrBiSaSetdtlMapper grBiSaSetdtlMapper; + + @Override + public String execute(String param) throws Exception { + log.info("========== 开始执行 Oracle 存储过程定时任务 ,ERP中间库,参数:{} ==========", param); + + try { + callErpDataCore(); + log.info("========== Oracle 存储过程定时任务,ERP中间库 执行成功 =========="); + return "Oracle 存储过程定时任务,ERP中间库 执行成功"; + } catch (Exception e) { + log.error("========== Oracle E存储过程定时任务,ERP中间库 执行失败 ==========", e); + throw new RuntimeException("Oracle 存储过程,ERP中间库 调用失败:" + e.getMessage(), e); + } + } + + /** + * 调用简单存储过程 + */ + private void callErpDataCore() { + log.info("开始调用存储过程..."); + //获取本地mysql数据库中表中UPDATE_TIME最新的数据 + GrBiSaSetdtl grBiSaAgg = grBiSaSetdtlMapper.selectLastOne(lideeYunJiBaseConstant.DS_ERP_BI_DATA); + int lastUserYear = 2022; + int lastUserMonth = 1; + if(grBiSaAgg != null){ + lastUserYear = grBiSaAgg.getUSEYEAR(); + lastUserMonth = grBiSaAgg.getUSEMONTH(); + } + // 获取当前时间的年和月 + LocalDateTime now = LocalDateTime.now(); + int currentYear = now.getYear(); + int currentMonth = now.getMonthValue(); + + // 获取上个月前的时间和年月 + LocalDateTime threeMonthsAgo = now.minusMonths(1); + int pastYear = threeMonthsAgo.getYear(); + int pastMonth = threeMonthsAgo.getMonthValue(); + + log.info("最后更新的年月:{}年{}月", lastUserYear, lastUserMonth); + log.info("当前:{}年{}月", currentYear, currentMonth); + log.info("上个月前:{}年{}月", pastYear, pastMonth); + if (lastUserYear < pastYear || (lastUserYear == pastYear && lastUserMonth < pastMonth)) { + pastYear = lastUserYear; + pastMonth = lastUserMonth; + + } + log.info("开始时间:{}年{}月, 结束时间:{}年{}月", pastYear, pastMonth, currentYear, currentMonth); + Map params = new HashMap<>(); + params.put("result", new Object()); // 用于接收输出参数 + + oracleProcedureMapper.callErpDataCore(lideeYunJiBaseConstant.DS_ORACLE_GRYYBI, pastYear, pastMonth, currentYear, currentMonth); + + // 获取输出参数值 + Object result = params.get("result"); + log.info("存储过程执行结果:{}", result); + } +} diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/NewGrBiSaAggMonthCountController.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/NewGrBiSaAggMonthCountController.java index 8ddd3f1..27a089d 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/NewGrBiSaAggMonthCountController.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/controller/NewGrBiSaAggMonthCountController.java @@ -100,11 +100,11 @@ public class NewGrBiSaAggMonthCountController extends BaseController if (params.containsKey("provinceName")){ saAggParam.setProvinceName(Arrays.asList(params.get("provinceName").toString().split( ","))); } - if (groupField.contains("useMonth")){ - List list = newGrBiSaAggMonthCountService.getTotalDetail(saAggParam); + if (groupField.contains("useYear") && !groupField.contains("useMonth")){ + List list = newGrBiSaAggYearCountService.getTotalDetail(saAggParam); return BaseWebResult.success(list); }else{ - List list = newGrBiSaAggYearCountService.getTotalDetail(saAggParam); + List list = newGrBiSaAggMonthCountService.getTotalDetail(saAggParam); return BaseWebResult.success(list); } diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/zhxsqkPlugin.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/zhxsqkPlugin.java index 2576635..bc5d9cd 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/zhxsqkPlugin.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/enhance/example/report/xtsy/zhxsqkPlugin.java @@ -44,16 +44,22 @@ public class zhxsqkPlugin implements ReportAroundAdvicePlugin { public ResultDataModel executeAround(EnhanceReportContext enhanceContext) { log.info("进入=======>zhxsqkPlugin=======>execute"); Map params = enhanceContext.getParam().getParams(); - if (params.containsKey("Group by")) { + List groupFieldList = Arrays.asList(params.get("Group by").toString().split(",")); + if(!groupFieldList.contains("useYearMonthStart") && !params.containsKey("useYearMonthEnd")){ + throw new lideeYunJiException("年月范围 不能为空!"); + } if (params.containsKey("goodsName")) { throw new lideeYunJiException("在选择维度时,“货品名称”不能有值!"); } - List groupFieldList = Arrays.asList(params.get("Group by").toString().split(",")); - if(!groupFieldList.contains("useYear") && !params.containsKey("useYear")){ - throw new lideeYunJiException("维度选中时,“年”维度不能为空!"); - } Page page = PageHelper.startPage(Integer.parseInt(params.get("pageNo").toString()), Integer.parseInt(params.get("pageSize").toString())); + if(!groupFieldList.contains("useMonth") && !groupFieldList.contains("useYear")){ + setMonthOrderBy(params, page); + List newGrBiSaAggList = newGrBiSaAggMonthCountService.selectNewGrBiSaAggGroupNoMonthNoYearList(params, groupFieldList); + PageInfo pageInfo = new PageInfo<>(newGrBiSaAggList); + List> list = newGrBiSaAggList.stream().map(BeanUtil::beanToMap).collect(Collectors.toList()); + return ResultDataModel.fomat(pageInfo.getTotal(),list); + } if(groupFieldList.contains("useMonth") || params.containsKey("useMonth")){ setMonthOrderBy(params, page); List newGrBiSaAggList = newGrBiSaAggMonthCountService.selectNewGrBiSaAggGroupMonthList(params, groupFieldList); diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/GrBiSaSetdtl.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/GrBiSaSetdtl.java index 8f9fc01..19b83a5 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/GrBiSaSetdtl.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/GrBiSaSetdtl.java @@ -53,6 +53,10 @@ public class GrBiSaSetdtl implements Serializable { private Integer DOSAGEID; @TableField(value = "DOSAGENAME") private String DOSAGENAME; + @TableField(value = "EFFECTID") + private Integer EFFECTID; + @TableField(value = "EFFECTNAME") + private String EFFECTNAME; @TableField(value = "STDGOODSNAME") private String STDGOODSNAME; @TableField(value = "GOODSID") diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/GrBiSaSetdtlMapper.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/GrBiSaSetdtlMapper.java index fd5bcd8..0b869de 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/GrBiSaSetdtlMapper.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/GrBiSaSetdtlMapper.java @@ -1,6 +1,7 @@ package com.lideeyunji.core.framework.mapper; import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.lideeyunji.core.framework.entity.GrBiSaSetdtl; @@ -26,10 +27,12 @@ public interface GrBiSaSetdtlMapper extends BaseMapper { default List getByUpdateTime(@Param("dataSourceType") String dataSourceType, String updateTime) { try { // 假设 updateTime 格式为 "yyyy-MM-dd HH:mm:ss" - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - Date startTime = sdf.parse(updateTime); QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.gt("UPDATE_TIME", startTime); + if(updateTime != null){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date startTime = sdf.parse(updateTime); + queryWrapper.gt("UPDATE_TIME", startTime); + } return this.selectList(queryWrapper); } catch (Exception e) { // 处理异常 @@ -52,4 +55,11 @@ public interface GrBiSaSetdtlMapper extends BaseMapper { return this.updateById(grBiSaSetdtl); } + @DS(value = "#dataSourceType") + default GrBiSaSetdtl selectLastOne(@Param("dataSourceType") String dataSourceType) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper().orderByDesc(GrBiSaSetdtl::getUSEYEAR, GrBiSaSetdtl::getUSEMONTH).last("LIMIT 1"); + return this.selectOne(queryWrapper); + } + + } diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggMonthCountMapper.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggMonthCountMapper.java index c91ad35..9324bee 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggMonthCountMapper.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/NewGrBiSaAggMonthCountMapper.java @@ -80,4 +80,14 @@ public interface NewGrBiSaAggMonthCountMapper extends BaseMapper selectNewGrBiSaAggGroupMonthList(@Param("dataSourceType") String dataSourceType, @Param("saAggParam") SaAggParam saAggParam, @Param("params") Map params, @Param("groupFieldList")List groupFieldList); + /** + * 批量查询综合销售情况明细列表 -月度 + * + * @param saAggParam 综合销售情况明细参数 + * @return 综合销售情况明细集合 + */ + @DataPermission(enable = false) + @DS(value = "#dataSourceType") + public List selectNewGrBiSaAggGroupNoMonthNoYearList(@Param("dataSourceType") String dataSourceType, @Param("saAggParam") SaAggParam saAggParam, @Param("params") Map params, @Param("groupFieldList")List groupFieldList); + } diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/OracleProcedureMapper.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/OracleProcedureMapper.java index 159e97b..90c9ec6 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/OracleProcedureMapper.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/OracleProcedureMapper.java @@ -34,4 +34,14 @@ public interface OracleProcedureMapper { @DataPermission(enable = false) void callUpdateCore(@Param("dataSourceType") String dataSourceType); + /** + * 调用 Oracle 存储过程 - 示例 + * + * @param dataSourceType 存储过程参数 + * @return 执行结果 + */ + @DS(value = "#dataSourceType") + @DataPermission(enable = false) + void callErpDataCore(@Param("dataSourceType") String dataSourceType, @Param("pastYear") Integer pastYear, @Param("pastMonth") Integer pastMonth,@Param("currentYear") Integer currentYear, @Param("currentMonth") Integer currentMonth); + } diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/INewGrBiSaAggMonthCountService.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/INewGrBiSaAggMonthCountService.java index 8184d32..dd88039 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/INewGrBiSaAggMonthCountService.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/INewGrBiSaAggMonthCountService.java @@ -68,4 +68,6 @@ public interface INewGrBiSaAggMonthCountService public List selectNewGrBiSaAggGroupMonthList(Map params, List groupFieldList); + public List selectNewGrBiSaAggGroupNoMonthNoYearList(Map params, List groupFieldList); + } diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/GrBiSaSetdtlServiceImpl.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/GrBiSaSetdtlServiceImpl.java index ea380de..7cfe7e4 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/GrBiSaSetdtlServiceImpl.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/GrBiSaSetdtlServiceImpl.java @@ -30,7 +30,7 @@ public class GrBiSaSetdtlServiceImpl extends ServiceImpl grBiSaSetdtlList = this.baseMapper.getByUpdateTime(lideeYunJiBaseConstant.DS_ORACLE_GRYYBI, grBiSaSetdtl.getUPDATETIME()); + List grBiSaSetdtlList = this.baseMapper.getByUpdateTime(lideeYunJiBaseConstant.DS_ORACLE_GRYYBI, grBiSaSetdtl== null ? null : grBiSaSetdtl.getUPDATETIME()); if (CollUtil.isEmpty(grBiSaSetdtlList)) { return 0; diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggMonthCountServiceImpl.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggMonthCountServiceImpl.java index 799a353..c74e2e2 100644 --- a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggMonthCountServiceImpl.java +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/impl/NewGrBiSaAggMonthCountServiceImpl.java @@ -104,4 +104,9 @@ public class NewGrBiSaAggMonthCountServiceImpl extends ServiceImpl selectNewGrBiSaAggGroupNoMonthNoYearList(Map params, List groupFieldList){ + SaAggParam saAggParam = NewGrBiSaAggServiceImpl.createParam(params); + return this.baseMapper.selectNewGrBiSaAggGroupNoMonthNoYearList(lideeYunJiBaseConstant.DS_ERP_BI_DATA, saAggParam,params, groupFieldList); + } } diff --git a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml index 7824063..429f196 100644 --- a/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml +++ b/lidee-core/src/main/resources/mapper/framework/NewGrBiSaAggMonthCountMapper.xml @@ -257,6 +257,201 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + {call P_ERP_DATA_FAST()} + +