计算销售报表-定时任务逻辑调整

This commit is contained in:
king
2026-03-13 10:52:59 +08:00
parent 1ed3bc85f6
commit b023ce65f6
13 changed files with 108 additions and 101 deletions

View File

@@ -9,6 +9,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* 经营指标完成情况
* oracle gr_bi_fs_business_real -> mysql gr_bi_fs_business_real
*/
@Slf4j

View File

@@ -1,6 +1,5 @@
package com.lideeyunji.core.framework.config.job;
import com.lideeyunji.core.framework.service.IGrBiFsBusinessRealService;
import com.lideeyunji.core.framework.service.IGrBiStLotService;
import com.lideeyunji.tool.framework.common.constant.lideeYunJiBaseConstant;
import com.lideeyunji.tool.framework.quartz.core.handler.JobHandler;
@@ -10,6 +9,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* 物料产品库存统计表
* oracle gr_bi_st_lot -> mysql gr_bi_st_lot
*/
@Slf4j
@@ -21,9 +21,9 @@ public class GenerateStLotJob implements JobHandler {
@Override
public String execute(String param) throws Exception {
log.info("*********** 开始生成物料产品库存统计表完成情况 ************");
log.info("*********** 开始生成物料产品库存统计表 ************");
grBiFsStLotService.generateStLot(lideeYunJiBaseConstant.DS_ERP_BI_DATA);
log.info("*********** 生成物料产品库存统计表完成情况完成 ************");
return "*********** 生成物料产品库存统计表完成情况完成 ************";
log.info("*********** 生成物料产品库存统计表完成 ************");
return "*********** 生成物料产品库存统计表完成 ************";
}
}

View File

@@ -9,6 +9,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* 产品可销库存对象
* oracle gr_bi_st_product_avl -> mysql gr_bi_st_product_avl
*/
@Slf4j
@@ -20,9 +21,9 @@ public class GenerateStProductAvlJob implements JobHandler {
@Override
public String execute(String param) throws Exception {
log.info("*********** 开始生成产品可销库存对象完成情况 ************");
log.info("*********** 开始生成产品可销库存对象 ************");
grBiFsStProductAvlService.generateStProductAvl(lideeYunJiBaseConstant.DS_ERP_BI_DATA);
log.info("*********** 生成产品可销库存对象完成情况完成 ************");
return "*********** 生成产品可销库存对象完成情况完成 ************";
log.info("*********** 生成产品可销库存对象完成 ************");
return "*********** 生成产品可销库存对象完成 ************";
}
}

View File

@@ -1,6 +1,5 @@
package com.lideeyunji.core.framework.config.job;
import com.lideeyunji.core.framework.service.IGrBiStLotService;
import com.lideeyunji.core.framework.service.IGrBiStProductService;
import com.lideeyunji.tool.framework.common.constant.lideeYunJiBaseConstant;
import com.lideeyunji.tool.framework.quartz.core.handler.JobHandler;
@@ -10,6 +9,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* 库存产品占比表对象
* oracle gr_bi_st_product -> mysql gr_bi_st_product
*/
@Slf4j
@@ -21,9 +21,9 @@ public class GenerateStProductJob implements JobHandler {
@Override
public String execute(String param) throws Exception {
log.info("*********** 开始生成库存产品占比表对象完成情况 ************");
log.info("*********** 开始生成库存产品占比表对象 ************");
grBiFsStProductService.generateStProduct(lideeYunJiBaseConstant.DS_ERP_BI_DATA);
log.info("*********** 生成库存产品占比表对象完成情况完成 ************");
return "*********** 生成库存产品占比表对象完成情况完成 ************";
log.info("*********** 生成库存产品占比表对象完成 ************");
return "*********** 生成库存产品占比表对象完成 ************";
}
}

View File

@@ -4,10 +4,13 @@ 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 com.lideeyunji.tool.framework.yunji.model.global.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.lideeyunji.tool.framework.yunji.model.global.BaseTenantEntity;
import java.io.Serializable;
/**
* 经营指标完成情况对象 gr_bi_fs_business_real
*
@@ -16,13 +19,11 @@ import com.lideeyunji.tool.framework.yunji.model.global.BaseTenantEntity;
*/
@TableName("gr_bi_fs_business_real")
@Data
@EqualsAndHashCode(callSuper = true)
public class GrBiFsBusinessReal extends BaseTenantEntity
{
public class GrBiFsBusinessReal implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "ID", type = IdType.INPUT)
private String ID;
private Long id;
@TableField(value = "USEYEAR")
private String useYear;

View File

@@ -1,5 +1,6 @@
package com.lideeyunji.core.framework.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -7,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.TableName;
import com.lideeyunji.tool.framework.yunji.model.global.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.lideeyunji.tool.framework.yunji.model.global.BaseTenantEntity;
@@ -19,8 +21,7 @@ import com.lideeyunji.tool.framework.yunji.model.global.BaseTenantEntity;
*/
@TableName("gr_bi_st_lot")
@Data
@EqualsAndHashCode(callSuper = true)
public class GrBiStLot extends BaseTenantEntity
public class GrBiStLot implements Serializable
{
private static final long serialVersionUID = 1L;
@@ -55,7 +56,7 @@ public class GrBiStLot extends BaseTenantEntity
private Long goodsQty;
@TableField(value = "PRODDATE")
private Date proddate;
private Date prodDate;
@TableField(value = "INVALIDDATE")
private String invalidDate;

View File

@@ -8,6 +8,8 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import com.lideeyunji.tool.framework.yunji.model.global.BaseTenantEntity;
import java.io.Serializable;
/**
* 库存产品占比表对象 gr_bi_st_product
*
@@ -16,8 +18,7 @@ import com.lideeyunji.tool.framework.yunji.model.global.BaseTenantEntity;
*/
@TableName("gr_bi_st_product")
@Data
@EqualsAndHashCode(callSuper = true)
public class GrBiStProduct extends BaseTenantEntity
public class GrBiStProduct implements Serializable
{
private static final long serialVersionUID = 1L;
@@ -34,10 +35,10 @@ public class GrBiStProduct extends BaseTenantEntity
private String goodsType;
@TableField(value = "GOODSUNIT")
private String goodsunit;
private String goodsUnit;
@TableField(value = "GOODSCLASSID")
private Long goodsclassid;
private Long goodsClassId;
@TableField(value = "GOODSCLASSNAME")
private String goodsClassName;

View File

@@ -4,10 +4,13 @@ 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 com.lideeyunji.tool.framework.yunji.model.global.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.lideeyunji.tool.framework.yunji.model.global.BaseTenantEntity;
import java.io.Serializable;
/**
* 产品可销库存对象 gr_bi_st_product_avl
*
@@ -16,8 +19,7 @@ import com.lideeyunji.tool.framework.yunji.model.global.BaseTenantEntity;
*/
@TableName("gr_bi_st_product_avl")
@Data
@EqualsAndHashCode(callSuper = true)
public class GrBiStProductAvl extends BaseTenantEntity
public class GrBiStProductAvl implements Serializable
{
private static final long serialVersionUID = 1L;

View File

@@ -1,19 +1,16 @@
package com.lideeyunji.core.framework.service.impl;
import java.time.LocalDateTime;
import java.util.List;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lideeyunji.core.framework.entity.GrBiFsBusinessReal;
import com.lideeyunji.core.framework.entity.GrBiStLot;
import com.lideeyunji.core.framework.mapper.GrBiStLotMapper;
import com.lideeyunji.core.framework.service.IGrBiStLotService;
import com.lideeyunji.tool.framework.common.constant.lideeYunJiBaseConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.lideeyunji.core.framework.mapper.GrBiStLotMapper;
import com.lideeyunji.core.framework.entity.GrBiStLot;
import com.lideeyunji.core.framework.service.IGrBiStLotService;
import java.util.List;
/**
* 物料产品库存统计表Service业务层处理

View File

@@ -4,13 +4,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lideeyunji.core.framework.mapper.GrBiFsBusinessRealMapper">
<resultMap type="GrBiFsBusinessReal" id="GrBiFsBusinessRealResult">
<result property="ID" column="ID" />
<result property="USEYEAR" column="USEYEAR" />
<result property="USEMONTH" column="USEMONTH" />
<result property="ITEMID" column="ITEMID" />
<result property="ITEMNAME" column="ITEMNAME" />
<result property="ITEMORDER" column="ITEMORDER" />
<resultMap type="com.lideeyunji.core.framework.entity.GrBiFsBusinessReal" id="GrBiFsBusinessRealResult">
<result property="id" column="ID" />
<result property="useYear" column="USEYEAR" />
<result property="useMonth" column="USEMONTH" />
<result property="itemId" column="ITEMID" />
<result property="itemName" column="ITEMNAME" />
<result property="itemOrder" column="ITEMORDER" />
<result property="monthReal" column="MONTH_REAL" />
<result property="yearReal" column="YEAR_REAL" />
<result property="monthDiff" column="MONTH_DIFF" />
@@ -21,16 +21,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectGrBiFsBusinessRealVo">
select ID, USEYEAR, USEMONTH, ITEMID, ITEMNAME, ITEMORDER, MONTH_REAL, YEAR_REAL, MONTH_DIFF, YEAR_PLAN, YEAR_RATE from gr_bi_fs_business_real
</sql>
<select id="generateSalesReport" resultMap="GrBiFsBusinessRealResult">
<select id="getBusinessRealList" resultMap="GrBiFsBusinessRealResult">
<include refid="selectGrBiFsBusinessRealVo"/>
<where>
a.USEYEAR is not NULL
and (a.USEYEAR * 100 + a.USEMONTH) BETWEEN #{pastYearMonth} AND #{currentYearMonth}
USEYEAR is not NULL
and (USEYEAR * 100 + USEMONTH) BETWEEN #{pastYearMonth} AND #{currentYearMonth}
</where>
order by a.USEYEAR, a.USEMONTH
order by USEYEAR, USEMONTH
</select>
<select id="selectGrBiFsBusinessRealList" parameterType="GrBiFsBusinessReal" resultMap="GrBiFsBusinessRealResult">
<delete id="deleteOldBusinessReal">
delete from gr_bi_fs_business_real
where (USEYEAR * 100 + USEMONTH) BETWEEN #{pastYearMonth} AND #{currentYearMonth}
</delete>
<select id="selectGrBiFsBusinessRealList" parameterType="com.lideeyunji.core.framework.entity.GrBiFsBusinessReal" resultMap="GrBiFsBusinessRealResult">
<include refid="selectGrBiFsBusinessRealVo"/>
<where>
<if test="ID != null and ID != ''"> and ID = #{ID}</if>
@@ -52,7 +55,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where ID = #{ID}
</select>
<insert id="insertGrBiFsBusinessReal" parameterType="GrBiFsBusinessReal">
<insert id="insertGrBiFsBusinessReal" parameterType="com.lideeyunji.core.framework.entity.GrBiFsBusinessReal">
insert into gr_bi_fs_business_real
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="ID != null">ID,</if>
@@ -82,7 +85,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</trim>
</insert>
<update id="updateGrBiFsBusinessReal" parameterType="GrBiFsBusinessReal">
<update id="updateGrBiFsBusinessReal" parameterType="com.lideeyunji.core.framework.entity.GrBiFsBusinessReal">
update gr_bi_fs_business_real
<trim prefix="SET" suffixOverrides=",">
<if test="USEYEAR != null">USEYEAR = #{USEYEAR},</if>

View File

@@ -4,34 +4,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lideeyunji.core.framework.mapper.GrBiStLotMapper">
<resultMap type="GrBiStLot" id="GrBiStLotResult">
<result property="ID" column="ID" />
<result property="GOODSID" column="GOODSID" />
<result property="GOODSNAME" column="GOODSNAME" />
<result property="GOODSTYPE" column="GOODSTYPE" />
<result property="GOODSUNIT" column="GOODSUNIT" />
<result property="CLASSID" column="CLASSID" />
<result property="CLASSNAME" column="CLASSNAME" />
<result property="LOTID" column="LOTID" />
<result property="LOTNO" column="LOTNO" />
<result property="GOODSQTY" column="GOODSQTY" />
<result property="PRODDATE" column="PRODDATE" />
<result property="INVALIDDATE" column="INVALIDDATE" />
<result property="INVALIDDAYS" column="INVALIDDAYS" />
<result property="STINDATE" column="STINDATE" />
<result property="STOUTDATE" column="STOUTDATE" />
<result property="INVALIDDAYSTYPEID" column="INVALIDDAYSTYPEID" />
<result property="INVALIDDAYSTYPE" column="INVALIDDAYSTYPE" />
<result property="OUTTYPE" column="OUTTYPE" />
<result property="STORAGEID" column="STORAGEID" />
<result property="STORAGENAME" column="STORAGENAME" />
<resultMap type="com.lideeyunji.core.framework.entity.GrBiStLot" id="GrBiStLotResult">
<result property="id" column="ID" />
<result property="goodsId" column="GOODSID" />
<result property="goodsName" column="GOODSNAME" />
<result property="goodsType" column="GOODSTYPE" />
<result property="goodsUnit" column="GOODSUNIT" />
<result property="classid" column="CLASSID" />
<result property="className" column="CLASSNAME" />
<result property="lotId" column="LOTID" />
<result property="lotNo" column="LOTNO" />
<result property="goodsQty" column="GOODSQTY" />
<result property="prodDate" column="PRODDATE" />
<result property="invalidDate" column="INVALIDDATE" />
<result property="invalidDays" column="INVALIDDAYS" />
<result property="stInDate" column="STINDATE" />
<result property="stOutDate" column="STOUTDATE" />
<result property="invalidDaysTypeId" column="INVALIDDAYSTYPEID" />
<result property="invalidDaysType" column="INVALIDDAYSTYPE" />
<result property="outType" column="OUTTYPE" />
<result property="storageId" column="STORAGEID" />
<result property="storageName" column="STORAGENAME" />
</resultMap>
<sql id="selectGrBiStLotVo">
select ID, GOODSID, GOODSNAME, GOODSTYPE, GOODSUNIT, CLASSID, CLASSNAME, LOTID, LOTNO, GOODSQTY, PRODDATE, INVALIDDATE, INVALIDDAYS, STINDATE, STOUTDATE, INVALIDDAYSTYPEID, INVALIDDAYSTYPE, OUTTYPE, STORAGEID, STORAGENAME from gr_bi_st_lot
</sql>
<select id="selectGrBiStLotList" parameterType="GrBiStLot" resultMap="GrBiStLotResult">
<select id="selectGrBiStLotList" parameterType="com.lideeyunji.core.framework.entity.GrBiStLot" resultMap="GrBiStLotResult">
<include refid="selectGrBiStLotVo"/>
<where>
<if test="ID != null "> and ID = #{ID}</if>
@@ -62,7 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where ID = #{ID}
</select>
<insert id="insertGrBiStLot" parameterType="GrBiStLot">
<insert id="insertGrBiStLot" parameterType="com.lideeyunji.core.framework.entity.GrBiStLot">
insert into gr_bi_st_lot
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="ID != null">ID,</if>
@@ -110,7 +110,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</trim>
</insert>
<update id="updateGrBiStLot" parameterType="GrBiStLot">
<update id="updateGrBiStLot" parameterType="com.lideeyunji.core.framework.entity.GrBiStLot">
update gr_bi_st_lot
<trim prefix="SET" suffixOverrides=",">
<if test="GOODSID != null">GOODSID = #{GOODSID},</if>

View File

@@ -4,27 +4,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lideeyunji.core.framework.mapper.GrBiStProductAvlMapper">
<resultMap type="GrBiStProductAvl" id="GrBiStProductAvlResult">
<result property="ID" column="ID" />
<result property="GOODSID" column="GOODSID" />
<result property="GOODSNAME" column="GOODSNAME" />
<result property="GOODSTYPE" column="GOODSTYPE" />
<result property="GOODSUNIT" column="GOODSUNIT" />
<result property="PACKSIZE" column="PACKSIZE" />
<result property="SORT" column="SORT" />
<result property="SEMIREM" column="SEMIREM" />
<result property="TODAYIN" column="TODAYIN" />
<result property="REM" column="REM" />
<result property="THISMONTHOUT" column="THISMONTHOUT" />
<result property="LASTMONTHOUT" column="LASTMONTHOUT" />
<result property="THISYEAROUT" column="THISYEAROUT" />
<resultMap type="com.lideeyunji.core.framework.entity.GrBiStProductAvl" id="GrBiStProductAvlResult">
<result property="id" column="ID" />
<result property="goodsId" column="GOODSID" />
<result property="goodsName" column="GOODSNAME" />
<result property="goodsType" column="GOODSTYPE" />
<result property="goodsUnit" column="GOODSUNIT" />
<result property="packSize" column="PACKSIZE" />
<result property="sort" column="SORT" />
<result property="semiRem" column="SEMIREM" />
<result property="todayIn" column="TODAYIN" />
<result property="rem" column="REM" />
<result property="thisMonthOut" column="THISMONTHOUT" />
<result property="lastMonthOut" column="LASTMONTHOUT" />
<result property="thisYearOut" column="THISYEAROUT" />
</resultMap>
<sql id="selectGrBiStProductAvlVo">
select ID, GOODSID, GOODSNAME, GOODSTYPE, GOODSUNIT, PACKSIZE, SORT, SEMIREM, TODAYIN, REM, THISMONTHOUT, LASTMONTHOUT, THISYEAROUT from gr_bi_st_product_avl
</sql>
<select id="selectGrBiStProductAvlList" parameterType="GrBiStProductAvl" resultMap="GrBiStProductAvlResult">
<select id="selectGrBiStProductAvlList" parameterType="com.lideeyunji.core.framework.entity.GrBiStProductAvl" resultMap="GrBiStProductAvlResult">
<include refid="selectGrBiStProductAvlVo"/>
<where>
<if test="ID != null "> and ID = #{ID}</if>
@@ -48,7 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where ID = #{ID}
</select>
<insert id="insertGrBiStProductAvl" parameterType="GrBiStProductAvl">
<insert id="insertGrBiStProductAvl" parameterType="com.lideeyunji.core.framework.entity.GrBiStProductAvl">
insert into gr_bi_st_product_avl
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="ID != null">ID,</if>
@@ -82,7 +82,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</trim>
</insert>
<update id="updateGrBiStProductAvl" parameterType="GrBiStProductAvl">
<update id="updateGrBiStProductAvl" parameterType="com.lideeyunji.core.framework.entity.GrBiStProductAvl">
update gr_bi_st_product_avl
<trim prefix="SET" suffixOverrides=",">
<if test="GOODSID != null">GOODSID = #{GOODSID},</if>

View File

@@ -4,17 +4,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lideeyunji.core.framework.mapper.GrBiStProductMapper">
<resultMap type="GrBiStProduct" id="GrBiStProductResult">
<result property="ID" column="ID" />
<result property="GOODSID" column="GOODSID" />
<result property="GOODSNAME" column="GOODSNAME" />
<result property="GOODSTYPE" column="GOODSTYPE" />
<result property="GOODSUNIT" column="GOODSUNIT" />
<result property="GOODSCLASSID" column="GOODSCLASSID" />
<result property="GOODSCLASSNAME" column="GOODSCLASSNAME" />
<result property="QTY" column="QTY" />
<resultMap type="com.lideeyunji.core.framework.entity.GrBiStProduct" id="GrBiStProductResult">
<result property="id" column="ID" />
<result property="goodsId" column="GOODSID" />
<result property="goodsName" column="GOODSNAME" />
<result property="goodsType" column="GOODSTYPE" />
<result property="goodsUnit" column="GOODSUNIT" />
<result property="goodsClassId" column="GOODSCLASSID" />
<result property="goodsClassName" column="GOODSCLASSNAME" />
<result property="qty" column="QTY" />
<result property="qtyProp" column="QTY_PROP" />
<result property="MONEY" column="MONEY" />
<result property="money" column="MONEY" />
<result property="moneyProp" column="MONEY_PROP" />
</resultMap>
@@ -22,7 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select ID, GOODSID, GOODSNAME, GOODSTYPE, GOODSUNIT, GOODSCLASSID, GOODSCLASSNAME, QTY, QTY_PROP, MONEY, MONEY_PROP from gr_bi_st_product
</sql>
<select id="selectGrBiStProductList" parameterType="GrBiStProduct" resultMap="GrBiStProductResult">
<select id="selectGrBiStProductList" parameterType="com.lideeyunji.core.framework.entity.GrBiStProduct" resultMap="GrBiStProductResult">
<include refid="selectGrBiStProductVo"/>
<where>
<if test="ID != null "> and ID = #{ID}</if>
@@ -44,7 +44,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where ID = #{ID}
</select>
<insert id="insertGrBiStProduct" parameterType="GrBiStProduct">
<insert id="insertGrBiStProduct" parameterType="com.lideeyunji.core.framework.entity.GrBiStProduct">
insert into gr_bi_st_product
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="ID != null">ID,</if>
@@ -74,7 +74,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</trim>
</insert>
<update id="updateGrBiStProduct" parameterType="GrBiStProduct">
<update id="updateGrBiStProduct" parameterType="com.lideeyunji.core.framework.entity.GrBiStProduct">
update gr_bi_st_product
<trim prefix="SET" suffixOverrides=",">
<if test="GOODSID != null">GOODSID = #{GOODSID},</if>