|
|
@@ -0,0 +1,376 @@
|
|
|
+package nckd.jxccl.swc.stm.plugin.form.appr;
|
|
|
+
|
|
|
+import kd.bos.algo.Algo;
|
|
|
+import kd.bos.algo.AlgoContext;
|
|
|
+import kd.bos.algo.DataSet;
|
|
|
+import kd.bos.algo.Row;
|
|
|
+import kd.bos.dataentity.entity.DynamicObject;
|
|
|
+import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
|
+import kd.bos.form.control.events.ItemClickEvent;
|
|
|
+import kd.bos.form.control.events.ItemClickListener;
|
|
|
+import kd.bos.form.plugin.AbstractFormPlugin;
|
|
|
+import kd.bos.orm.query.QCP;
|
|
|
+import kd.bos.orm.query.QFilter;
|
|
|
+import kd.bos.servicehelper.QueryServiceHelper;
|
|
|
+import kd.sdk.plugin.Plugin;
|
|
|
+import nckd.jxccl.base.common.constant.FormConstant;
|
|
|
+import nckd.jxccl.base.common.utils.ConvertUtil;
|
|
|
+import nckd.jxccl.base.common.utils.DateUtil;
|
|
|
+import nckd.jxccl.base.common.utils.QueryFieldBuilder;
|
|
|
+import nckd.jxccl.base.swc.helper.SWCHelper;
|
|
|
+import nckd.jxccl.swc.constants.MasConstant;
|
|
|
+import nckd.jxccl.swc.constants.StmConstant;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.EventObject;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+* 集团工资结算核定
|
|
|
+* 实体标识:nckd_grpsalstlappr
|
|
|
+* @author W.Y.C
|
|
|
+* @date 2025/12/30 19:09
|
|
|
+* @version 1.0
|
|
|
+*/
|
|
|
+public class GrpSalStlApprFormPlugin extends AbstractFormPlugin implements Plugin, ItemClickListener {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void registerListener(EventObject e) {
|
|
|
+ //监听工具栏
|
|
|
+ this.addItemClickListeners("nckd_advcontoolbarap");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void itemClick(ItemClickEvent evt) {
|
|
|
+ String itemKey = evt.getItemKey();
|
|
|
+ if(itemKey.equalsIgnoreCase("nckd_calculate")){
|
|
|
+ Date year = ConvertUtil.toDate(this.getModel().getValue(StmConstant.NCKD_YEAR));
|
|
|
+ if(year == null){
|
|
|
+ this.getView().showTipNotification("请选择年度");
|
|
|
+ }else{
|
|
|
+ calculate();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void calculate(){
|
|
|
+ Date year = ConvertUtil.toDate(this.getModel().getValue(StmConstant.NCKD_YEAR));
|
|
|
+ DynamicObjectCollection entryEntity = this.getModel().getDataEntity(true).getDynamicObjectCollection(StmConstant.NCKD_ENTRYENTITY);
|
|
|
+ if(!entryEntity.isEmpty()){
|
|
|
+ List<Long> unitIds = new ArrayList<>();
|
|
|
+ for (DynamicObject entry : entryEntity) {
|
|
|
+ DynamicObject unit = entry.getDynamicObject(StmConstant.NCKD_UNIT);
|
|
|
+ if(unit != null){
|
|
|
+ long unitId = unit.getLong(StmConstant.ID_KEY);
|
|
|
+ if(unitId > 0) {
|
|
|
+ unitIds.add(unitId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(unitIds.isEmpty()){
|
|
|
+ this.getView().showTipNotification("请先选择二级单位!");
|
|
|
+ }else{
|
|
|
+
|
|
|
+ //获取上年度数据
|
|
|
+ Map<Long, List<DynamicObject>> lastYearDataMap = getLastYearData(year, unitIds);
|
|
|
+ //计算中高层不同类别人员的平均人数和薪酬总额
|
|
|
+ Map<Long, Result> longResultMap = avgPeopleNum(year, unitIds);
|
|
|
+ //按单位汇总任期激励金额
|
|
|
+ Map<Long, BigDecimal> longBigDecimalMap = sumTermBonusByUnit(year, unitIds);
|
|
|
+ //集团核定单项”+“优秀生津贴”项目薪酬数据
|
|
|
+
|
|
|
+ for (DynamicObject entry : entryEntity) {
|
|
|
+ long unitId = entry.getLong(String.join(".", StmConstant.NCKD_UNIT, StmConstant.ID_KEY));
|
|
|
+ if(unitId > 0){
|
|
|
+ List<DynamicObject> lastYearDataList = lastYearDataMap.get(unitId);
|
|
|
+ if(lastYearDataList != null && !lastYearDataList.isEmpty()){
|
|
|
+ DynamicObject lastYearData = lastYearDataList.get(0);
|
|
|
+ //上年实际计提工资总额与应提工资总额差额
|
|
|
+ entry.set(StmConstant.NCKD_LYRACTVSEXPDIFF, lastYearData.getBigDecimal(String.join(".",StmConstant.NCKD_ENTRYENTITY,StmConstant.NCKD_LYRACTVSEXPDIFF)));
|
|
|
+ //上年补提或冲回以前年度差额
|
|
|
+ entry.set(StmConstant.NCKD_LYRPRIORADJDIFF, lastYearData.getBigDecimal(String.join(".",StmConstant.NCKD_ENTRYENTITY,StmConstant.NCKD_LYRPRIORADJDIFF)));
|
|
|
+ //上年年薪人员差额
|
|
|
+ entry.set(StmConstant.NCKD_LYRANNSALDIFF, lastYearData.getBigDecimal(String.join(".",StmConstant.NCKD_ENTRYENTITY,StmConstant.NCKD_LYRANNSALDIFF)));
|
|
|
+ //上年任期激励差额
|
|
|
+ entry.set(StmConstant.NCKD_LYRTERMBONUSDIFF, lastYearData.getBigDecimal(String.join(".",StmConstant.NCKD_ENTRYENTITY,StmConstant.NCKD_LYRTERMBONUSDIFF)));
|
|
|
+ //上年组织绩效差额
|
|
|
+ entry.set(StmConstant.NCKD_LYRORGPERFDIFF, lastYearData.getBigDecimal(String.join(".",StmConstant.NCKD_ENTRYENTITY,StmConstant.NCKD_LYRORGPERFDIFF)));
|
|
|
+ //上年单项工资差额
|
|
|
+ entry.set(StmConstant.NCKD_LYRITEMWGDIFF, lastYearData.getBigDecimal(String.join(".",StmConstant.NCKD_ENTRYENTITY,StmConstant.NCKD_LYRITEMWGDIFF)));
|
|
|
+ }
|
|
|
+ Result result = longResultMap.get(unitId);
|
|
|
+ if(result != null) {
|
|
|
+ //负责人累计平均人数
|
|
|
+ entry.set(StmConstant.NCKD_RESPAVGNUM, result.respAvgNum);
|
|
|
+ //负责人薪酬合计
|
|
|
+ entry.set(StmConstant.NCKD_RESPWGTTL, result.resPwgTtl);
|
|
|
+ //专务、巡察专员累计平均人数
|
|
|
+ entry.set(StmConstant.NCKD_SPECINSPAVGNUM, result.specInspAvgNum);
|
|
|
+ //专务、巡察专员薪酬合计
|
|
|
+ entry.set(StmConstant.NCKD_SPECINSPWGTTL, result.specInspWgTtl);
|
|
|
+ }
|
|
|
+ BigDecimal sumTermBonus = longBigDecimalMap.get(unitId);
|
|
|
+ if(sumTermBonus != null){
|
|
|
+ entry.set(StmConstant.NCKD_TERMBONUS, sumTermBonus);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.getView().updateView(StmConstant.NCKD_ENTRYENTITY);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ this.getView().showTipNotification("请先添加数据!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取上年度数据
|
|
|
+ * @param year 年份
|
|
|
+ * @param unitIds 单位ID列表
|
|
|
+ * @return 每个单位的上年度数据映射
|
|
|
+ */
|
|
|
+ private Map<Long,List<DynamicObject>> getLastYearData(Date year, List<Long> unitIds){
|
|
|
+ Date lastYear = DateUtil.minusYears(year, 1);
|
|
|
+ Date beginDate = DateUtil.beginOfYear(lastYear);
|
|
|
+ Date endDate = DateUtil.endOfDay(lastYear);
|
|
|
+ QFilter qFilter = new QFilter(StmConstant.NCKD_YEAR, QCP.large_equals,beginDate)
|
|
|
+ .and(StmConstant.NCKD_YEAR, QCP.less_equals, endDate)
|
|
|
+ .and(String.join(".",StmConstant.NCKD_ENTRYENTITY, StmConstant.NCKD_UNIT), QCP.in, unitIds);
|
|
|
+ QueryFieldBuilder queryFieldBuilder = QueryFieldBuilder.create()
|
|
|
+ .addIdNumberName(StmConstant.NCKD_ENTRYENTITY,StmConstant.NCKD_UNIT)
|
|
|
+ .add(StmConstant.NCKD_ENTRYENTITY,StmConstant.NCKD_CYACTVSEXPDIFF)
|
|
|
+ .add(StmConstant.NCKD_ENTRYENTITY,StmConstant.NCKD_CYPRIORADJDIFF2)
|
|
|
+ .add(StmConstant.NCKD_ENTRYENTITY,StmConstant.NCKD_CYANNSALDIFF)
|
|
|
+ .add(StmConstant.NCKD_ENTRYENTITY,StmConstant.NCKD_CYTERMBONUSDIFF)
|
|
|
+ .add(StmConstant.NCKD_ENTRYENTITY,StmConstant.NCKD_CYORGPERFDIFF)
|
|
|
+ .add(StmConstant.NCKD_ENTRYENTITY,StmConstant.NCKD_CYITEMWGDIFF);
|
|
|
+ DynamicObjectCollection query = QueryServiceHelper.query(StmConstant.GRPSALSTLAPPR_ENTITYID, queryFieldBuilder.buildSelect(), new QFilter[]{qFilter});
|
|
|
+ return query.stream()
|
|
|
+ .collect(Collectors.groupingBy(
|
|
|
+ obj -> obj.getLong(String.join(".",StmConstant.NCKD_ENTRYENTITY, StmConstant.NCKD_UNIT,FormConstant.ID_KEY))
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算不同职位类别的平均人数和薪酬总额
|
|
|
+ *
|
|
|
+ * @param year 年份
|
|
|
+ * @param unitIds 单位ID列表
|
|
|
+ * @return 每个单位的计算结果映射
|
|
|
+ */
|
|
|
+ private Map<Long,Result> avgPeopleNum(Date year, List<Long> unitIds){
|
|
|
+ Map<Long,Result> result = new HashMap<>();
|
|
|
+
|
|
|
+ // 定义常量
|
|
|
+ final String SALARY_ITEM_NUMBER = "JT_477"; // 实发工资
|
|
|
+ final BigDecimal MONTHS_IN_YEAR = new BigDecimal(12); // 一年的月份数
|
|
|
+ final int DECIMAL_SCALE = 2; // 保留小数位数
|
|
|
+
|
|
|
+ try(AlgoContext context = Algo.newContext()) {
|
|
|
+ Date beginDate = DateUtil.beginOfYear(year);
|
|
|
+ Date endDate = DateUtil.endOfDay(year);
|
|
|
+ QFilter qFilter = new QFilter(StmConstant.NCKD_YEAR, QCP.large_equals, beginDate)
|
|
|
+ .and(StmConstant.NCKD_YEAR, QCP.less_equals, endDate)
|
|
|
+ .and(StmConstant.NCKD_PAYUNIT, QCP.in, unitIds);
|
|
|
+ QueryFieldBuilder queryFieldBuilder = QueryFieldBuilder.create()
|
|
|
+ .addIdNumberName(StmConstant.NCKD_PAYUNIT)
|
|
|
+ .addIdNumberNameWithExtras(new String[]{StmConstant.NCKD_EMPLOYEE}, FormConstant.EMP_NUMBER_KEY)
|
|
|
+ .add(MasConstant.NCKD_ISDIRCADRE)
|
|
|
+ .add(MasConstant.NCKD_POSNAME)
|
|
|
+ .add(MasConstant.NCKD_SERVICEMONTHS);
|
|
|
+ DataSet dataSet = QueryServiceHelper.queryDataSet(this.getClass().getName(), MasConstant.SUBCOHEADSERVICE_ENTITYID, queryFieldBuilder.buildSelect(), new QFilter[]{qFilter}, null,1000000);
|
|
|
+
|
|
|
+ // 计算负责人类别(不包含专务和巡察专员的直管干部)
|
|
|
+ calculateCategoryResult(dataSet.copy(), result,
|
|
|
+ MasConstant.NCKD_POSNAME + " not like '%专务%' and " + MasConstant.NCKD_POSNAME + " not like '%巡察专员%' and " + MasConstant.NCKD_ISDIRCADRE + "=true",
|
|
|
+ Result::setRespAvgNum, Result::setResPwgTtl, beginDate, endDate);
|
|
|
+
|
|
|
+ // 计算专务和巡察专员类别
|
|
|
+ calculateCategoryResult(dataSet.copy(), result,
|
|
|
+ "("+MasConstant.NCKD_POSNAME + " like '%专务%' or " + MasConstant.NCKD_POSNAME + " like '%巡察专员%')",
|
|
|
+ Result::setSpecInspAvgNum, Result::setSpecInspWgTtl, beginDate, endDate);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算特定类别的结果
|
|
|
+ *
|
|
|
+ * @param dataSet 原始数据集
|
|
|
+ * @param result 结果映射
|
|
|
+ * @param filter 过滤条件
|
|
|
+ * @param avgNumSetter 平均人数设置器
|
|
|
+ * @param wgTtlSetter 薪酬总额设置器
|
|
|
+ * @param beginDate 查询开始日期
|
|
|
+ * @param endDate 查询结束日期
|
|
|
+ */
|
|
|
+ private void calculateCategoryResult(DataSet dataSet, Map<Long, Result> result, String filter,
|
|
|
+ java.util.function.BiConsumer<Result, BigDecimal> avgNumSetter,
|
|
|
+ java.util.function.BiConsumer<Result, BigDecimal> wgTtlSetter,
|
|
|
+ Date beginDate, Date endDate) {
|
|
|
+ // 定义常量
|
|
|
+ final String SALARY_ITEM_NUMBER = "JT_477"; // 实发工资
|
|
|
+ final BigDecimal MONTHS_IN_YEAR = new BigDecimal(12); // 一年的月份数
|
|
|
+ final int DECIMAL_SCALE = 2; // 保留小数位数
|
|
|
+
|
|
|
+ DataSet filteredDataSet = dataSet.filter(filter);
|
|
|
+ DataSet calcSumDataSet = filteredDataSet.copy()
|
|
|
+ .groupBy(new String[]{String.join(".", StmConstant.NCKD_PAYUNIT, StmConstant.ID_KEY)})
|
|
|
+ .sum(MasConstant.NCKD_SERVICEMONTHS, "sum")
|
|
|
+ .finish();
|
|
|
+
|
|
|
+ // 计算平均人数
|
|
|
+ while (calcSumDataSet.hasNext()) {
|
|
|
+ Row next = calcSumDataSet.next();
|
|
|
+ Long payUnitId = next.getLong(String.join(".", StmConstant.NCKD_PAYUNIT, StmConstant.ID_KEY));
|
|
|
+ BigDecimal sum = next.getBigDecimal("sum");
|
|
|
+ BigDecimal avg = calculateAverage(sum, MONTHS_IN_YEAR, DECIMAL_SCALE);
|
|
|
+ result.computeIfAbsent(payUnitId, k -> new Result());
|
|
|
+ avgNumSetter.accept(result.get(payUnitId), avg);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 计算薪酬总额
|
|
|
+ Map<Long, List<Long>> unitPersonMap = new HashMap<>(); // 按单位分组的人员ID映射
|
|
|
+ Map<Long, Long> personToUnitMap = new HashMap<>(); // 人员ID到单位ID的映射
|
|
|
+
|
|
|
+ // 重新遍历过滤后的数据集,建立人员与单位的映射关系
|
|
|
+ DataSet personDataSet = filteredDataSet.copy();
|
|
|
+ while (personDataSet.hasNext()) {
|
|
|
+ Row next = personDataSet.next();
|
|
|
+ Long personId = next.getLong(String.join(".", StmConstant.NCKD_EMPLOYEE, StmConstant.ID_KEY));
|
|
|
+ Long payUnit = next.getLong(String.join(".", StmConstant.NCKD_PAYUNIT, StmConstant.ID_KEY));
|
|
|
+
|
|
|
+ // 按单位分组人员ID
|
|
|
+ unitPersonMap.computeIfAbsent(payUnit, k -> new ArrayList<>()).add(personId);
|
|
|
+ // 建立人员ID到单位ID的映射
|
|
|
+ personToUnitMap.put(personId, payUnit);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!unitPersonMap.isEmpty()) {
|
|
|
+ List<Long> allPersonIds = unitPersonMap.values().stream()
|
|
|
+ .flatMap(List::stream)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 获取人员薪酬数据(按薪资所属年月)
|
|
|
+ DynamicObjectCollection items = SWCHelper.querySalaryList(allPersonIds, beginDate, endDate, "-1");
|
|
|
+
|
|
|
+ // 过滤实发工资项目
|
|
|
+ List<DynamicObject> filteredItems = items.stream()
|
|
|
+ .filter(item -> SALARY_ITEM_NUMBER.equals(item.getString("hsas_caltableentry.salaryitem.number")))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 按单位分组计算薪酬总额
|
|
|
+ Map<Long, BigDecimal> unitSalaryMap = new HashMap<>();
|
|
|
+ for (DynamicObject item : filteredItems) {
|
|
|
+ Long personId = item.getLong("calpersonid");
|
|
|
+ // 通过映射直接获取单位ID
|
|
|
+ Long unitId = personToUnitMap.get(personId);
|
|
|
+ if (unitId != null) {
|
|
|
+ BigDecimal amount = item.getBigDecimal("hsas_caltableentry.calamountvalue");
|
|
|
+ unitSalaryMap.merge(unitId, amount, BigDecimal::add);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新结果中的薪酬总额
|
|
|
+ for (Map.Entry<Long, BigDecimal> entry : unitSalaryMap.entrySet()) {
|
|
|
+ Long payUnitId = entry.getKey();
|
|
|
+ result.computeIfAbsent(payUnitId, k -> new Result());
|
|
|
+ wgTtlSetter.accept(result.get(payUnitId), entry.getValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算平均值
|
|
|
+ *
|
|
|
+ * @param sum 总和
|
|
|
+ * @param divisor 除数
|
|
|
+ * @param scale 小数位数
|
|
|
+ * @return 计算后的平均值
|
|
|
+ */
|
|
|
+ private BigDecimal calculateAverage(BigDecimal sum, BigDecimal divisor, int scale) {
|
|
|
+ if (sum != null && sum.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ return sum.divide(divisor, scale, RoundingMode.HALF_UP);
|
|
|
+ }
|
|
|
+ return BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 按单位汇总任期激励金额
|
|
|
+ * @param year 年份
|
|
|
+ * @param unitIds 单位ID列表
|
|
|
+ * @return 每个单位的任期激励总额映射
|
|
|
+ */
|
|
|
+ private Map<Long, BigDecimal> sumTermBonusByUnit(Date year, List<Long> unitIds){
|
|
|
+ int y = DateUtil.getYear(year);
|
|
|
+ // 查询任期激励核定表中对应年份的数据
|
|
|
+ // 结束年份的任期激励总金额;
|
|
|
+ QFilter qFilter = new QFilter(String.join(".", MasConstant.NCKD_TERM, StmConstant.NAME_KEY), QCP.like, "%-"+y)
|
|
|
+ .and(MasConstant.NCKD_PAYUNIT, QCP.in, unitIds);
|
|
|
+
|
|
|
+ QueryFieldBuilder queryFieldBuilder = QueryFieldBuilder.create()
|
|
|
+ .addIdNumberName(MasConstant.NCKD_PAYUNIT)
|
|
|
+ .add(String.join(".", FormConstant.NCKD_ENTRYENTITY, MasConstant.NCKD_TOTALBONUSAMT));
|
|
|
+
|
|
|
+ // 使用正确的实体标识
|
|
|
+ DynamicObjectCollection query = QueryServiceHelper.query(MasConstant.ENTLDRTERMBONUSAPPR_ENTITYID, queryFieldBuilder.buildSelect(), new QFilter[]{qFilter});
|
|
|
+ if(!query.isEmpty()){
|
|
|
+ // 按单位分组并汇总任期激励金额
|
|
|
+ return query.stream()
|
|
|
+ .collect(Collectors.groupingBy(
|
|
|
+ obj -> obj.getLong(String.join(".", FormConstant.NCKD_ENTRYENTITY, MasConstant.NCKD_PAYUNIT, FormConstant.ID_KEY)),
|
|
|
+ Collectors.reducing(
|
|
|
+ BigDecimal.ZERO,
|
|
|
+ obj -> obj.getBigDecimal(String.join(".", FormConstant.NCKD_ENTRYENTITY, MasConstant.NCKD_TOTALBONUSAMT)),
|
|
|
+ BigDecimal::add
|
|
|
+ )
|
|
|
+ ));
|
|
|
+ }else{
|
|
|
+ return new HashMap<>();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 按单位汇总任期激励金额
|
|
|
+ * @param year 年份
|
|
|
+ * @param unitIds 单位ID列表
|
|
|
+ * @return 每个单位的任期激励总额映射
|
|
|
+ */
|
|
|
+ /*private Map<Long, BigDecimal> sumTermBonusByUnit1(Date year, List<Long> unitIds){
|
|
|
+ SWCHelper.querySalaryList(unitPersonMap.keySet(), beginDate, endDate, "-1")
|
|
|
+ }*/
|
|
|
+
|
|
|
+ class Result {
|
|
|
+ /** 负责人累计平均人数 */
|
|
|
+ public BigDecimal respAvgNum;
|
|
|
+ /** 负责人薪酬合计 */
|
|
|
+ public BigDecimal resPwgTtl;
|
|
|
+ /** 专务、巡察专员累计平均人数 */
|
|
|
+ public BigDecimal specInspAvgNum;
|
|
|
+ /** 专务、巡察专员薪酬合计 */
|
|
|
+ public BigDecimal specInspWgTtl;
|
|
|
+
|
|
|
+ public void setRespAvgNum(BigDecimal respAvgNum) {
|
|
|
+ this.respAvgNum = respAvgNum;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setResPwgTtl(BigDecimal resPwgTtl) {
|
|
|
+ this.resPwgTtl = resPwgTtl;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setSpecInspAvgNum(BigDecimal specInspAvgNum) {
|
|
|
+ this.specInspAvgNum = specInspAvgNum;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setSpecInspWgTtl(BigDecimal specInspWgTtl) {
|
|
|
+ this.specInspWgTtl = specInspWgTtl;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|