1.添加物资出入库汇总数据生成代码

master
x_z 2 years ago
parent 3dd30519db
commit 340073ea81

@ -0,0 +1,7 @@
package com.glxp.api.dao.inout;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.inout.IoStatDayEntity;
public interface IoStatDayDao extends BaseMapper<IoStatDayEntity> {
}

@ -0,0 +1,7 @@
package com.glxp.api.dao.inout;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.inout.IoStatMonthEntity;
public interface IoStatMonthDao extends BaseMapper<IoStatMonthEntity> {
}

@ -0,0 +1,7 @@
package com.glxp.api.dao.inout;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.inout.IoStatOrderEntity;
public interface IoStatOrderDao extends BaseMapper<IoStatOrderEntity> {
}

@ -0,0 +1,7 @@
package com.glxp.api.dao.inout;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.inout.IoStatQuarterEntity;
public interface IoStatQuarterDao extends BaseMapper<IoStatQuarterEntity> {
}

@ -0,0 +1,7 @@
package com.glxp.api.dao.inout;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.inout.IoStatYearEntity;
public interface IoStatYearDao extends BaseMapper<IoStatYearEntity> {
}

@ -0,0 +1,160 @@
package com.glxp.api.entity.inout;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* -
*/
@Data
@TableName(value = "io_stat_day")
public class IoStatDayEntity {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
*
*/
@TableField(value = "`year`")
private Integer year;
/**
*
*/
@TableField(value = "quarter")
private Integer quarter;
/**
*
*/
@TableField(value = "`month`")
private Integer month;
/**
*
*/
@TableField(value = "`day`")
private Integer day;
/**
*
*/
@TableField(value = "relIdFk")
private String relIdFk;
/**
* DI
*/
@TableField(value = "nameCode")
private String nameCode;
/**
*
*/
@TableField(value = "productName")
private String productName;
/**
*
*/
@TableField(value = "ggxh")
private String ggxh;
/**
*
*/
@TableField(value = "batchNo")
private String batchNo;
/**
*
*/
@TableField(value = "beginCount")
private Integer beginCount;
/**
*
*/
@TableField(value = "beginPrice")
private BigDecimal beginPrice;
/**
*
*/
@TableField(value = "beginAmount")
private BigDecimal beginAmount;
/**
*
*/
@TableField(value = "inCount")
private String inCount;
/**
*
*/
@TableField(value = "inPrice")
private BigDecimal inPrice;
/**
*
*/
@TableField(value = "inAmount")
private String inAmount;
/**
*
*/
@TableField(value = "outCount")
private String outCount;
/**
*
*/
@TableField(value = "outPrice")
private BigDecimal outPrice;
/**
*
*/
@TableField(value = "outAmount")
private String outAmount;
/**
*
*/
@TableField(value = "balanceCount")
private String balanceCount;
/**
*
*/
@TableField(value = "balancePrice")
private BigDecimal balancePrice;
/**
*
*/
@TableField(value = "balanceAmount")
private String balanceAmount;
/**
*
*/
@TableField(value = "remark")
private String remark;
/**
*
*/
@TableField(value = "updateTime")
private Date updateTime;
}

@ -0,0 +1,154 @@
package com.glxp.api.entity.inout;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* -
*/
@Data
@TableName(value = "io_stat_month")
public class IoStatMonthEntity {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
*
*/
@TableField(value = "`year`")
private Integer year;
/**
*
*/
@TableField(value = "quarter")
private Integer quarter;
/**
*
*/
@TableField(value = "`month`")
private Integer month;
/**
*
*/
@TableField(value = "relIdFk")
private String relIdFk;
/**
* DI
*/
@TableField(value = "nameCode")
private String nameCode;
/**
*
*/
@TableField(value = "productName")
private String productName;
/**
*
*/
@TableField(value = "ggxh")
private String ggxh;
/**
*
*/
@TableField(value = "batchNo")
private String batchNo;
/**
*
*/
@TableField(value = "beginCount")
private Integer beginCount;
/**
*
*/
@TableField(value = "beginPrice")
private BigDecimal beginPrice;
/**
*
*/
@TableField(value = "beginAmount")
private BigDecimal beginAmount;
/**
*
*/
@TableField(value = "inCount")
private String inCount;
/**
*
*/
@TableField(value = "inPrice")
private BigDecimal inPrice;
/**
*
*/
@TableField(value = "inAmount")
private String inAmount;
/**
*
*/
@TableField(value = "outCount")
private String outCount;
/**
*
*/
@TableField(value = "outPrice")
private BigDecimal outPrice;
/**
*
*/
@TableField(value = "outAmount")
private String outAmount;
/**
*
*/
@TableField(value = "balanceCount")
private String balanceCount;
/**
*
*/
@TableField(value = "balancePrice")
private BigDecimal balancePrice;
/**
*
*/
@TableField(value = "balanceAmount")
private String balanceAmount;
/**
*
*/
@TableField(value = "remark")
private String remark;
/**
*
*/
@TableField(value = "updateTime")
private Date updateTime;
}

@ -0,0 +1,57 @@
package com.glxp.api.entity.inout;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* -
*/
@Data
@TableName(value = "io_stat_order")
public class IoStatOrderEntity {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
*
*/
@TableField(value = "recordKey")
private String recordKey;
/**
*
*/
@TableField(value = "`date`")
private Date date;
/**
* 1:2.3
*/
@TableField(value = "`type`")
private Integer type;
/**
*
*/
@TableField(value = "updateTime")
private Date updateTime;
/**
*
*/
@TableField(value = "title")
private String title;
/**
*
*/
@TableField(value = "remark")
private String remark;
}

@ -0,0 +1,147 @@
package com.glxp.api.entity.inout;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* -
*/
@Data
@TableName(value = "io_stat_quarter")
public class IoStatQuarterEntity {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
*
*/
@TableField(value = "`year`")
private Integer year;
/**
*
*/
@TableField(value = "quarter")
private Integer quarter;
/**
*
*/
@TableField(value = "relIdFk")
private String relIdFk;
/**
* DI
*/
@TableField(value = "nameCode")
private String nameCode;
/**
*
*/
@TableField(value = "productName")
private String productName;
/**
*
*/
@TableField(value = "ggxh")
private String ggxh;
/**
*
*/
@TableField(value = "batchNo")
private String batchNo;
/**
*
*/
@TableField(value = "beginCount")
private Integer beginCount;
/**
*
*/
@TableField(value = "beginPrice")
private BigDecimal beginPrice;
/**
*
*/
@TableField(value = "beginAmount")
private BigDecimal beginAmount;
/**
*
*/
@TableField(value = "inCount")
private String inCount;
/**
*
*/
@TableField(value = "inPrice")
private BigDecimal inPrice;
/**
*
*/
@TableField(value = "inAmount")
private String inAmount;
/**
*
*/
@TableField(value = "outCount")
private String outCount;
/**
*
*/
@TableField(value = "outPrice")
private BigDecimal outPrice;
/**
*
*/
@TableField(value = "outAmount")
private String outAmount;
/**
*
*/
@TableField(value = "balanceCount")
private String balanceCount;
/**
*
*/
@TableField(value = "balancePrice")
private BigDecimal balancePrice;
/**
*
*/
@TableField(value = "balanceAmount")
private String balanceAmount;
/**
*
*/
@TableField(value = "remark")
private String remark;
/**
*
*/
@TableField(value = "updateTime")
private Date updateTime;
}

@ -0,0 +1,142 @@
package com.glxp.api.entity.inout;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* -
*/
@Data
@TableName(value = "io_stat_year")
public class IoStatYearEntity {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
*
*/
@TableField(value = "`year`")
private Integer year;
/**
*
*/
@TableField(value = "relIdFk")
private String relIdFk;
/**
* DI
*/
@TableField(value = "nameCode")
private String nameCode;
/**
*
*/
@TableField(value = "productName")
private String productName;
/**
*
*/
@TableField(value = "ggxh")
private String ggxh;
/**
*
*/
@TableField(value = "batchNo")
private String batchNo;
/**
*
*/
@TableField(value = "beginCount")
private Integer beginCount;
/**
*
*/
@TableField(value = "beginPrice")
private BigDecimal beginPrice;
/**
*
*/
@TableField(value = "beginAmount")
private BigDecimal beginAmount;
/**
*
*/
@TableField(value = "inCount")
private String inCount;
/**
*
*/
@TableField(value = "inPrice")
private BigDecimal inPrice;
/**
*
*/
@TableField(value = "inAmount")
private String inAmount;
/**
*
*/
@TableField(value = "outCount")
private String outCount;
/**
*
*/
@TableField(value = "outPrice")
private BigDecimal outPrice;
/**
*
*/
@TableField(value = "outAmount")
private String outAmount;
/**
*
*/
@TableField(value = "balanceCount")
private String balanceCount;
/**
*
*/
@TableField(value = "balancePrice")
private BigDecimal balancePrice;
/**
*
*/
@TableField(value = "balanceAmount")
private String balanceAmount;
/**
*
*/
@TableField(value = "remark")
private String remark;
/**
*
*/
@TableField(value = "updateTime")
private Date updateTime;
}

@ -0,0 +1,16 @@
package com.glxp.api.service.inout;
import java.util.Date;
/**
* - Service
*/
public interface IoStatDayService {
/**
*
*
* @param date
*/
void statData(Date date);
}

@ -0,0 +1,17 @@
package com.glxp.api.service.inout;
import java.util.Date;
/**
* - Service
*/
public interface IoStatMonthService {
/**
*
*
* @param date
*/
void statData(Date date);
}

@ -0,0 +1,7 @@
package com.glxp.api.service.inout;
/**
* - Service
*/
public interface IoStatOrderService {
}

@ -0,0 +1,17 @@
package com.glxp.api.service.inout;
import java.util.Date;
/**
* - Service
*/
public interface IoStatQuarterService {
/**
*
*
* @param date
*/
void statData(Date date);
}

@ -0,0 +1,17 @@
package com.glxp.api.service.inout;
import java.util.Date;
/**
* - Service
*/
public interface IoStatYearService {
/**
*
*
* @param date
*/
void statData(Date date);
}

@ -0,0 +1,97 @@
package com.glxp.api.service.inout.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.glxp.api.constant.ConstantType;
import com.glxp.api.dao.inout.IoOrderDao;
import com.glxp.api.dao.inout.IoOrderDetailResultDao;
import com.glxp.api.dao.inout.IoStatDayDao;
import com.glxp.api.entity.inout.IoOrderDetailResultEntity;
import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.entity.inout.IoStatDayEntity;
import com.glxp.api.service.inout.IoStatDayService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class IoStatDayServiceImpl implements IoStatDayService {
@Resource
private IoStatDayDao statDayDao;
@Resource
private IoOrderDetailResultDao ioOrderDetailResultDao;
@Resource
private IoOrderDao orderDao;
@Override
public void statData(Date date) {
//汇总前一天的数据
DateTime yesterday = DateUtil.offsetDay(date, -1);
List<IoOrderDetailResultEntity> orderDetailResultEntities = ioOrderDetailResultDao.selectList(new QueryWrapper<IoOrderDetailResultEntity>()
.select("orderIdFk", "bindRlFk", "nameCode", "batchNo", "productDate", "expireDate", "coName", "spec", "price", "count", "reCount")
.between("createTime", DateUtil.beginOfDay(yesterday), DateUtil.endOfDay(yesterday)));
if (CollUtil.isNotEmpty(orderDetailResultEntities)) {
List<IoOrderDetailResultEntity> dataList = new CopyOnWriteArrayList<>(orderDetailResultEntities);
dataList.parallelStream().forEach(orderDetailResultEntity -> {
//查询此产品前一天的数据
IoStatDayEntity statDayEntity = statDayDao.selectOne(buildQueryWrapper(orderDetailResultEntity, yesterday));
if (null == statDayEntity) {
//第一次汇总次产品数据
statDayEntity = new IoStatDayEntity();
statDayEntity.setYear(yesterday.year());
statDayEntity.setMonth(yesterday.month());
statDayEntity.setDay(DateUtil.dayOfMonth(yesterday));
statDayEntity.setRelIdFk(String.valueOf(orderDetailResultEntity.getBindRlFk()));
statDayEntity.setNameCode(orderDetailResultEntity.getNameCode());
statDayEntity.setProductName(orderDetailResultEntity.getCoName());
statDayEntity.setGgxh(orderDetailResultEntity.getSpec());
statDayEntity.setBatchNo(orderDetailResultEntity.getBatchNo());
//设置期初数据
statDayEntity.setBeginCount(0);
statDayEntity.setBeginPrice(orderDetailResultEntity.getPrice());
statDayEntity.setBeginAmount(BigDecimal.ZERO);
//查询此单是出库还是入库
IoOrderEntity order = orderDao.selectOne(new QueryWrapper<IoOrderEntity>().select("mainAction").eq("billNo", orderDetailResultEntity.getOrderIdFk()));
if (order.getMainAction().equals(ConstantType.TYPE_PUT)) {
//入库
statDayEntity.setInCount(String.valueOf(orderDetailResultEntity.getReCount()));
statDayEntity.setInPrice(orderDetailResultEntity.getPrice());
BigDecimal inAmount = orderDetailResultEntity.getPrice().multiply(BigDecimal.valueOf(orderDetailResultEntity.getReCount()));
statDayEntity.setInAmount(inAmount.toString());
} else if (order.getMainAction().equals(ConstantType.TYPE_OUT)) {
//出库
}
}
});
}
}
private static QueryWrapper<IoStatDayEntity> buildQueryWrapper(IoOrderDetailResultEntity orderDetailResultEntity, DateTime yesterday) {
QueryWrapper<IoStatDayEntity> wrapper = new QueryWrapper<>();
wrapper.eq("year", yesterday.year())
.eq("month", yesterday.month())
.eq("day", DateUtil.dayOfMonth(yesterday))
.eq("relIdFk", orderDetailResultEntity.getBindRlFk())
.eq(StrUtil.isNotBlank(orderDetailResultEntity.getBatchNo()), "batchNo", orderDetailResultEntity.getBatchNo())
.eq(StrUtil.isNotBlank(orderDetailResultEntity.getNameCode()), "nameCode", orderDetailResultEntity.getNameCode());
return wrapper;
}
}

@ -0,0 +1,18 @@
package com.glxp.api.service.inout.impl;
import com.glxp.api.service.inout.IoStatMonthService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class IoStatMonthServiceImpl implements IoStatMonthService {
@Override
public void statData(Date date) {
}
}

@ -0,0 +1,12 @@
package com.glxp.api.service.inout.impl;
import com.glxp.api.service.inout.IoStatOrderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class IoStatOrderServiceImpl implements IoStatOrderService {
}

@ -0,0 +1,18 @@
package com.glxp.api.service.inout.impl;
import com.glxp.api.service.inout.IoStatQuarterService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class IoStatQuarterServiceImpl implements IoStatQuarterService {
@Override
public void statData(Date date) {
}
}

@ -0,0 +1,18 @@
package com.glxp.api.service.inout.impl;
import com.glxp.api.service.inout.IoStatYearService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class IoStatYearServiceImpl implements IoStatYearService {
@Override
public void statData(Date date) {
}
}

@ -0,0 +1,90 @@
package com.glxp.api.task;
import cn.hutool.core.thread.ThreadUtil;
import com.glxp.api.dao.schedule.ScheduledDao;
import com.glxp.api.entity.system.ScheduledEntity;
import com.glxp.api.req.system.ScheduledRequest;
import com.glxp.api.service.inout.IoStatDayService;
import com.glxp.api.service.inout.IoStatMonthService;
import com.glxp.api.service.inout.IoStatQuarterService;
import com.glxp.api.service.inout.IoStatYearService;
import com.glxp.api.util.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Date;
/**
*
*/
@Slf4j
@Component
public class IoStatOrderTask implements SchedulingConfigurer {
@Resource
private ScheduledDao scheduledDao;
@Resource
private IoStatDayService statDayService;
@Resource
private IoStatMonthService statMonthService;
@Resource
private IoStatQuarterService statQuarterService;
@Resource
private IoStatYearService statYearService;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addTriggerTask(this::process, triggerContext -> {
ScheduledRequest scheduledRequest = new ScheduledRequest();
scheduledRequest.setCronName("ioStatOrderTask");
ScheduledEntity scheduled = scheduledDao.findScheduled(scheduledRequest);
if (null == scheduled) {
log.info("物资出入库汇总定时任务未配置,请注意!");
return null;
}
String cron = scheduled.getCron();
return new CronTrigger(cron).nextExecutionTime(triggerContext);
});
}
private void process() {
log.info("开始汇总物资出入库数据");
//生成每日汇总数据
Date today = new Date();
ThreadUtil.execAsync(() -> {
log.info("开始生成每日物资出入库汇总数据");
statDayService.statData(today);
log.info("每日物资出入库数据汇总生成结束");
});
if (DateUtil.isMonthStart(today)) {
ThreadUtil.execAsync(() -> {
log.info("本日为月初,生成月度物资出入库汇总数据");
statMonthService.statData(today);
log.info("月度物资出入库汇总数据生成结束");
});
}
if (DateUtil.isQuarterStart(today)) {
ThreadUtil.execAsync(() -> {
log.info("本日为季初,生成季度物资出入库汇总数据");
statQuarterService.statData(today);
log.info("季度物资出入库汇总数据生成结束");
});
}
if (DateUtil.isYearStart(today)) {
ThreadUtil.execAsync(() -> {
log.info("本日为年初,生成年度物资出入库汇总数据");
statYearService.statData(today);
log.info("年度物资出入库汇总数据生成结束");
});
}
}
}

@ -1,5 +1,6 @@
package com.glxp.api.util;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.util.StrUtil;
import com.glxp.api.entity.inout.IoOrderEntity;
import lombok.extern.slf4j.Slf4j;
@ -639,4 +640,47 @@ public class DateUtil extends DateUtils {
}
return null;
}
/**
*
*
* @param date
* @return
*/
public static boolean isMonthStart(Date date) {
if (null == date) {
return false;
}
DateTime monthStart = cn.hutool.core.date.DateUtil.beginOfMonth(date);
return monthStart.toString("yyyy-MM-dd").equals(formatDate(date, "yyyy-MM-dd"));
}
/**
*
*
* @param date
* @return
*/
public static boolean isQuarterStart(Date date) {
if (null == date) {
return false;
}
DateTime quarterStart = cn.hutool.core.date.DateUtil.beginOfQuarter(date);
return quarterStart.toString("yyyy-MM-dd").equals(formatDate(date, "yyyy-MM-dd"));
}
/**
*
*
* @param date
* @return
*/
public static boolean isYearStart(Date date) {
if (null == date) {
return false;
}
DateTime yearStart = cn.hutool.core.date.DateUtil.beginOfYear(date);
return yearStart.toString("yyyy-MM-dd").equals(formatDate(date, "yyyy-MM-dd"));
}
}

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.dao.inout.IoStatDayDao">
</mapper>

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.dao.inout.IoStatMonthDao">
</mapper>

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.dao.inout.IoStatOrderDao">
</mapper>

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.dao.inout.IoStatQuarterDao">
</mapper>

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.dao.inout.IoStatYearDao">
</mapper>
Loading…
Cancel
Save