|
|
@@ -1,18 +1,23 @@
|
|
|
package uzi9.uzi9q.opmcepaq.epaq.plugin.form.zd;
|
|
|
|
|
|
+import com.grapecity.documents.excel.H;
|
|
|
+import kd.bos.bill.BillShowParameter;
|
|
|
import kd.bos.dataentity.OperateOption;
|
|
|
import kd.bos.dataentity.entity.DynamicObject;
|
|
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
|
+import kd.bos.dataentity.entity.LocaleString;
|
|
|
import kd.bos.dataentity.entity.OrmLocaleValue;
|
|
|
import kd.bos.entity.datamodel.ListSelectedRow;
|
|
|
import kd.bos.entity.datamodel.ListSelectedRowCollection;
|
|
|
import kd.bos.entity.operate.result.OperationResult;
|
|
|
+import kd.bos.entity.property.BillTypeProp;
|
|
|
import kd.bos.form.*;
|
|
|
+import kd.bos.form.container.Tab;
|
|
|
import kd.bos.form.control.Control;
|
|
|
import kd.bos.form.control.events.ItemClickEvent;
|
|
|
-import kd.bos.form.events.ClosedCallBackEvent;
|
|
|
-import kd.bos.form.events.SetFilterEvent;
|
|
|
+import kd.bos.form.events.*;
|
|
|
import kd.bos.list.BillList;
|
|
|
+import kd.bos.list.IListColumn;
|
|
|
import kd.bos.list.ListShowParameter;
|
|
|
import kd.bos.list.plugin.AbstractListPlugin;
|
|
|
import kd.bos.orm.query.QCP;
|
|
|
@@ -22,55 +27,68 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|
|
import kd.bos.servicehelper.operation.DeleteServiceHelper;
|
|
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
|
|
import kd.sdk.plugin.Plugin;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.EventObject;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* 评估对象标准单据列表插件
|
|
|
*/
|
|
|
public class EvaluationObjectListPlugin extends AbstractListPlugin implements Plugin {
|
|
|
|
|
|
+ //评估对象表单标识
|
|
|
+ private static final String EVALUATION_OBJECT = "uzi9_evaluation_object";
|
|
|
+ //考核关系表单标识
|
|
|
+ private static final String ASSESSMENT_GX = "uzi9_assessment_gx";
|
|
|
+ //人员表单标识
|
|
|
+ private static final String BOS_USER = "bos_user";
|
|
|
+ //绩效目标标识
|
|
|
+ private static final String PERF_TARGET = "uzi9_perftarget";
|
|
|
+
|
|
|
+ private static final Logger log = LoggerFactory.getLogger(EvaluationObjectListPlugin.class);
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
public void setFilter(SetFilterEvent e) {
|
|
|
super.setFilter(e);
|
|
|
- //添加过滤条件,只能看见当前考核下的评估对象
|
|
|
+ //添加过滤条件,只能看见当前考核下的评估对象(后期放开注解)
|
|
|
Object ActivityId = this.getView().getFormShowParameter().getCustomParam("ActivityId");
|
|
|
- /*QFilter qFilter = new QFilter("uzi9_assessment_activity.id", QCP.equals, ActivityId);
|
|
|
+/* QFilter qFilter = new QFilter("uzi9_assessment_activity.id", QCP.equals, ActivityId);
|
|
|
e.getQFilters().add(qFilter);*/
|
|
|
e.setOrderBy("billno asc");
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void afterBindData(EventObject e) {
|
|
|
+ super.afterBindData(e);
|
|
|
+ //设置标题为活动名称
|
|
|
+ Object activityName = this.getView().getFormShowParameter().getCustomParam("ActivityName");
|
|
|
+ if (activityName != null) {
|
|
|
+ LocaleString localeTitle = new LocaleString(activityName.toString());
|
|
|
+ this.getView().setFormTitle(localeTitle);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void itemClick(ItemClickEvent evt) {
|
|
|
super.itemClick(evt);
|
|
|
String itemKey = evt.getItemKey();
|
|
|
if (itemKey.equals("uzi9_new")) {
|
|
|
- ListShowParameter parameter = new ListShowParameter();
|
|
|
- //设置实体id
|
|
|
- parameter.setBillFormId("bos_user");
|
|
|
- //设置选择状态
|
|
|
- parameter.setLookUp(true);
|
|
|
- //设置展开
|
|
|
- parameter.getOpenStyle().setShowType(ShowType.Modal);
|
|
|
- //设置模版id
|
|
|
- parameter.setFormId("bos_usertreelistf7");
|
|
|
- //设置回调
|
|
|
- parameter.setCloseCallBack(new CloseCallBack(this, "add"));
|
|
|
- // 设置展开宽度,高度
|
|
|
- StyleCss styleCss = new StyleCss();
|
|
|
- styleCss.setWidth("800");
|
|
|
- styleCss.setHeight("500");
|
|
|
- parameter.getOpenStyle().setInlineStyleCss(styleCss);
|
|
|
- //跳转
|
|
|
- getView().showForm(parameter);
|
|
|
+ //跳转bos_user人员
|
|
|
+ bosUserJump("add");
|
|
|
}
|
|
|
|
|
|
//从其他考核活动进行新增
|
|
|
if (itemKey.equals("uzi9_pull")) {
|
|
|
ListShowParameter parameter = new ListShowParameter();
|
|
|
//设置实体id
|
|
|
- parameter.setBillFormId("bos_user");
|
|
|
+ parameter.setBillFormId(BOS_USER);
|
|
|
//设置选择状态
|
|
|
parameter.setLookUp(true);
|
|
|
//设置展开
|
|
|
@@ -87,83 +105,199 @@ public class EvaluationObjectListPlugin extends AbstractListPlugin implements Pl
|
|
|
//跳转
|
|
|
getView().showForm(parameter);
|
|
|
}
|
|
|
+
|
|
|
//删除效验
|
|
|
if (itemKey.equals("uzi9_delete")) {
|
|
|
+ ConfirmCallBackListener callback = new ConfirmCallBackListener("delete", this);
|
|
|
+ this.getView().showConfirm("删除选中的评估对象后绩效目标及评估信息将无法恢复,是否确认删除?", MessageBoxOptions.YesNo, callback);
|
|
|
+ }
|
|
|
|
|
|
+ //修改目标确认人
|
|
|
+ if (itemKey.equals("uzi9_confirm")) {
|
|
|
+ //获取选择行的id主键
|
|
|
+ BillList billList = this.getControl(AbstractListPlugin.BILLLISTID);
|
|
|
+ Object[] primaryKeyValues = billList.getSelectedRows().getPrimaryKeyValues();
|
|
|
+ if (primaryKeyValues.length == 0) {
|
|
|
+ this.getView().showTipNotification("请至少选择一行数据");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (primaryKeyValues.length != 1) {
|
|
|
+ this.getView().showTipNotification("请只选择一位人员进行目标确认人的修改");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //跳转bos_user人员
|
|
|
+ bosUserJump("confirmModify");
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新评估对象人员信息
|
|
|
+ if (itemKey.equals("uzi9_bos_update")) {
|
|
|
+ BillList billList = this.getControl(AbstractListPlugin.BILLLISTID);
|
|
|
+ Object[] primaryKeyValues = billList.getSelectedRows().getPrimaryKeyValues();
|
|
|
+ if (primaryKeyValues.length == 0) {
|
|
|
+ this.getView().showTipNotification("请选择需要更新的数据");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //更新
|
|
|
+ bosUpdate(primaryKeyValues);
|
|
|
+ }
|
|
|
+
|
|
|
+ //导入目标确认人
|
|
|
+ if (itemKey.equals("uzi9_target")) {
|
|
|
+ ListShowParameter parameter = new ListShowParameter();
|
|
|
+ parameter.setFormId("bos_list");
|
|
|
+ parameter.setBillFormId("uzi9_assessment_gx");
|
|
|
+ parameter.getOpenStyle().setShowType(ShowType.Modal);
|
|
|
+ parameter.setCustomParam("importdata", "importdata");
|
|
|
+ this.getView().showForm(parameter);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //提示框回调
|
|
|
+ @Override
|
|
|
+ public void confirmCallBack(MessageBoxClosedEvent messageBoxClosedEvent) {
|
|
|
+ super.confirmCallBack(messageBoxClosedEvent);
|
|
|
+ //评估对象实际删除业务逻辑,顺带把考核关系也一起删除
|
|
|
+ if ("delete".equals(messageBoxClosedEvent.getCallBackId()) && messageBoxClosedEvent.getResult() == MessageBoxResult.Yes) {
|
|
|
+ //获取列表参数
|
|
|
+ BillList billList = this.getControl(AbstractListPlugin.BILLLISTID);
|
|
|
+ ListSelectedRowCollection selectedRows = billList.getSelectedRows();
|
|
|
+ Object[] primaryKeyValues = selectedRows.getPrimaryKeyValues();
|
|
|
+ if (primaryKeyValues.length <= 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ int success = 0;
|
|
|
+ int failure = 0;
|
|
|
+ QFilter qFilter = new QFilter("id", QFilter.in, primaryKeyValues);
|
|
|
+ DynamicObject[] load = BusinessDataServiceHelper.load(EVALUATION_OBJECT, "id,uzi9_progress,uzi9_employeeid", new QFilter[]{qFilter});
|
|
|
+ for (DynamicObject dynamicObject : load) {
|
|
|
+ String progress = dynamicObject.get("uzi9_progress").toString();
|
|
|
+ if (progress.equals("1")) {
|
|
|
+ success++;
|
|
|
+ //删除评估对象
|
|
|
+ QFilter qFilterS = new QFilter("id", QFilter.equals, dynamicObject.get("id"));
|
|
|
+ DeleteServiceHelper.delete(EVALUATION_OBJECT, new QFilter[]{qFilterS});
|
|
|
+ //删除考核关系(通过关联的评估对象进行删除)
|
|
|
+ QFilter qFilter2 = new QFilter("uzi9_evaluation_object", QFilter.equals, dynamicObject.get("id"));
|
|
|
+ DeleteServiceHelper.delete(ASSESSMENT_GX, new QFilter[]{qFilter2});
|
|
|
+ //删除绩效目标(通过关联的评估对象进行删除)
|
|
|
+ DeleteServiceHelper.delete(PERF_TARGET, new QFilter[]{new QFilter("uzi9_evaobj", QFilter.equals, dynamicObject.get("id"))});
|
|
|
+ } else {
|
|
|
+ failure++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.getView().showMessage("成功删除个数:" + success + " --- 失败删除的个数:" + failure);
|
|
|
+ this.getView().showTipNotification("考核进度为“未开始”的评估对象才能删除。已完成考核评估对象不可以删除");
|
|
|
+ this.getView().updateView();
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ //动态表单回调
|
|
|
@Override
|
|
|
public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
|
|
|
super.closedCallBack(closedCallBackEvent);
|
|
|
// 接收回调
|
|
|
//获取回调标识
|
|
|
String actionId = closedCallBackEvent.getActionId();
|
|
|
+
|
|
|
+ //新增评估对象
|
|
|
if (actionId.equals("add")) {
|
|
|
- if (closedCallBackEvent.getReturnData() instanceof ListSelectedRowCollection) {
|
|
|
- ListSelectedRowCollection selectCollections = (ListSelectedRowCollection) closedCallBackEvent.getReturnData();
|
|
|
- ArrayList list = new ArrayList();
|
|
|
- for (ListSelectedRow row : selectCollections) {
|
|
|
- // list存储id
|
|
|
- list.add(row.getPrimaryKeyValue());
|
|
|
- }
|
|
|
- // 构造QFilte
|
|
|
- QFilter qFilter = new QFilter("id", QFilter.equals, list.get(0));
|
|
|
- for (int i = 1; i < list.size(); i++) {
|
|
|
- qFilter = qFilter.or(new QFilter("id", QFilter.equals, list.get(i)));
|
|
|
- }
|
|
|
- // 将选中的id对应的数据从数据库加载出来
|
|
|
- DynamicObject[] load = BusinessDataServiceHelper.load("bos_user", "id,name,number,entryentity,startdate,entryentity.post,entryentity.dpt,entryentity.ispartjob", qFilter.toArray());
|
|
|
- for (DynamicObject dynamicObject : load) {
|
|
|
- //新增
|
|
|
- userAddOne(dynamicObject);
|
|
|
- }
|
|
|
+ DynamicObject[] dynamicObjects = userCallback(closedCallBackEvent);
|
|
|
+ if (dynamicObjects == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ for (DynamicObject dynamicObject : dynamicObjects) {
|
|
|
+ //新增
|
|
|
+ userAddOne(dynamicObject);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ //从其他评估对象引入进行新增
|
|
|
if (actionId.equals("pull")) {
|
|
|
- if (closedCallBackEvent.getReturnData() instanceof ListSelectedRowCollection) {
|
|
|
- ListSelectedRowCollection selectCollections = (ListSelectedRowCollection) closedCallBackEvent.getReturnData();
|
|
|
- ArrayList list = new ArrayList();
|
|
|
- for (ListSelectedRow row : selectCollections) {
|
|
|
- // list存储id
|
|
|
- list.add(row.getPrimaryKeyValue());
|
|
|
- }
|
|
|
- // 构造QFilte
|
|
|
- QFilter qFilter = new QFilter("id", QFilter.equals, list.get(0));
|
|
|
- for (int i = 1; i < list.size(); i++) {
|
|
|
- qFilter = qFilter.or(new QFilter("id", QFilter.equals, list.get(i)));
|
|
|
- }
|
|
|
- // 将选中的id对应的数据从数据库加载出来
|
|
|
- DynamicObject[] load = BusinessDataServiceHelper.load("bos_user", "id,name,number", qFilter.toArray());
|
|
|
- //新增
|
|
|
- userAddTwo(load);
|
|
|
+ Map<String, Object> userMap = userCallbackTwo(closedCallBackEvent);
|
|
|
+ if (userMap == null) {
|
|
|
+ return;
|
|
|
}
|
|
|
+ //引入新增
|
|
|
+ userAddTwo(userMap);
|
|
|
}
|
|
|
|
|
|
+ //修改目标确认人
|
|
|
+ if (actionId.equals("confirmModify")) {
|
|
|
+ DynamicObject[] dynamicObjects = userCallback(closedCallBackEvent);
|
|
|
+ if (dynamicObjects == null){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (dynamicObjects.length != 1) {
|
|
|
+ this.getView().showTipNotification("目标确认人,只能选择一个");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //修改确认人
|
|
|
+ DynamicObject dynamicObject = dynamicObjects[0];
|
|
|
+ confirmModify(dynamicObject);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //回调获取人员数据
|
|
|
+ private DynamicObject[] userCallback(ClosedCallBackEvent closedCallBackEvent) {
|
|
|
+ if (closedCallBackEvent.getReturnData() instanceof ListSelectedRowCollection) {
|
|
|
+ ListSelectedRowCollection selectCollections = (ListSelectedRowCollection) closedCallBackEvent.getReturnData();
|
|
|
+ Object[] primaryKeyValues = selectCollections.getPrimaryKeyValues();
|
|
|
+ QFilter qFilter = new QFilter("id", QFilter.in, primaryKeyValues);
|
|
|
+ // 将选中的id对应的数据从数据库加载出来
|
|
|
+ DynamicObject[] load = BusinessDataServiceHelper.load(BOS_USER, "id,name,number,entryentity,startdate,entryentity.post,entryentity.dpt,entryentity.ispartjob", new QFilter[]{qFilter});
|
|
|
+ return load;
|
|
|
+ }
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
|
|
|
+ //专门为引入所做的获取人员数据(包含考核活动)
|
|
|
+ private Map<String, Object> userCallbackTwo(ClosedCallBackEvent event) {
|
|
|
+ if (event.getReturnData() instanceof Map) {
|
|
|
+ Map<String, Object> map = (Map<String, Object>) event.getReturnData();
|
|
|
+ //获取活动id
|
|
|
+ Object id = map.get("id");
|
|
|
+ ListSelectedRowCollection row = (ListSelectedRowCollection) map.get("row");
|
|
|
+ //获取选择行参数
|
|
|
+ Object[] primaryKeyValues = row.getPrimaryKeyValues();
|
|
|
+ QFilter qFilter = new QFilter("id", QFilter.in, primaryKeyValues);
|
|
|
+ // 将选中的id对应的数据从数据库加载出来
|
|
|
+ DynamicObject[] load = BusinessDataServiceHelper.load(BOS_USER, "id,name,number,entryentity,startdate,entryentity.post,entryentity.dpt,entryentity.ispartjob", new QFilter[]{qFilter});
|
|
|
+ Map<String, Object> userMap = new HashMap<>();
|
|
|
+ userMap.put("activityId", id);
|
|
|
+ userMap.put("load", load);
|
|
|
+ return userMap;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
- //添加方法一(无论用什么方法一切的前提是拿到员工工号,无论是一个还是一群)
|
|
|
+
|
|
|
+ //添加方法一(评估对象-考核关系-绩效目标)
|
|
|
public void userAddOne(DynamicObject useradd) {
|
|
|
//获取用户工号
|
|
|
Object employeeId = useradd.get("number");
|
|
|
+ //获取通过跳转传过来的活动id并查询对应的活动
|
|
|
+ Object activityId = this.getView().getFormShowParameter().getCustomParam("ActivityId");
|
|
|
//判断条件是否有工号相同的参数
|
|
|
QFilter qFilter = new QFilter("uzi9_employeeid", QFilter.equals, employeeId);
|
|
|
+ QFilter qFilter1 = new QFilter("uzi9_assessment_activity", QFilter.equals, activityId);
|
|
|
//对评估对象表进行筛选
|
|
|
- DynamicObject employeeIdCheck = BusinessDataServiceHelper.loadSingle("uzi9_evaluation_object", "uzi9_employeeid", new QFilter[]{qFilter});
|
|
|
+ DynamicObject employeeIdCheck = BusinessDataServiceHelper.loadSingle(EVALUATION_OBJECT, "uzi9_employeeid", new QFilter[]{qFilter.and(qFilter1)});
|
|
|
|
|
|
- //获取通过跳转传过来的活动id并查询对应的活动
|
|
|
- Object activityId = this.getView().getFormShowParameter().getCustomParam("ActivityId");
|
|
|
+ if (activityId == null) {
|
|
|
+ this.getView().showTipNotification("错误进入,当前没有考核活动id,请从考核活动进入");
|
|
|
+ return;
|
|
|
+ }
|
|
|
DynamicObject assessment = BusinessDataServiceHelper.loadSingle("uzi9_assessment_activity", "id", new QFilter[]{new QFilter("id", QFilter.equals, activityId)});
|
|
|
|
|
|
//判断是否为空
|
|
|
if (employeeIdCheck != null) {
|
|
|
- this.getView().showErrorNotification("员工:" + useradd.get("name") + "已经加入了本考核活动或其他考核活动");
|
|
|
+ this.getView().showErrorNotification("员工:" + useradd.get("name") + "已经加入了本考核活动");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- DynamicObject dynamicObject = BusinessDataServiceHelper.newDynamicObject("uzi9_evaluation_object");
|
|
|
+ DynamicObject dynamicObject = BusinessDataServiceHelper.newDynamicObject(EVALUATION_OBJECT);
|
|
|
//语言设置默认为zh_CN
|
|
|
Object name = getDefaultValue(useradd.get("name"));
|
|
|
//姓名
|
|
|
@@ -196,10 +330,6 @@ public class EvaluationObjectListPlugin extends AbstractListPlugin implements Pl
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- /*//组织
|
|
|
- dynamicObject.set("uzi9_orgfield", useradd.get("组织标识"));
|
|
|
- //岗位
|
|
|
- dynamicObject.set("uzi9_position", useradd.get("岗位标识"));*/
|
|
|
//入职日期
|
|
|
dynamicObject.set("uzi9_date_joining", useradd.get("startdate"));
|
|
|
//考核进度(默认为:未开始 - 1)
|
|
|
@@ -212,42 +342,237 @@ public class EvaluationObjectListPlugin extends AbstractListPlugin implements Pl
|
|
|
dynamicObject.set("enable", 1);
|
|
|
//数据状态
|
|
|
dynamicObject.set("status", "A");
|
|
|
- OperationResult result = SaveServiceHelper.saveOperate("uzi9_evaluation_object", new DynamicObject[]{dynamicObject}, OperateOption.create());
|
|
|
+
|
|
|
+ //新增评估对象
|
|
|
+ OperationResult result = SaveServiceHelper.saveOperate(EVALUATION_OBJECT, new DynamicObject[]{dynamicObject}, OperateOption.create());
|
|
|
+ //新增考核关系(需要与评估对象链接,更新评估对象)
|
|
|
+ HashMap<String, DynamicObject> relationship = relationship(dynamicObject);
|
|
|
+ relationship.put(BOS_USER, useradd);
|
|
|
+ //通过relationship的(考核关系,评估对象,用户)新增绩效目标
|
|
|
+ addTarget(relationship);
|
|
|
+
|
|
|
this.getView().updateView();
|
|
|
if (result.isSuccess()) {
|
|
|
- this.getView().showSuccessNotification("新增数据成功");
|
|
|
+ this.getView().showSuccessNotification("新增评估对象数据成功");
|
|
|
this.getView().invokeOperation("refresh");
|
|
|
} else {
|
|
|
- this.getView().showErrorNotification("新增数据失败");
|
|
|
+ this.getView().showErrorNotification("新增评估对象数据失败");
|
|
|
this.getView().invokeOperation("refresh");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //添加方法二(沟通bos_user中获取工号,修改评估对象的考核活动进行新增)
|
|
|
- public void userAddTwo(DynamicObject[] useradds) {
|
|
|
+ //添加方法二引入(评估对象-考核关系-绩效目标)
|
|
|
+ public void userAddTwo(Map<String, Object> userMap) {
|
|
|
+ DynamicObject[] useradds = (DynamicObject[]) userMap.get("load");
|
|
|
//获取活动id活动活动对象
|
|
|
for (DynamicObject useradd : useradds) {
|
|
|
Object number = useradd.get("number");
|
|
|
- //通过工号获取评估对象
|
|
|
- DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("uzi9_evaluation_object", "id,uzi9_assessment_activity,name", new QFilter[]{new QFilter("uzi9_employeeid", QFilter.equals, number)});
|
|
|
- if (dynamicObject == null) {
|
|
|
+
|
|
|
+ //通过工号和活id获取评估对象(不是当前考核活动)
|
|
|
+ DynamicObject evaluation = BusinessDataServiceHelper.loadSingle(EVALUATION_OBJECT, "id,uzi9_assessment_activity,name,uzi9_assessment_gx", new QFilter[]{new QFilter("uzi9_employeeid", QFilter.equals, number).and(new QFilter("uzi9_assessment_activity", QCP.equals, userMap.get("activityId")))});
|
|
|
+ //获取评估对象下的考核关系
|
|
|
+ DynamicObject assessment = BusinessDataServiceHelper.loadSingle(ASSESSMENT_GX, "id,uzi9_assessment_activity", new QFilter[]{new QFilter("uzi9_evaluation_object", QCP.equals, evaluation.get("id"))});
|
|
|
+ //获取绩效目标
|
|
|
+ DynamicObject perTar = BusinessDataServiceHelper.loadSingle(PERF_TARGET, "id,uzi9_activity", new QFilter[]{new QFilter("uzi9_evaobj", QCP.equals, evaluation.get("id"))});
|
|
|
+
|
|
|
+ if (evaluation == null || assessment == null) {
|
|
|
this.getView().showTipNotification("当前员工没有加入任何考核活动,请通过新增进行添加");
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
//获取当下的考核活动id
|
|
|
Object activityId = this.getView().getFormShowParameter().getCustomParam("ActivityId");
|
|
|
+ if (activityId == null) {
|
|
|
+ this.getView().showTipNotification("当前进入错误没有考核活动id");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (activityId.equals(userMap.get("activityId"))) {
|
|
|
+ this.getView().showTipNotification("当前考核活动与引入考核活动一致,请重新添加");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ //通过工号和活动id获取评估对象(是当前考核活动)
|
|
|
+ DynamicObject evaluationPd = BusinessDataServiceHelper.loadSingle(EVALUATION_OBJECT, "id,uzi9_assessment_activity,name,uzi9_assessment_gx", new QFilter[]{new QFilter("uzi9_employeeid", QFilter.equals, number).and(new QFilter("uzi9_assessment_activity", QCP.equals, activityId))});
|
|
|
+ if (evaluationPd != null) {
|
|
|
+ this.getView().showTipNotification("当前人员已经进入该考核活动");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
//查询考核活动
|
|
|
- DynamicObject assessment = BusinessDataServiceHelper.loadSingle("uzi9_assessment_activity", "id", new QFilter[]{new QFilter("id", QFilter.equals, activityId)});
|
|
|
- //修改评价对象的考核活动
|
|
|
- dynamicObject.set("uzi9_assessment_activity", assessment);
|
|
|
- //更新数据
|
|
|
- OperationResult result = SaveServiceHelper.saveOperate("uzi9_evaluation_object", new DynamicObject[]{dynamicObject}, OperateOption.create());
|
|
|
+ DynamicObject assessmentHd = BusinessDataServiceHelper.loadSingle("uzi9_assessment_activity", "id", new QFilter[]{new QFilter("id", QFilter.equals, activityId)});
|
|
|
+
|
|
|
+ //修改评估对象的考核活动
|
|
|
+ evaluation.set("uzi9_assessment_activity", assessmentHd);
|
|
|
+ //修改考核关系的考核活动
|
|
|
+ assessment.set("uzi9_assessment_activity", assessmentHd);
|
|
|
+ //修改绩效目标的考核活动
|
|
|
+ perTar.set("uzi9_activity", assessmentHd);
|
|
|
+
|
|
|
+
|
|
|
+ //更新考核对象
|
|
|
+ OperationResult result = SaveServiceHelper.saveOperate(EVALUATION_OBJECT, new DynamicObject[]{evaluation}, OperateOption.create());
|
|
|
+ //更新考核关系(后续有了上级对象需要进行修改)
|
|
|
+ SaveServiceHelper.saveOperate(ASSESSMENT_GX, new DynamicObject[]{assessment});
|
|
|
+ //更新绩效目标
|
|
|
+ SaveServiceHelper.saveOperate(PERF_TARGET, new DynamicObject[]{perTar});
|
|
|
+
|
|
|
+
|
|
|
if (result.isSuccess()) {
|
|
|
- this.getView().showSuccessNotification(dynamicObject.get("name") + "转移成功");
|
|
|
+ this.getView().showSuccessNotification(evaluation.get("name") + " 考核活动转移成功");
|
|
|
} else {
|
|
|
- this.getView().invokeOperation(dynamicObject.get("name") + "转移失败");
|
|
|
+ this.getView().invokeOperation(evaluation.get("name") + "转移失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //考核关系新增(object 为评估对象的封装配置(没有准确的id))更新评估对象
|
|
|
+ public HashMap<String, DynamicObject> relationship(DynamicObject object) {
|
|
|
+ //获取当前考核活动id
|
|
|
+ Object activityId = this.getView().getFormShowParameter().getCustomParam("ActivityId");
|
|
|
+ //获取评估对象
|
|
|
+ DynamicObject evObj = BusinessDataServiceHelper.loadSingle(EVALUATION_OBJECT, "id,uzi9_assessment_gx,uzi9_orgfield,uzi9_assessment_activity,uzi9_employeeid", new QFilter[]{new QFilter("uzi9_employeeid", QFilter.equals, object.get("uzi9_employeeid")).and(new QFilter("uzi9_assessment_activity", QCP.equals, activityId))});
|
|
|
+ DynamicObject dynamicObject = BusinessDataServiceHelper.newDynamicObject(ASSESSMENT_GX);
|
|
|
+ //考核对象封装
|
|
|
+ //姓名
|
|
|
+ dynamicObject.set("name", object.get("name"));
|
|
|
+ //工号
|
|
|
+ dynamicObject.set("uzi9_employeeid", object.get("uzi9_employeeid"));
|
|
|
+ //评估对象
|
|
|
+ dynamicObject.set("uzi9_evaluation_object", evObj);
|
|
|
+ /* //直接上级 后续准备
|
|
|
+ dynamicObject.set("uzi9_direct",);
|
|
|
+ //虚线上级(可有可无)
|
|
|
+ dynamicObject.set("uzi9_nothingness",);
|
|
|
+ //间接上级
|
|
|
+ dynamicObject.set("uzi9_indirect",);*/
|
|
|
+ //目标确认人(为了方便先写死)
|
|
|
+ DynamicObject user = BusinessDataServiceHelper.loadSingle(BOS_USER, "id", new QFilter[]{new QFilter("id", QFilter.equals, 2284119514889060352L)});
|
|
|
+ dynamicObject.set("uzi9_confirm", user);
|
|
|
+ //考核活动
|
|
|
+ dynamicObject.set("uzi9_assessment_activity", object.get("uzi9_assessment_activity"));
|
|
|
+ //使用状态
|
|
|
+ dynamicObject.set("enable", 1);
|
|
|
+ //数据状态
|
|
|
+ dynamicObject.set("status", "A");
|
|
|
+ OperationResult result = SaveServiceHelper.saveOperate(ASSESSMENT_GX, new DynamicObject[]{dynamicObject}, OperateOption.create());
|
|
|
+ //获取新增的考核关系
|
|
|
+ DynamicObject assGx = BusinessDataServiceHelper.loadSingle(ASSESSMENT_GX, "id,uzi9_confirm", new QFilter[]{new QFilter("uzi9_evaluation_object,uzi9_confirm", QFilter.equals, evObj.get("id"))});
|
|
|
+ evObj.set("uzi9_assessment_gx", assGx);
|
|
|
+
|
|
|
+ //更新评估对象
|
|
|
+ SaveServiceHelper.update(new DynamicObject[]{evObj});
|
|
|
+ //获取数据库中的评估对象和考核关系(有id的)回传
|
|
|
+ HashMap<String, DynamicObject> map = new HashMap<>();
|
|
|
+ map.put(EVALUATION_OBJECT, evObj);
|
|
|
+ map.put(ASSESSMENT_GX, assGx);
|
|
|
+ if (result.isSuccess()) {
|
|
|
+ log.info("新增考核关系数据成功");
|
|
|
+ } else {
|
|
|
+ log.info("新增考核关系数据失败");
|
|
|
+ }
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ //新增绩效目标(传入评估对象和评估对象的人员信息)
|
|
|
+ public void addTarget(HashMap<String, DynamicObject> map) {
|
|
|
+ DynamicObject evaluation = map.get(EVALUATION_OBJECT);
|
|
|
+ DynamicObject assGx = map.get(ASSESSMENT_GX);
|
|
|
+ DynamicObject user = map.get(BOS_USER);
|
|
|
+
|
|
|
+ DynamicObject perTar = BusinessDataServiceHelper.newDynamicObject(PERF_TARGET);
|
|
|
+ //绩效活动
|
|
|
+ perTar.set("uzi9_activity", evaluation.get("uzi9_assessment_activity"));
|
|
|
+ //员工
|
|
|
+ perTar.set("uzi9_person", user);
|
|
|
+ //评估对象
|
|
|
+ perTar.set("uzi9_evaobj", evaluation);
|
|
|
+ //填报审批人
|
|
|
+ perTar.set("uzi9_appperson", assGx.get("uzi9_confirm"));
|
|
|
+ //填报审批状态(未启动)
|
|
|
+ perTar.set("uzi9_appstatus", "notstarted");
|
|
|
+ //数据状态
|
|
|
+ perTar.set("billstatus", "A");
|
|
|
+ //组织
|
|
|
+ perTar.set("org", evaluation.get("uzi9_orgfield"));
|
|
|
+
|
|
|
+ OperationResult result = SaveServiceHelper.saveOperate(PERF_TARGET, new DynamicObject[]{perTar}, OperateOption.create());
|
|
|
+ if (result.isSuccess()) {
|
|
|
+ log.info("新增绩效目标成功");
|
|
|
+ } else {
|
|
|
+ log.info("新增绩效目标失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //目标确认人修改(考核关系 - 绩效目标)
|
|
|
+ private void confirmModify(DynamicObject user) {
|
|
|
+ //获取选择行的id
|
|
|
+ BillList billList = this.getControl(AbstractListPlugin.BILLLISTID);
|
|
|
+ Object[] primaryKeyValues = billList.getSelectedRows().getPrimaryKeyValues();
|
|
|
+ Object primaryKeyValue = primaryKeyValues[0];
|
|
|
+
|
|
|
+ //获取评估对象下的考核关系
|
|
|
+ DynamicObject evaluation = BusinessDataServiceHelper.loadSingle(EVALUATION_OBJECT, "id,uzi9_employeeid,uzi9_assessment_gx", new QFilter[]{new QFilter("id", QFilter.equals, primaryKeyValue)});
|
|
|
+ DynamicObject assessmentGx = (DynamicObject) evaluation.get(ASSESSMENT_GX);
|
|
|
+ //通过评估对象获取绩效目标
|
|
|
+ DynamicObject petTar = BusinessDataServiceHelper.loadSingle(PERF_TARGET, "id,uzi9_appperson,uzi9_appstatus", new QFilter[]{new QFilter("uzi9_evaobj", QFilter.equals, primaryKeyValue)});
|
|
|
+
|
|
|
+
|
|
|
+ if (assessmentGx == null) {
|
|
|
+ this.getView().showErrorNotification("选择的评估对象,没有对应的考核关系,请联系开发人员");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //通过封装进行更新(考核关系)
|
|
|
+ DynamicObject assessmentGx2 = BusinessDataServiceHelper.newDynamicObject(ASSESSMENT_GX);
|
|
|
+ assessmentGx2.set("uzi9_confirm", user);
|
|
|
+ assessmentGx2.set("id", assessmentGx.get("id"));
|
|
|
+
|
|
|
+ //通过查询进行更新(绩效目标)
|
|
|
+ petTar.set("uzi9_appperson",user);
|
|
|
+
|
|
|
+ try {
|
|
|
+ SaveServiceHelper.update(new DynamicObject[]{assessmentGx2}, OperateOption.create());
|
|
|
+ SaveServiceHelper.saveOperate(PERF_TARGET,new DynamicObject[]{petTar});
|
|
|
+ this.getView().showSuccessNotification(user.get("name") + "目标确认人修改成功");
|
|
|
+ } catch (Exception e) {
|
|
|
+ this.getView().showSuccessNotification(user.get("name") + "目标确认人修改失败");
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新评估对象信息(目前更新的情况为,bos_user中的数据就是最新的,不存在历史数据)
|
|
|
+ private void bosUpdate(Object[] primaryKeyValues) {
|
|
|
+ //通过id获取评估对象
|
|
|
+ DynamicObject[] load = BusinessDataServiceHelper.load(EVALUATION_OBJECT, "id,uzi9_employeeid,uzi9_position,uzi9_orgfield", new QFilter[]{new QFilter("id", QFilter.in, primaryKeyValues)});
|
|
|
+ //遍历每一个评估对象,进行更新
|
|
|
+ for (DynamicObject dynamicObject : load) {
|
|
|
+ Object employeeid = dynamicObject.get("uzi9_employeeid");
|
|
|
+ //获取人员数据
|
|
|
+ DynamicObject bosUser = BusinessDataServiceHelper.loadSingle(BOS_USER, "number,entryentity,entryentity.post,entryentity.dpt,entryentity.ispartjob", new QFilter[]{new QFilter("number", QFilter.equals, employeeid)});
|
|
|
+ //获取人员中部门分录单据体
|
|
|
+ DynamicObjectCollection entryentity = bosUser.getDynamicObjectCollection("entryentity");
|
|
|
+ for (DynamicObject entry : entryentity) {
|
|
|
+ //只要主岗位
|
|
|
+ boolean bl = (boolean) entry.get("ispartjob");
|
|
|
+ if (!bl) {
|
|
|
+ //岗位更新
|
|
|
+ Object post = entry.get("post");
|
|
|
+ if (post != null) {
|
|
|
+ dynamicObject.set("uzi9_position", post);
|
|
|
+ }
|
|
|
+ //组织更新
|
|
|
+ Object dpt = entry.get("dpt");
|
|
|
+ if (dpt != null) {
|
|
|
+ dynamicObject.set("uzi9_orgfield", dpt);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+ SaveServiceHelper.saveOperate(EVALUATION_OBJECT, new DynamicObject[]{dynamicObject});
|
|
|
}
|
|
|
+ this.getView().updateView();
|
|
|
+ this.getView().showSuccessNotification("更新完毕");
|
|
|
}
|
|
|
|
|
|
//语言设置
|
|
|
@@ -260,5 +585,26 @@ public class EvaluationObjectListPlugin extends AbstractListPlugin implements Pl
|
|
|
return localeValue;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ //人员bos_user跳转
|
|
|
+ private void bosUserJump(String callback) {
|
|
|
+ //跳转调人员bos_user去选择
|
|
|
+ ListShowParameter parameter = new ListShowParameter();
|
|
|
+ //设置实体id
|
|
|
+ parameter.setBillFormId(BOS_USER);
|
|
|
+ //设置选择状态
|
|
|
+ parameter.setLookUp(true);
|
|
|
+ //设置展开
|
|
|
+ parameter.getOpenStyle().setShowType(ShowType.Modal);
|
|
|
+ //设置模版id
|
|
|
+ parameter.setFormId("bos_usertreelistf7");
|
|
|
+ //设置回调
|
|
|
+ parameter.setCloseCallBack(new CloseCallBack(this, callback));
|
|
|
+ // 设置展开宽度,高度
|
|
|
+ StyleCss styleCss = new StyleCss();
|
|
|
+ styleCss.setWidth("800");
|
|
|
+ styleCss.setHeight("500");
|
|
|
+ parameter.getOpenStyle().setInlineStyleCss(styleCss);
|
|
|
+ //跳转
|
|
|
+ getView().showForm(parameter);
|
|
|
+ }
|
|
|
}
|