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()} + +