123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 |
- package fi.em.formPlugin;
- import kd.bos.dataentity.entity.DynamicObject;
- import kd.bos.dataentity.entity.DynamicObjectCollection;
- import kd.bos.entity.datamodel.events.ChangeData;
- import kd.bos.entity.datamodel.events.PropertyChangedArgs;
- import kd.bos.form.ConfirmCallBackListener;
- import kd.bos.form.ConfirmTypes;
- import kd.bos.form.MessageBoxOptions;
- import kd.bos.form.MessageBoxResult;
- import kd.bos.form.events.AfterDoOperationEventArgs;
- import kd.bos.form.events.BeforeDoOperationEventArgs;
- import kd.bos.form.events.MessageBoxClosedEvent;
- import kd.bos.form.operate.FormOperate;
- import kd.bos.list.plugin.AbstractListPlugin;
- import kd.bos.orm.query.QFilter;
- import kd.bos.servicehelper.BusinessDataServiceHelper;
- import kd.sdk.plugin.Plugin;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.EventObject;
- import java.util.List;
- /**
- * @author cjz
- * @date 2024/8/19 9:01
- * @description:薪酬计提单,根据业务类型显示分录
- */
- public class SalaryDistributeEditPlugin extends AbstractListPlugin implements Plugin {
- private static String nckd_entrytype="nckd_entrytype";//业务类型标识
- private static String nckd_generalemployees="nckd_generalemployees";//薪酬明细(一般员工)分录标识
- private static String nckd_earlyretired="nckd_earlyretired";//薪酬明细(内退)分录标识
- private static String nckd_retired="nckd_retired";//薪酬明细(退休)分录标识
- private static String nckd_pay="nckd_pay";//人力薪酬分录标识
- private static String oldentryNum="oldentryNum";
- private static String newentryNum="newentryNum";
- //VieaFlag为分录标识,传入的分录显示,其他则隐藏
- public void setVieeVisible(String Viewflag)
- {
- List<String> viewList=new ArrayList<>();
- viewList.add(nckd_generalemployees);
- viewList.add(nckd_earlyretired);
- viewList.add(nckd_retired);
- viewList.add(nckd_pay);
- if (Viewflag.isEmpty()) {
- for (String item:viewList) {
- this.getView().setVisible(false,item);
- }
- //清空所有分录
- clearEntryData("");
- }
- //薪酬明细(一般员工)分录
- if (Viewflag.equals(nckd_generalemployees)) {
- for (String item:viewList) {
- this.getView().setVisible(false,item);
- }
- clearEntryData(nckd_generalemployees);
- }
- //薪酬明细(内退)分录
- if (Viewflag.equals(nckd_earlyretired)) {
- for (String item:viewList) {
- this.getView().setVisible(false,item);
- }
- clearEntryData(nckd_earlyretired);
- }
- //薪酬明细(退休)分录
- if (Viewflag.equals(nckd_retired)) {
- for (String item:viewList) {
- this.getView().setVisible(false,item);
- }
- clearEntryData(nckd_retired);
- }
- //人力薪酬分录
- if (Viewflag.equals(nckd_pay)) {
- for (String item:viewList) {
- this.getView().setVisible(false,item);
- }
- clearEntryData(nckd_pay);
- }
- }
- public void afterCreateNewData(EventObject e){
- super.afterBindData(e);
- //设置初始状态分录为不可见
- this.setVieeVisible("");
- }
- //审核后获取审核人并刷新前端界面
- public void afterDoOperation(AfterDoOperationEventArgs arg){
- super.afterDoOperation(arg);
- String operateKey = arg.getOperateKey();
- //审核操作代码
- String audit="audit";
- if (operateKey.equals(audit)) {
- //获取单据编号
- String billno=this.getModel().getDataEntity().getString("billno");
- QFilter filter=new QFilter("billno", QFilter.equals,billno);
- DynamicObject[] dynamicObjectList= BusinessDataServiceHelper.load("nckd_salarydistribute","id",new QFilter[]{filter});
- DynamicObject auditor = null;
- for (DynamicObject dynamicObject:dynamicObjectList) {
- DynamicObject info=BusinessDataServiceHelper.
- loadSingle(dynamicObject.getPkValue(),dynamicObject.getDynamicObjectType().getName());
- auditor=info.getDynamicObject("nckd_auditor");
- }
- if (null!=auditor) {
- this.getModel().setValue("nckd_auditor",auditor);
- this.getView().updateView();
- }
- }
- }
- public void propertyChanged(PropertyChangedArgs e)
- {
- super.beforePropertyChanged(e);
- String name=e.getProperty().getName();
- //获取单据模型
- DynamicObject data=this.getModel().getDataEntity();
- if (nckd_entrytype.equals(name)) {
- //获取当前分录类型
- ChangeData[] changeSet=e.getChangeSet();
- ChangeData changeData=changeSet[0];
- oldentryNum=(String)changeData.getOldValue();
- newentryNum=(String)changeData.getNewValue();
- String entrytype=data.getString(nckd_entrytype);
- if (entrytype.isEmpty()) {
- this.setVieeVisible("");
- }
- //分录有数据则弹窗提示,无数据则直接切换分录
- //分录类型为薪酬明细(一般员工)
- if (entrytype.equals("A")) {
- if (billIsNotEmpty(data)) {
- ConfirmCallBackListener confirmCallBacks = new ConfirmCallBackListener(String.valueOf(false), this);
- String confirmTip = "您确定要将分录类型改变为薪酬明细(一般员工)?操作会清空其他分录的数据,是否继续?";
- this.getView().showConfirm(confirmTip,MessageBoxOptions.YesNo, ConfirmTypes.Default, confirmCallBacks);
- }else {
- this.setVieeVisible(nckd_generalemployees);
- }
- }
- //分录类型为薪酬明细(内退)
- if (entrytype.equals("B")) {
- if (billIsNotEmpty(data)) {
- ConfirmCallBackListener confirmCallBacks = new ConfirmCallBackListener(String.valueOf(false), this);
- String confirmTip = "您确定要将分录类型改变为薪酬明细(内退)?操作会清空其他分录的数据,是否继续?";
- this.getView().showConfirm(confirmTip,MessageBoxOptions.YesNo, ConfirmTypes.Default, confirmCallBacks);
- }else {
- this.setVieeVisible(nckd_earlyretired);
- }
- }
- //分录类型为薪酬明细退休
- if (entrytype.equals("C")) {
- if (billIsNotEmpty(data)) {
- ConfirmCallBackListener confirmCallBacks = new ConfirmCallBackListener(String.valueOf(false), this);
- String confirmTip = "您确定要将分录类型改变为薪酬明细(退休)?操作会清空其他分录的数据,是否继续?";
- this.getView().showConfirm(confirmTip,MessageBoxOptions.YesNo, ConfirmTypes.Default, confirmCallBacks);
- }else {
- this.setVieeVisible(nckd_retired);
- }
- }
- //分录类型为人力薪酬
- if (entrytype.equals("D")) {
- if (billIsNotEmpty(data)) {
- ConfirmCallBackListener confirmCallBacks = new ConfirmCallBackListener(String.valueOf(false), this);
- String confirmTip = "您确定要将分录类型改变为人力薪酬?操作会清空其他分录的数据,是否继续?";
- this.getView().showConfirm(confirmTip,MessageBoxOptions.YesNo, ConfirmTypes.Default, confirmCallBacks);
- }else {
- this.setVieeVisible(nckd_pay);
- }
- }
- }
- }
- //点击弹窗后回调
- public void confirmCallBack(MessageBoxClosedEvent messageBoxClosedEvent) {
- super.confirmCallBack(messageBoxClosedEvent);
- DynamicObject data=this.getModel().getDataEntity();
- //获取当前分录类型
- String entrytype=data.getString(nckd_entrytype);
- // 判断如果是确认按钮
- if (messageBoxClosedEvent.getResult() == MessageBoxResult.Yes) {
- //分录类型为薪酬明细(一般员工)
- if (entrytype.equals("A")) {
- this.setVieeVisible(nckd_generalemployees);
- }
- //分录类型为薪酬明细(内退)
- if (entrytype.equals("B")) {
- this.setVieeVisible(nckd_earlyretired);
- }
- //分录类型为薪酬明细退休
- if (entrytype.equals("C")) {
- this.setVieeVisible(nckd_retired);
- }
- //分录类型为人力薪酬
- if (entrytype.equals("D")) {
- this.setVieeVisible(nckd_pay);
- }
- }
- //如果为取消,则
- if (messageBoxClosedEvent.getResult()==MessageBoxResult.No) {
- //设置回原来的值,不触发值改变事件
- this.getModel().beginInit();
- data.set("nckd_entrytype",oldentryNum);
- this.getModel().endInit();
- this.getView().updateView();
- }
- }
- //判断单据内四个分录是否为空,分录有数据则返回true
- public boolean billIsNotEmpty(DynamicObject data) {
- //四个分录标识
- List<String> nckd_entryList = Arrays.asList("nckd_staffentry","nckd_earlyretiredentry","nckd_retireentry","nckd_salaryentry");
- for (String item:nckd_entryList) {
- DynamicObjectCollection dynamicObjectCollection=data.getDynamicObjectCollection(item);
- if (!dynamicObjectCollection.isEmpty()) {
- return true;
- }
- }
- return false;
- }
- //清空除传入以外的其他分录
- public void clearEntryData(String nckd_entry)
- {
- //分录标识
- List<String> nckd_generalemployees =Arrays.asList("nckd_staffentry","nckd_earlyretiredentry","nckd_retireentry","nckd_salaryentry");
- for (String item:nckd_generalemployees) {
- //不传入参数默认全部分录清除
- if ("".equals(nckd_entry)){
- this.getModel().deleteEntryData(item);
- }
- if (!item.equals(nckd_entry)) {
- this.getModel().deleteEntryData(item);
- this.getView().setVisible(true,nckd_entry);
- }
- }
- }
- }
|