|
@@ -5,138 +5,119 @@ import fi.fa.opplugin.utils.ChangeDataUtils;
|
|
|
import kd.bos.dataentity.OperateOption;
|
|
|
import kd.bos.dataentity.entity.DynamicObject;
|
|
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
|
+import kd.bos.entity.datamodel.ListSelectedRowCollection;
|
|
|
import kd.bos.entity.operate.result.OperationResult;
|
|
|
-import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
|
|
-import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
|
|
|
-import kd.bos.exception.KDBizException;
|
|
|
+import kd.bos.form.control.events.ItemClickEvent;
|
|
|
+import kd.bos.list.BillList;
|
|
|
+import kd.bos.list.plugin.AbstractListPlugin;
|
|
|
import kd.bos.orm.query.QCP;
|
|
|
import kd.bos.orm.query.QFilter;
|
|
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|
|
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
|
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.EventObject;
|
|
|
import java.util.List;
|
|
|
|
|
|
//资产变更单中间表下推资产变更单
|
|
|
-public class FaChangeMidOpPlugin extends AbstractOperationServicePlugIn {
|
|
|
+public class FaChangeMidOpPlugin extends AbstractListPlugin {
|
|
|
+
|
|
|
+ public void registerListener(EventObject e) {
|
|
|
+ super.registerListener(e);
|
|
|
+ this.addItemClickListeners(new String[]{"toolbarap"});
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
- public void beginOperationTransaction(BeginOperationTransactionArgs e) {
|
|
|
- super.beginOperationTransaction(e);
|
|
|
- DynamicObject[] dynamicObjects = e.getDataEntities();
|
|
|
- for (int i = 0; i < dynamicObjects.length; i++) {
|
|
|
- if (StringUtils.equals(e.getOperationKey(), "push")) {
|
|
|
- DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
|
|
|
- String nckd_flag = info.getString("nckd_flag");
|
|
|
- if ("1".equals(nckd_flag)) {
|
|
|
- throw new KDBizException("单据" + info.getString("number") + "已经下推生成了资产调拨单,不允许重复下推!");
|
|
|
- }else {
|
|
|
- String dispatchType = info.getString("nckd_dispatch_type");
|
|
|
+ public void itemClick(ItemClickEvent evt) {
|
|
|
+ String itemKey = evt.getItemKey();
|
|
|
+ if ("nckd_push".equals(itemKey)) {
|
|
|
+ StringBuilder errMsg = new StringBuilder();
|
|
|
+ BillList billList = (BillList)this.getControl("billlistap");
|
|
|
+ ListSelectedRowCollection list = billList.getSelectedRows();
|
|
|
+ Object[] primaryKeyValues = list.getPrimaryKeyValues();
|
|
|
+ if (primaryKeyValues.length > 0) {
|
|
|
+ for (Object pk : primaryKeyValues) {
|
|
|
+ DynamicObject info = BusinessDataServiceHelper.loadSingle(pk, "nckd_e_change_mid");
|
|
|
+ String nckd_flag = info.getString("nckd_flag");
|
|
|
String direction = info.getString("nckd_direction");
|
|
|
+ if ("1".equals(nckd_flag)) {
|
|
|
+ errMsg.append("单据号: ").append(info.getString("number")).append("已经下推生成了业务处理单,不允许重复下推!");
|
|
|
+ errMsg.append("\r\n");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
String error = ChangeDataUtils.check(info);
|
|
|
if (!StringUtils.isEmpty(error)) {
|
|
|
- this.operationResult.setShowMessage(true);
|
|
|
- this.operationResult.setSuccess(false);
|
|
|
- this.operationResult.setMessage(error);
|
|
|
- }else {
|
|
|
-
|
|
|
- if ("1".equals(dispatchType)) {
|
|
|
- DynamicObject changeDept = BusinessDataServiceHelper.newDynamicObject("fa_change_dept");
|
|
|
- //单据头
|
|
|
- DynamicObject orgInfo = ChangeDataUtils.queryOrg(ChangeDataUtils.getOrg(info.getString("nckd_org_in")));
|
|
|
- changeDept.set("org", orgInfo);//核算组织
|
|
|
- changeDept.set("changedate", info.getDate("nckd_date_out"));//记账日期
|
|
|
- changeDept.set("appliantid", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//变更申请人
|
|
|
- changeDept.set("remark", info.getString("nckd_reason"));//调出原因
|
|
|
- changeDept.set("sourcetype", 2);//来源方式(5:API生成)
|
|
|
- changeDept.set("changetype", ChangeDataUtils.queryChangeType(Long.parseLong("733953285719123968")));//变更类型,默认部门变更
|
|
|
- changeDept.set("chtypedetail", "1");//变更类型明细默认实物变更1
|
|
|
- changeDept.set("voucherflag", "A");//记账标识默认无需记账A
|
|
|
- changeDept.set("billstatus", "A");//暂存
|
|
|
- //调出方向
|
|
|
- if("0".equals(direction)){
|
|
|
- changeDept.set("creator", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//创建人
|
|
|
- changeDept.set("appliantid", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//调拨申请人
|
|
|
- }//调入方向
|
|
|
- else if ("1".equals(direction)) {
|
|
|
- changeDept.set("creator", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//创建人
|
|
|
- changeDept.set("appliantid", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//调拨申请人
|
|
|
- }
|
|
|
- List<String> codeList =ChangeDataUtils.getCardNumber(info);
|
|
|
- QFilter filter = new QFilter("number", QCP.in,codeList);
|
|
|
- filter.and("isbak", QCP.equals, "0");
|
|
|
- DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {filter});
|
|
|
- for (int c = 0; c < card.length; c++) {
|
|
|
- DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
|
|
|
- //查询财务卡片
|
|
|
- DynamicObject fin = ChangeDataUtils.queryFinCard(cardInfo.getLong("id"));//财务卡片id
|
|
|
- //创建变更字段分录
|
|
|
- DynamicObjectCollection fieldentry = changeDept.getDynamicObjectCollection("fieldentry");
|
|
|
-
|
|
|
- String deptAftervalue = ChangeDataUtils.getOrg(info.getString("nckd_dept_in")) == null ? null : ChangeDataUtils.getOrg(info.getString("nckd_dept_in")).toString();
|
|
|
- String deptBeforevalue = cardInfo.getDynamicObject("headusedept") == null ? null : String.valueOf(cardInfo.getDynamicObject("headusedept").getLong("id"));
|
|
|
- if (!StringUtils.equals(deptBeforevalue, deptAftervalue)) {
|
|
|
- DynamicObject entry1 = fieldentry.addNew();
|
|
|
- entry1.set("realcard1", cardInfo);//资产编码
|
|
|
- entry1.set("depreuse1", ChangeDataUtils.queryDepreuse(Long.parseLong("418714318096331776")));//折旧用途默认
|
|
|
- entry1.set("currency1", 1);//币别
|
|
|
- entry1.set("basecurrency1", 1);//本币位
|
|
|
- entry1.set("assetnumber",cardInfo.getString("number"));//资产编码
|
|
|
- entry1.set("bizdate1", info.getDate("nckd_date_out"));//业务日期
|
|
|
- entry1.set("field", "fa_card_real.headusedept");//变更字段-部门
|
|
|
- entry1.set("beforevalue", deptBeforevalue);//变更前值
|
|
|
- entry1.set("aftervalue", deptAftervalue);//变更后值
|
|
|
- entry1.set("realcardmasterid", cardInfo);//实物卡片id
|
|
|
- entry1.set("fincard1", fin);//财务卡片
|
|
|
- }
|
|
|
-
|
|
|
- String userAftervalue = info.getString("nckd_used_user") == null ? null : String.valueOf(ChangeDataUtils.getUser(info.getString("nckd_used_user")).getLong("id"));
|
|
|
- String userBeforevalue = cardInfo.getDynamicObject("headuseperson") == null ? null : String.valueOf(ChangeDataUtils.getUser(info.getString("nckd_used_user")).getLong("id"));
|
|
|
- if (!StringUtils.equals(userBeforevalue, userAftervalue)) {
|
|
|
- DynamicObject entry2 = fieldentry.addNew();
|
|
|
- entry2.set("realcard1", cardInfo);//资产编码
|
|
|
- entry2.set("depreuse1", ChangeDataUtils.queryDepreuse(Long.parseLong("418714318096331776")));//折旧用途默认
|
|
|
- entry2.set("currency1", 1);//币别
|
|
|
- entry2.set("basecurrency1", 1);//本币位
|
|
|
- entry2.set("assetnumber",cardInfo.getString("number"));//资产编码
|
|
|
- entry2.set("bizdate1", info.getDate("nckd_date_out"));//业务日期
|
|
|
- entry2.set("field", "fa_card_real.headuseperson");//变更字段-使用人
|
|
|
- entry2.set("beforevalue", userBeforevalue);//变更前值
|
|
|
- entry2.set("aftervalue", userAftervalue);//变更后值
|
|
|
- entry2.set("realcardmasterid", cardInfo);//实物卡片id
|
|
|
- entry2.set("fincard1", fin);//财务卡片
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- //创建实物变更分录
|
|
|
- DynamicObjectCollection realentry = changeDept.getDynamicObjectCollection("realentry");
|
|
|
- DynamicObject realentry1 = realentry.addNew();
|
|
|
- realentry1.set("realcard", cardInfo.getLong("id"));//资产编码
|
|
|
-
|
|
|
- //创建财务变更分录
|
|
|
- DynamicObjectCollection finentry = realentry1.getDynamicObjectCollection("finentry");
|
|
|
- DynamicObject finentry1 = finentry.addNew();
|
|
|
- finentry1.set("depreuse", ChangeDataUtils.queryDepreuse(Long.parseLong("418714318096331776")));//折旧用途默认
|
|
|
- finentry1.set("fincard", fin);
|
|
|
- finentry1.set("bizdate", info.getDate("nckd_date_out"));
|
|
|
+ errMsg.append(error);
|
|
|
+ errMsg.append("\r\n");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ DynamicObject busProcess = BusinessDataServiceHelper.newDynamicObject("nckd_ywcld");
|
|
|
+ busProcess.set("nckd_bizdate", info.getDate("nckd_date_out"));//业务日期
|
|
|
+ busProcess.set("nckd_orgfield3", ChangeDataUtils.getOrg(info.getString("nckd_dept_in")));//调入使用部门
|
|
|
+ busProcess.set("nckd_userfield", ChangeDataUtils.getUser(info.getString("nckd_used_user")));//调入使用人
|
|
|
+ busProcess.set("nckd_textfield1", info.getString("nckd_reason"));//调拨原因
|
|
|
+ busProcess.set("billstatus", "A");//暂存
|
|
|
+ busProcess.set("nckd_detailtype", "E");//业务类型(E:资产调拨)
|
|
|
+ busProcess.set("nckd_combofield2", "2");//调拨类型(2:组织内)
|
|
|
+ //调出方向
|
|
|
+ if("0".equals(direction)){
|
|
|
+ busProcess.set("creator", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//创建人
|
|
|
+ busProcess.set("nckd_applierv", ChangeDataUtils.getUser(info.getString("nckd_user_out")));//调拨申请人
|
|
|
+ }//调入方向
|
|
|
+ else if ("1".equals(direction)) {
|
|
|
+ busProcess.set("creator", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//创建人
|
|
|
+ busProcess.set("nckd_applierv", ChangeDataUtils.getUser(info.getString("nckd_user_in")));//调拨申请人
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
- //执行保存-提交-审核
|
|
|
- OperationResult saveResult = SaveServiceHelper.saveOperate("fa_change_dept", new DynamicObject[]{changeDept}, OperateOption.create());
|
|
|
- if (saveResult.isSuccess()) {
|
|
|
- info.set("nckd_flag", "1");
|
|
|
- SaveServiceHelper.save(new DynamicObject[]{info});
|
|
|
- this.operationResult.setShowMessage(true);
|
|
|
- this.operationResult.setSuccess(true);
|
|
|
- this.operationResult.setMessage("下推资产变更单成功");
|
|
|
- OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "fa_change_dept",saveResult.getSuccessPkIds().toArray(),OperateOption.create());
|
|
|
- OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "fa_change_dept",submitResult.getSuccessPkIds().toArray(),OperateOption.create());
|
|
|
- }else {
|
|
|
- this.operationResult.setShowMessage(true);
|
|
|
- this.operationResult.setSuccess(false);
|
|
|
- this.operationResult.setMessage("下推资产变更单失败");
|
|
|
- }
|
|
|
+ List<String> codeList =ChangeDataUtils.getCardNumber(info);
|
|
|
+ QFilter filter = new QFilter("number", QCP.in,codeList);
|
|
|
+ filter.and("isbak", QCP.equals, "0");
|
|
|
+ DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {filter});
|
|
|
+ for (int c = 0; c < card.length; c++) {
|
|
|
+ DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
|
|
|
+ DynamicObject fin = ChangeDataUtils.queryFinCard(cardInfo.getLong("id"));
|
|
|
+ BigDecimal originalval = BigDecimal.ZERO;
|
|
|
+ BigDecimal accumdepre = BigDecimal.ZERO;
|
|
|
+ BigDecimal decval = BigDecimal.ZERO;
|
|
|
+ BigDecimal preresidualval = BigDecimal.ZERO;
|
|
|
+ BigDecimal nckd_amountfield23 = BigDecimal.ZERO;
|
|
|
+ BigDecimal nckd_amountfield24 = BigDecimal.ZERO;
|
|
|
+ if (fin != null) {
|
|
|
+ originalval = fin.getBigDecimal("originalval");//资产原值(nckd_amountfield19)
|
|
|
+ accumdepre = fin.getBigDecimal("accumdepre");//累计折旧(nckd_amountfield20)
|
|
|
+ decval = fin.getBigDecimal("decval");//减值准备(nckd_amountfield21)
|
|
|
+ preresidualval = fin.getBigDecimal("preresidualval");//预计净残值(nckd_amountfield22)
|
|
|
+ nckd_amountfield23 = originalval.subtract(accumdepre);//预计清理净值(nckd_amountfield23 = nckd_amountfield19 - nckd_amountfield20)
|
|
|
+ nckd_amountfield24 = nckd_amountfield23.subtract(decval);//预计净残值(nckd_amountfield24 = nckd_amountfield19 - nckd_amountfield20 - nckd_amountfield21)
|
|
|
}
|
|
|
+ //创建资产调拨分录
|
|
|
+ DynamicObjectCollection entryEntity = busProcess.getDynamicObjectCollection("nckd_entryentity216");
|
|
|
+ DynamicObject entry1 = entryEntity.addNew();
|
|
|
+ entry1.set("nckd_basedatafield5", cardInfo);//资产编码
|
|
|
+ entry1.set("nckd_amountfield19", originalval);//预计清理原值
|
|
|
+ entry1.set("nckd_amountfield20", accumdepre);//预计清理累计折旧
|
|
|
+ entry1.set("nckd_amountfield21", decval);//预计清理减值准备
|
|
|
+ entry1.set("nckd_amountfield22", preresidualval);//预计清理残值
|
|
|
+ entry1.set("nckd_amountfield23", nckd_amountfield23);//预计清理净值
|
|
|
+ entry1.set("nckd_amountfield24", nckd_amountfield24);//预计清理净额
|
|
|
+ }
|
|
|
+
|
|
|
+ //执行保存-提交-审核
|
|
|
+ OperationResult saveResult = SaveServiceHelper.saveOperate("nckd_ywcld", new DynamicObject[]{busProcess}, OperateOption.create());
|
|
|
+ if (saveResult.isSuccess()){
|
|
|
+ info.set("nckd_flag", "1");
|
|
|
+ SaveServiceHelper.save(new DynamicObject[]{info});
|
|
|
+ errMsg.append("单据号: ").append(info.getString("number")).append("下推生成业务处理单成功!");
|
|
|
+ errMsg.append("\r\n");
|
|
|
+ OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "nckd_ywcld",saveResult.getSuccessPkIds().toArray(),OperateOption.create());
|
|
|
+ OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "nckd_ywcld",submitResult.getSuccessPkIds().toArray(),OperateOption.create());
|
|
|
+ }else {
|
|
|
+ errMsg.append(saveResult.getMessage());
|
|
|
+ errMsg.append("\r\n");
|
|
|
}
|
|
|
}
|
|
|
+ }else {
|
|
|
+ this.getView().showMessage("请至少选择一条数据");
|
|
|
}
|
|
|
}
|
|
|
}
|