|
@@ -0,0 +1,171 @@
|
|
|
|
|
+package nckd.jxccl.swc.init.plugin.form;
|
|
|
|
|
+
|
|
|
|
|
+import kd.bos.dataentity.entity.DynamicObject;
|
|
|
|
|
+import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
|
|
|
+import kd.bos.entity.datamodel.events.BizDataEventArgs;
|
|
|
|
|
+import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
|
|
|
|
+import kd.bos.form.control.Label;
|
|
|
|
|
+import kd.bos.form.field.DateRangeEdit;
|
|
|
|
|
+import kd.bos.form.plugin.AbstractMobFormPlugin;
|
|
|
|
|
+import kd.bos.orm.query.QCP;
|
|
|
|
|
+import kd.bos.orm.query.QFilter;
|
|
|
|
|
+import kd.bos.servicehelper.user.UserServiceHelper;
|
|
|
|
|
+import kd.sdk.plugin.Plugin;
|
|
|
|
|
+import nckd.jxccl.base.swc.helper.SWCHelper;
|
|
|
|
|
+import nckd.jxccl.swc.constants.SwcConstant;
|
|
|
|
|
+
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
|
|
+import java.util.*;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 动态表单插件(移动端)
|
|
|
|
|
+ */
|
|
|
|
|
+public class empSalaryQueryMobFormPlugin extends AbstractMobFormPlugin implements Plugin {
|
|
|
|
|
+
|
|
|
|
|
+ private static final String KEY_LAB_EMP_NAME = "nckd_employee";
|
|
|
|
|
+ private static final String KEY_LAB_EMP_DESCRIPTION = "nckd_desc";
|
|
|
|
|
+ private static final String KEY_LAB_REALAMT = "nckd_realamt";
|
|
|
|
|
+ private static final String KEY_LAB_GROSSAMT = "nckd_grossamt";
|
|
|
|
|
+ private static String KEY_STARTDATE = null;
|
|
|
|
|
+ private static String KEY_ENDDATE = null;
|
|
|
|
|
+ private static String KEY_META_PERUSER = "hrpi_personuserrel";
|
|
|
|
|
+ private static Long KEY_EMPID = 0L;
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void createNewData(BizDataEventArgs e) {
|
|
|
|
|
+ super.createNewData(e);
|
|
|
|
|
+ DateRangeEdit dateRangeEdit = this.getView().getControl("nckd_daterangefield");
|
|
|
|
|
+ KEY_STARTDATE = dateRangeEdit.getStartDateFieldKey();
|
|
|
|
|
+ KEY_ENDDATE = dateRangeEdit.getEndDateFieldKey();
|
|
|
|
|
+
|
|
|
|
|
+ this.getModel().setValue(KEY_STARTDATE, new Date());
|
|
|
|
|
+
|
|
|
|
|
+ // 设置最大日期为上个月
|
|
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
|
|
+ calendar.setTime(new Date());
|
|
|
|
|
+ calendar.add(Calendar.MONTH, -1);
|
|
|
|
|
+ Date lastMonthDate = calendar.getTime();
|
|
|
|
|
+
|
|
|
|
|
+ this.getModel().setValue(KEY_ENDDATE, lastMonthDate);
|
|
|
|
|
+
|
|
|
|
|
+ Long userId = UserServiceHelper.getCurrentUserId();
|
|
|
|
|
+ //DynamicObject userDyn= SWCHelper.queryOne("bos_user", userId);
|
|
|
|
|
+ this.getModel().setValue("nckd_user", userId);
|
|
|
|
|
+ DynamicObject personUserDyns = SWCHelper.queryOne(KEY_META_PERUSER, "employee.id","user",userId);
|
|
|
|
|
+
|
|
|
|
|
+ KEY_EMPID = personUserDyns.getLong("employee.id");
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void afterBindData(EventObject e) {
|
|
|
|
|
+ super.afterBindData(e);
|
|
|
|
|
+ showData();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void propertyChanged(PropertyChangedArgs e) {
|
|
|
|
|
+ super.propertyChanged(e);
|
|
|
|
|
+ String fieldKey = e.getProperty().getName();
|
|
|
|
|
+ if (fieldKey.equals("nckd_daterangefield")){
|
|
|
|
|
+ // TODO 在此添加业务逻辑
|
|
|
|
|
+ }
|
|
|
|
|
+ if (fieldKey.equals("nckd_type")){
|
|
|
|
|
+ // TODO 在此添加业务逻辑
|
|
|
|
|
+ //e.getChangeSet()[0].getNewValue() ;
|
|
|
|
|
+ //String value = (String)this.getModel().getValue(fieldKey);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 显示薪酬数据
|
|
|
|
|
+ * caltask.paydate 预计支付日期 发放口径
|
|
|
|
|
+ * caltask.payrolldate 薪资所属年月 统计口径
|
|
|
|
|
+ */
|
|
|
|
|
+ public void showData() {
|
|
|
|
|
+ // 获取单据头日期范围,开始时间、结束时间
|
|
|
|
|
+ Date startdate = (Date) this.getModel().getValue(KEY_STARTDATE);
|
|
|
|
|
+ Date enddate = (Date) this.getModel().getValue(KEY_ENDDATE);
|
|
|
|
|
+ String type = (String)this.getModel().getValue("nckd_type");
|
|
|
|
|
+ //SimpleDateFormat df = new SimpleDateFormat("yyyy-MM");
|
|
|
|
|
+ // 获取核算列表信息
|
|
|
|
|
+ QFilter filter = new QFilter("calpersonid", QCP.equals, 2331344996847852544L);
|
|
|
|
|
+ if(type.equals("10")){
|
|
|
|
|
+ filter.and("caltask.paydate", QCP.large_equals, startdate);
|
|
|
|
|
+ filter.and("caltask.paydate", QCP.less_equals, enddate);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ filter.and("caltask.payrolldate", QCP.large_equals, startdate);
|
|
|
|
|
+ filter.and("caltask.payrolldate", QCP.less_equals, enddate);
|
|
|
|
|
+ }
|
|
|
|
|
+ filter.and("hsas_caltableentry.calamountvalue", QCP.large_than, 0);
|
|
|
|
|
+ String selectFields = "calpersonid,hsas_caltableentry.salaryitem.number,hsas_caltableentry.salaryitem.name,hsas_caltableentry.calamountvalue";
|
|
|
|
|
+ DynamicObjectCollection calTableDyns = SwcConstant.CALTABLE_ENTITY.queryOriginalCollection(selectFields, new QFilter[]{filter});
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ DynamicObject empDyn= SWCHelper.queryOne("hrpi_employee", 2331344996847852544L);
|
|
|
|
|
+
|
|
|
|
|
+ Label label = this.getView().getControl(KEY_LAB_EMP_NAME);
|
|
|
|
|
+ label.setText(empDyn.getString("name"));
|
|
|
|
|
+
|
|
|
|
|
+ Map<String, BigDecimal> calItemAmt = getCalItemAmt(calTableDyns);
|
|
|
|
|
+ Map<String, String> itemName = getItemName(calTableDyns);
|
|
|
|
|
+ if(calItemAmt != null && calItemAmt.size() > 0 && itemName != null && calItemAmt.size() > 0){
|
|
|
|
|
+ Label label1 = this.getView().getControl(KEY_LAB_REALAMT);
|
|
|
|
|
+ label1.setText(calItemAmt.get("JT_477").toString()); //实发合计
|
|
|
|
|
+
|
|
|
|
|
+ Label label2 = this.getView().getControl(KEY_LAB_GROSSAMT);
|
|
|
|
|
+ label2.setText(calItemAmt.get("JT_283").toString());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 按 salaryitem.number 分组汇总金额
|
|
|
|
|
+ * @param calTableDyns
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public Map<String, BigDecimal> getCalItemAmt(DynamicObjectCollection calTableDyns) {
|
|
|
|
|
+ // 按 salaryitem.number 分组汇总金额
|
|
|
|
|
+ Map<String, BigDecimal> groupedAmounts = new HashMap<>();
|
|
|
|
|
+
|
|
|
|
|
+ for (DynamicObject item : calTableDyns) {
|
|
|
|
|
+ String salaryItemNumber = item.getString("hsas_caltableentry.salaryitem.number");
|
|
|
|
|
+ BigDecimal amount = item.getBigDecimal("hsas_caltableentry.calamountvalue");
|
|
|
|
|
+ if (amount == null) {
|
|
|
|
|
+ amount = BigDecimal.ZERO;
|
|
|
|
|
+ }else{
|
|
|
|
|
+ amount = amount.setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (salaryItemNumber != null) {
|
|
|
|
|
+ groupedAmounts.put(salaryItemNumber, groupedAmounts.getOrDefault(salaryItemNumber, BigDecimal.ZERO) .add(amount != null ? amount : BigDecimal.ZERO));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if(groupedAmounts.size() > 0){
|
|
|
|
|
+ return groupedAmounts;
|
|
|
|
|
+ }
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 按 salaryitem.number 获取名称
|
|
|
|
|
+ * @param calTableDyns
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public Map<String, String> getItemName(DynamicObjectCollection calTableDyns) {
|
|
|
|
|
+ Map<String, String> itemNameMap = new HashMap<>();
|
|
|
|
|
+ for (DynamicObject item : calTableDyns) {
|
|
|
|
|
+ String salaryItemNumber = item.getString("hsas_caltableentry.salaryitem.number");
|
|
|
|
|
+ String salaryItemName = item.getString("hsas_caltableentry.salaryitem.name");
|
|
|
|
|
+
|
|
|
|
|
+ if (salaryItemNumber != null) {
|
|
|
|
|
+ itemNameMap.put(salaryItemNumber, salaryItemName);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if(itemNameMap.size() > 0){
|
|
|
|
|
+ return itemNameMap;
|
|
|
|
|
+ }
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+}
|