|
|
@@ -1,7 +1,9 @@
|
|
|
package nckd.jxccl.hrmp.hbpm.plugin.form.hr;
|
|
|
|
|
|
import kd.bos.common.enums.EnableEnum;
|
|
|
+import kd.bos.dataentity.entity.DataEntityState;
|
|
|
import kd.bos.dataentity.entity.DynamicObject;
|
|
|
+import kd.bos.dataentity.metadata.dynamicobject.DynamicProperty;
|
|
|
import kd.bos.dataentity.utils.ObjectUtils;
|
|
|
import kd.bos.dataentity.utils.StringUtils;
|
|
|
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
|
|
@@ -20,8 +22,9 @@ import kd.bos.orm.query.QCP;
|
|
|
import kd.bos.orm.query.QFilter;
|
|
|
import kd.bos.servicehelper.coderule.CodeRuleServiceHelper;
|
|
|
import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
|
|
|
+import kd.hr.hbp.common.util.HRObjectUtils;
|
|
|
import kd.hr.hbp.common.util.HRStringUtils;
|
|
|
-import nckd.jxccl.hrmp.hbpm.business.hr.PositionBillService;
|
|
|
+import nckd.jxccl.hrmp.hbpm.business.hr.PositionBillServiceHelper;
|
|
|
import nckd.jxccl.hrmp.hbpm.common.hr.PositionBillConstant;
|
|
|
|
|
|
import java.util.Date;
|
|
|
@@ -65,7 +68,7 @@ public class PosBillEntryAddFormPlugin extends AbstractFormPlugin {
|
|
|
|
|
|
// 设置岗位编码
|
|
|
if (HRStringUtils.isEmpty(getModel().getDataEntity().getString(PositionBillConstant.NUMBER_KEY))) {
|
|
|
- setPositionNumber(PositionBillService.getPositionHrDy(getModel().getDataEntity()));
|
|
|
+ setPositionNumber(PositionBillServiceHelper.getPositionHrDy(getModel().getDataEntity()), true);
|
|
|
} else {
|
|
|
setPositionNumberEnable();
|
|
|
}
|
|
|
@@ -86,14 +89,19 @@ public class PosBillEntryAddFormPlugin extends AbstractFormPlugin {
|
|
|
return;
|
|
|
}
|
|
|
long orgid = org.getLong(PositionBillConstant.ID_KEY);
|
|
|
- DynamicObject positionHrDy = PositionBillService.getPositionHrDy(getModel().getDataEntity());
|
|
|
+ DynamicObject positionHrDy = PositionBillServiceHelper.getPositionHrDy(getModel().getDataEntity());
|
|
|
boolean cudeRule = CodeRuleServiceHelper.isExist(PositionBillConstant.HBPM_POSITIONHR, positionHrDy, String.valueOf(orgid));
|
|
|
if (cudeRule && !CodeRuleServiceHelper.isModifiable(PositionBillConstant.HBPM_POSITIONHR, positionHrDy, String.valueOf(org.getLong(PositionBillConstant.ID_KEY)))) {
|
|
|
- getView().setEnable(Boolean.valueOf(false), PositionBillConstant.NUMBER_KEY);
|
|
|
+ getView().setEnable(false, PositionBillConstant.NUMBER_KEY);
|
|
|
+ String orgNumber = getModel().getDataEntity().getString(PositionBillConstant.NUMBER_KEY);
|
|
|
+ if (HRStringUtils.isNotEmpty(orgNumber)) {
|
|
|
+ getView().getPageCache().put("codeRuleNumber", orgNumber);
|
|
|
+ getView().getPageCache().put("notModifiable", Boolean.TRUE.toString());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void setPositionNumber(DynamicObject positionHrDy) {
|
|
|
+ private void setPositionNumber(DynamicObject positionHrDy, Boolean init) {
|
|
|
DynamicObject dataEntity = getModel().getDataEntity();// 157
|
|
|
// 组织体系管理组织
|
|
|
DynamicObject org = dataEntity.getDynamicObject(PositionBillConstant.NCKD_ORG);
|
|
|
@@ -103,7 +111,7 @@ public class PosBillEntryAddFormPlugin extends AbstractFormPlugin {
|
|
|
}
|
|
|
|
|
|
String number = dataEntity.getString(PositionBillConstant.NUMBER_KEY);
|
|
|
- if (HRStringUtils.isNotEmpty(number) && !HRStringUtils.equals(number, getView().getPageCache().get(CODERULE_NUMBER))) {
|
|
|
+ if (HRStringUtils.isNotEmpty(number) && !HRStringUtils.equals(number, getView().getPageCache().get("codeRuleNumber"))) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
@@ -112,26 +120,66 @@ public class PosBillEntryAddFormPlugin extends AbstractFormPlugin {
|
|
|
if (cudeRule) {
|
|
|
boolean fromDatabase = dataEntity.getDataEntityState().getFromDatabase();
|
|
|
boolean modifiable = CodeRuleServiceHelper.isModifiable(PositionBillConstant.HBPM_POSITIONHR, positionHrDy, String.valueOf(org.getLong(PositionBillConstant.ID_KEY)));
|
|
|
- if (modifiable || fromDatabase) {
|
|
|
+ if (modifiable || fromDatabase && !init) {
|
|
|
String positionNumber = CodeRuleServiceHelper.getNumber(PositionBillConstant.HBPM_POSITIONHR, positionHrDy, String.valueOf(org.getLong(PositionBillConstant.ID_KEY)));
|
|
|
HRBaseServiceHelper hrBaseServiceHelper = new HRBaseServiceHelper(PositionBillConstant.HBPM_POSITIONHR);
|
|
|
QFilter qFilter = new QFilter(PositionBillConstant.NUMBER_KEY, QCP.equals, positionNumber);
|
|
|
if (!hrBaseServiceHelper.isExists(qFilter)) {
|
|
|
getModel().setValue(PositionBillConstant.NUMBER_KEY, positionNumber);
|
|
|
- getView().getPageCache().put(CODERULE_NUMBER, positionNumber);
|
|
|
+ getView().getPageCache().put("codeRuleNumber", positionNumber);
|
|
|
} else {
|
|
|
- setPositionNumber(positionHrDy);
|
|
|
+ setPositionNumber(positionHrDy, init);
|
|
|
}
|
|
|
} else {
|
|
|
getView().setEnable(Boolean.FALSE, PositionBillConstant.NUMBER_KEY);
|
|
|
}
|
|
|
} else {
|
|
|
getModel().setValue(PositionBillConstant.NUMBER_KEY, null);
|
|
|
- getView().getPageCache().put(CODERULE_NUMBER, "");
|
|
|
+ getView().getPageCache().put("codeRuleNumber", "");
|
|
|
getView().setEnable(Boolean.TRUE, PositionBillConstant.NUMBER_KEY);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void beforeClosed(BeforeClosedEvent event) {
|
|
|
+ super.beforeClosed(event);
|
|
|
+
|
|
|
+ String isCancelOverFlag = getView().getPageCache().get("isclose");
|
|
|
+ if (HRStringUtils.isNotEmpty(isCancelOverFlag) && Boolean.TRUE.toString().equals(isCancelOverFlag)) {
|
|
|
+ getModel().setDataChanged(false);
|
|
|
+ getView().getPageCache().put("isclose", Boolean.FALSE.toString());
|
|
|
+ } else {
|
|
|
+ boolean dataChanged = getModel().getDataChanged();
|
|
|
+ if (dataChanged) {
|
|
|
+ event.setCancel(true);
|
|
|
+ ConfirmCallBackListener confirmCallBacks = new ConfirmCallBackListener(String.join("_", PositionBillConstant.CLOSE_OP, PositionBillConstant.ADD_TAG), this);
|
|
|
+ Map<Integer, String> btnNameMaps = new HashMap<>();
|
|
|
+ btnNameMaps.put(MessageBoxResult.Cancel.getValue(), "返回编辑");
|
|
|
+ btnNameMaps.put(MessageBoxResult.Yes.getValue(), "直接退出");
|
|
|
+ MessageBoxOptions options = MessageBoxOptions.OKCancel;
|
|
|
+ String msg = "检测到您有更改内容,是否不保存直接退出?若不保存,将丢失这些更改。";
|
|
|
+ getView().showConfirm(msg, getModel().getChangeDesc(), options, ConfirmTypes.Save, confirmCallBacks, btnNameMaps);
|
|
|
+ } else {
|
|
|
+ String codeRuleNumber = getView().getPageCache().get("codeRuleNumber");
|
|
|
+ String notModifiable = getView().getPageCache().get("notModifiable");
|
|
|
+ if (!StringUtils.isEmpty(codeRuleNumber) && !Boolean.TRUE.toString().equals(notModifiable)) {
|
|
|
+ DynamicObject org = getModel().getDataEntity().getDynamicObject(PositionBillConstant.NCKD_ORG);
|
|
|
+ if (org == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ String saveResult = getView().getPageCache().get("saveResult");
|
|
|
+ if (!Boolean.TRUE.toString().equals(saveResult)) {
|
|
|
+ long orgId = org.getLong(PositionBillConstant.ID_KEY);
|
|
|
+ DynamicObject positionHrDy = PositionBillServiceHelper.getPositionHrDy(getModel().getDataEntity());
|
|
|
+ CodeRuleServiceHelper.recycleNumber(PositionBillConstant.HBPM_POSITIONHR, positionHrDy, String.valueOf(orgId), codeRuleNumber);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void afterBindData(EventObject e) {
|
|
|
super.afterBindData(e);
|
|
|
@@ -152,6 +200,38 @@ public class PosBillEntryAddFormPlugin extends AbstractFormPlugin {
|
|
|
getModel().setDataChanged(false);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void propertyChanged(PropertyChangedArgs changedArgs) {
|
|
|
+ String fieldKey = changedArgs.getProperty().getName();
|
|
|
+ if (PositionBillConstant.NCKD_ESTDATE.equals(fieldKey)) {
|
|
|
+ setEstablishmentDateToBsed((Date)changedArgs.getChangeSet()[0].getNewValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置设立日期到生效日期
|
|
|
+ * @param date
|
|
|
+ */
|
|
|
+ private void setEstablishmentDateToBsed(Date date) {
|
|
|
+ if (date != null) {
|
|
|
+ getModel().setValue(PositionBillConstant.NCKD_BSED, date);
|
|
|
+ DynamicProperty property = this.getModel().getDataEntityType().getProperty(PositionBillConstant.NCKD_BSED);
|
|
|
+ DataEntityState dataEntityState = this.getModel().getDataEntity().getDataEntityState();
|
|
|
+ dataEntityState.setBizChanged(property.getOrdinal(), false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void confirmCallBack(MessageBoxClosedEvent event) {
|
|
|
+ super.confirmCallBack(event);
|
|
|
+
|
|
|
+ if (String.join("_", PositionBillConstant.CLOSE_OP, PositionBillConstant.ADD_TAG).equals(event.getCallBackId()) && event.getResult() != MessageBoxResult.Cancel) {
|
|
|
+ recycleNumber();
|
|
|
+ getView().getPageCache().put("isclose", Boolean.TRUE.toString());
|
|
|
+ getView().invokeOperation(PositionBillConstant.CLOSE_OP);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void afterDoOperation(AfterDoOperationEventArgs eventArgs) {
|
|
|
super.afterDoOperation(eventArgs);
|
|
|
@@ -166,16 +246,16 @@ public class PosBillEntryAddFormPlugin extends AbstractFormPlugin {
|
|
|
String addPositionParentChange = Boolean.FALSE.toString();
|
|
|
DynamicObject parentPosition = getModel().getDataEntity().getDynamicObject(PositionBillConstant.NCKD_PARENT);
|
|
|
if (parentPosition != null) {
|
|
|
- String afterParentOrgId = parentPosition.getString(PositionBillConstant.ID_KEY);
|
|
|
- if (!HRStringUtils.equals(beforeParentPositionId, afterParentOrgId)) {
|
|
|
+ String afterParentPositionId = parentPosition.getString(PositionBillConstant.ID_KEY);
|
|
|
+ if (!HRStringUtils.equals(beforeParentPositionId, afterParentPositionId)) {
|
|
|
addPositionParentChange = Boolean.TRUE.toString();
|
|
|
}
|
|
|
parentPageCache.put("addPositionParentChange", addPositionParentChange);
|
|
|
- parentPageCache.put("parentId", afterParentOrgId);
|
|
|
+ parentPageCache.put("parentId", afterParentPositionId);
|
|
|
}
|
|
|
Map<String, String> map = new HashMap<>();
|
|
|
DynamicObject dataEntity = getModel().getDataEntity();
|
|
|
- map.put("positionId", dataEntity.getString(String.format("%s_id", PositionBillConstant.NCKD_POSITION)));
|
|
|
+ map.put("positionId", dataEntity.getString(String.join("_", PositionBillConstant.NCKD_POSITION, PositionBillConstant.ID_KEY)));
|
|
|
map.put("name", dataEntity.getString(PositionBillConstant.NAME_KEY));
|
|
|
map.put("id", dataEntity.getString(PositionBillConstant.ID_KEY));
|
|
|
getView().getPageCache().put("saveResult", Boolean.TRUE.toString());
|
|
|
@@ -183,83 +263,22 @@ public class PosBillEntryAddFormPlugin extends AbstractFormPlugin {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public void beforeClosed(BeforeClosedEvent event) {
|
|
|
- super.beforeClosed(event);
|
|
|
-
|
|
|
- String isCancelOverFlag = getView().getPageCache().get("isclose");
|
|
|
- if (HRStringUtils.isNotEmpty(isCancelOverFlag) && Boolean.TRUE.toString().equals(isCancelOverFlag)) {
|
|
|
- getModel().setDataChanged(false);
|
|
|
- getView().getPageCache().put("isclose", Boolean.FALSE.toString());
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- boolean dataChanged = getModel().getDataChanged();
|
|
|
- if (dataChanged) {
|
|
|
- event.setCancel(true);
|
|
|
- ConfirmCallBackListener confirmCallBacks = new ConfirmCallBackListener("close_addbill", this);
|
|
|
- Map<Integer, String> btnNameMaps = new HashMap<>();
|
|
|
- btnNameMaps.put(MessageBoxResult.Cancel.getValue(), "返回编辑");
|
|
|
- btnNameMaps.put(MessageBoxResult.Yes.getValue(), "直接退出");
|
|
|
- MessageBoxOptions options = MessageBoxOptions.OKCancel;
|
|
|
- String msg = "检测到您有更改内容,是否不保存直接退出?若不保存,将丢失这些更改。";
|
|
|
- getView().showConfirm(msg, getModel().getChangeDesc(), options, ConfirmTypes.Save, confirmCallBacks, btnNameMaps);
|
|
|
- } else {
|
|
|
- String codeRuleNumber = getView().getPageCache().get(CODERULE_NUMBER);
|
|
|
- if (!StringUtils.isEmpty(codeRuleNumber)) {
|
|
|
- DynamicObject org = getModel().getDataEntity().getDynamicObject(PositionBillConstant.ORG_KEY);
|
|
|
- if (org == null) {
|
|
|
- return;
|
|
|
- }
|
|
|
- String saveResult = getView().getPageCache().get(SAVE_RESULT);
|
|
|
- if (!Boolean.TRUE.toString().equals(saveResult)) {
|
|
|
- long orgId = org.getLong(PositionBillConstant.ID_KEY);
|
|
|
- DynamicObject positionHrDy = PositionBillService.getPositionHrDy(getModel().getDataEntity());
|
|
|
- CodeRuleServiceHelper.recycleNumber(PositionBillConstant.HBPM_POSITIONHR, positionHrDy, String.valueOf(orgId), codeRuleNumber);
|
|
|
- }
|
|
|
+ private void recycleNumber() {
|
|
|
+ String codeRuleNumber = getView().getPageCache().get(CODERULE_NUMBER);
|
|
|
+ if (!StringUtils.isEmpty(codeRuleNumber)) {
|
|
|
+ DynamicObject org = getModel().getDataEntity().getDynamicObject(PositionBillConstant.NCKD_ORG);
|
|
|
+ if (HRObjectUtils.isEmpty(org)) {
|
|
|
+ return;
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void confirmCallBack(MessageBoxClosedEvent event) {
|
|
|
- super.confirmCallBack(event);
|
|
|
- if ("close_addbill".equals(event.getCallBackId()) && event.getResult() != MessageBoxResult.Cancel) {
|
|
|
- String codeRuleNumber = getView().getPageCache().get(CODERULE_NUMBER);
|
|
|
- if (!StringUtils.isEmpty(codeRuleNumber)) {
|
|
|
- DynamicObject org = getModel().getDataEntity().getDynamicObject(PositionBillConstant.ORG_KEY);
|
|
|
- if (org == null) {
|
|
|
- return;
|
|
|
- }
|
|
|
- String saveResult = getView().getPageCache().get(SAVE_RESULT);
|
|
|
- if (!Boolean.TRUE.toString().equals(saveResult)) {
|
|
|
- long orgId = org.getLong(PositionBillConstant.ID_KEY);
|
|
|
- DynamicObject positionHrDy = PositionBillService.getPositionHrDy(getModel().getDataEntity());
|
|
|
- CodeRuleServiceHelper.recycleNumber(PositionBillConstant.HBPM_POSITIONHR, positionHrDy, String.valueOf(orgId), codeRuleNumber);
|
|
|
- }
|
|
|
+ String saveResult = getView().getPageCache().get(SAVE_RESULT);
|
|
|
+ if (!Boolean.TRUE.toString().equals(saveResult)) {
|
|
|
+ long orgId = org.getLong(PositionBillConstant.ID_KEY);
|
|
|
+ DynamicObject positionHrDy = PositionBillServiceHelper.getPositionHrDy(getModel().getDataEntity());
|
|
|
+ CodeRuleServiceHelper.recycleNumber(PositionBillConstant.HBPM_POSITIONHR, positionHrDy, String.valueOf(orgId), codeRuleNumber);
|
|
|
}
|
|
|
- getView().getPageCache().put("isclose", Boolean.TRUE.toString());
|
|
|
- getView().invokeOperation(PositionBillConstant.CLOSE_OP);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void propertyChanged(PropertyChangedArgs changedArgs) {
|
|
|
- String fieldKey = changedArgs.getProperty().getName();
|
|
|
- boolean isGetNumber = true;
|
|
|
- if (PositionBillConstant.NCKD_ESTDATE.equals(fieldKey)) {
|
|
|
- setEstablishmentDateToBsed((Date)changedArgs.getChangeSet()[0].getNewValue());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 设置设立日期到生效日期
|
|
|
- * @param date
|
|
|
- */
|
|
|
- private void setEstablishmentDateToBsed(Date date) {
|
|
|
- if (date != null) {
|
|
|
- getModel().setValue(PositionBillConstant.NCKD_BSED, date);
|
|
|
}
|
|
|
+ getView().getPageCache().put("isclose", Boolean.TRUE.toString());
|
|
|
+ getView().invokeOperation(PositionBillConstant.CLOSE_OP);
|
|
|
}
|
|
|
|
|
|
}
|