123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344 |
- package fi.fa.opplugin;
- import com.alibaba.druid.util.StringUtils;
- import kd.bos.dataentity.OperateOption;
- import kd.bos.dataentity.entity.DynamicObject;
- import kd.bos.dataentity.entity.DynamicObjectCollection;
- 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.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 org.apache.commons.lang3.ObjectUtils;
- import java.util.ArrayList;
- import java.util.List;
- public class AssetMidBillOpPlugin extends AbstractOperationServicePlugIn {
- @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");
- String direction = info.getString("nckd_direction");
- String nckd_card_real_code = info.getString("nckd_card_number_tag");
- String[] asset = nckd_card_real_code.split(",");
-
- String[] keys = new String[asset.length];
- List<String> number = new ArrayList<>();
- List<String> cardNumber = new ArrayList<>();
-
- for (int j = 0; j < asset.length; j++) {
- String[] keyValue = asset[j].split(":");
- if (keyValue.length > 0) {
- number.add(keyValue[0]);
- }
- }
-
- QFilter cardFilter = new QFilter("number", QCP.in,number);
- DynamicObject[] eCard = BusinessDataServiceHelper.load("nckd_fa_card_real_list","nckd_card_real_code",new QFilter[] {cardFilter});
- for (DynamicObject object : eCard) {
- cardNumber.add(object.getString("nckd_card_real_code"));
- }
- if ("0".equals(dispatchType)) {
- List<String> list = new ArrayList<>();
- list.add("A00100101900240600002");
- list.add("A00100101900240600008");
- QFilter filter = new QFilter("number", QCP.in,"A00100101900240600002");
- filter.and("isbak", QCP.equals, "0");
- DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {filter});
- DynamicObject dispatch = BusinessDataServiceHelper.newDynamicObject("fa_dispatch");
-
- dispatch.set("dispatchdate", info.getDate("nckd_date_out"));
- dispatch.set("assetunit", getOrg(info.getString("nckd_org_out")));
- dispatch.set("inassetunit", getOrg(info.getString("nckd_org_in")));
- dispatch.set("org", getOrg(info.getString("nckd_org_out")));
- dispatch.set("inorg", getOrg(info.getString("nckd_org_in")));
- dispatch.set("reason", info.getString("nckd_reason"));
- dispatch.set("dispatchtype", "A");
- dispatch.set("changemode", 14);
- dispatch.set("currency", 1);
- dispatch.set("currencyrate", 1);
-
- dispatch.set("billstatus", "A");
-
- if("0".equals(direction)){
- dispatch.set("outuser", getUser(info.getString("nckd_user_out")));
- dispatch.set("inuser", getUser(info.getString("nckd_user_in")));
- dispatch.set("creator", getUser(info.getString("nckd_user_out")));
- dispatch.set("modifier", getUser(info.getString("nckd_user_out")));
- dispatch.set("auditor", getUser(info.getString("nckd_user_out")));
- dispatch.set("appliant", getUser(info.getString("nckd_user_out")));
- }
- else if ("1".equals(direction)) {
- dispatch.set("outuser", getUser(info.getString("nckd_user_in")));
- dispatch.set("inuser", getUser(info.getString("nckd_user_out")));
- dispatch.set("creator", getUser(info.getString("nckd_user_in")));
- dispatch.set("modifier", getUser(info.getString("nckd_user_in")));
- dispatch.set("auditor", getUser(info.getString("nckd_user_in")));
- dispatch.set("appliant", getUser(info.getString("nckd_user_in")));
- }
- for (int c = 0; c < card.length; c++) {
- DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
-
- DynamicObjectCollection entryEntity = dispatch.getDynamicObjectCollection("dispatchentry");
- DynamicObject entry1 = entryEntity.addNew();
- entry1.set("realcard", cardInfo);
- entry1.set("measurement", cardInfo.getDynamicObject("unit").getLong("id"));
- entry1.set("dispatchqty", cardInfo.getInt("assetamount"));
- entry1.set("inusedept", getOrg(info.getString("nckd_dept_in")));
- }
-
- OperationResult saveResult = SaveServiceHelper.saveOperate("fa_dispatch", new DynamicObject[]{dispatch}, OperateOption.create());
- if (saveResult.isSuccess()){
- info.set("nckd_flag", "1");
- SaveServiceHelper.save(new DynamicObject[]{info});
- this.operationResult.setSuccess(true);
- this.operationResult.setMessage("下推资产调出单成功");
- this.operationResult.setShowMessage(true);
- OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "fa_dispatch",saveResult.getSuccessPkIds().toArray(),OperateOption.create());
- OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "fa_dispatch",submitResult.getSuccessPkIds().toArray(),OperateOption.create());
- }else {
- this.operationResult.setShowMessage(true);
- this.operationResult.setSuccess(false);
- this.operationResult.setMessage("下推资产调出单单失败");
- }
- }else if ("1".equals(dispatchType)) {
- DynamicObject changeDept = BusinessDataServiceHelper.newDynamicObject("fa_change_dept");
-
- DynamicObject orgInfo = queryOrg(getOrg(info.getString("nckd_org_in")));
- changeDept.set("org", orgInfo);
- changeDept.set("changedate", info.getDate("nckd_date_out"));
- changeDept.set("appliantid", getUser(info.getString("nckd_user_out")));
- changeDept.set("remark", info.getString("nckd_reason"));
- changeDept.set("sourcetype", 2);
- changeDept.set("changetype", queryChangeType(Long.parseLong("733953285719123968")));
- changeDept.set("chtypedetail", "1");
- changeDept.set("voucherflag", "A");
- changeDept.set("billstatus", "A");
- QFilter filter = new QFilter("number", QCP.in,"A00100101900240600007");
- 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 = queryFinCard(cardInfo.getLong("id"));
-
- DynamicObjectCollection fieldentry = changeDept.getDynamicObjectCollection("fieldentry");
- if (!getOrg(info.getString("nckd_org_in")).equals(cardInfo.getDynamicObject("headusedept").getLong("id"))){
- DynamicObject entry1 = fieldentry.addNew();
- entry1.set("realcard1", cardInfo);
- entry1.set("depreuse1", 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", String.valueOf(cardInfo.getDynamicObject("headusedept").getLong("id")));
- entry1.set("aftervalue", getOrg(info.getString("nckd_dept_in")).toString());
- entry1.set("realcardmasterid", cardInfo);
- entry1.set("fincard1", fin);
- }
- if (ObjectUtils.isEmpty(cardInfo.getDynamicObject("headuseperson")) ||
- ObjectUtils.isNotEmpty(cardInfo.getDynamicObject("headuseperson")) && !getUser(info.getString("nckd_used_user")).equals(cardInfo.getDynamicObject("headuseperson").getLong("id"))) {
- String beforevalue = cardInfo.getDynamicObject("headuseperson") == null ? "" : String.valueOf(cardInfo.getDynamicObject("headuseperson").getLong("id"));
- DynamicObject entry2 = fieldentry.addNew();
- entry2.set("realcard1", cardInfo);
- entry2.set("depreuse1", 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", beforevalue);
- entry2.set("aftervalue", String.valueOf(getUser(info.getString("nckd_used_user")).getLong("id")));
- entry2.set("realcardmasterid", cardInfo);
- 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", queryDepreuse(Long.parseLong("418714318096331776")));
- finentry1.set("fincard", fin);
- finentry1.set("bizdate", info.getDate("nckd_date_out"));
- }
-
- 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("下推资产变更单失败");
- }
- }
- else if ("2".equals(dispatchType)) {
- DynamicObject busProcess = BusinessDataServiceHelper.newDynamicObject("nckd_ywcld");
- busProcess.set("nckd_bizdate", info.getDate("nckd_date_out"));
- busProcess.set("nckd_detailtype", "D");
- busProcess.set("nckd_costcompany", getOrg(info.getString("nckd_org_in")));
- busProcess.set("nckd_textfield1", info.getString("nckd_reason"));
- busProcess.set("nckd_applierv", getUser(info.getString("nckd_user_out")));
-
- busProcess.set("creator", getUser(info.getString("nckd_user_out")));
- busProcess.set("createtime", info.getDate("nckd_date_out"));
- busProcess.set("modifier", getUser(info.getString("nckd_user_out")));
- busProcess.set("modifytime", info.getDate("nckd_date_out"));
- busProcess.set("auditor", getUser(info.getString("nckd_user_out")));
- busProcess.set("auditdate", info.getDate("nckd_date_out"));
- busProcess.set("billstatus", "A");
- QFilter filter = new QFilter("number", QCP.equals,"A00100101900240700007");
- cardFilter.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());
-
- DynamicObjectCollection entryEntity = busProcess.getDynamicObjectCollection("nckd_entryentity6");
- DynamicObject entry1 = entryEntity.addNew();
- entry1.set("nckd_basedatafield", cardInfo);
- Integer count = Integer.valueOf(info.getString("nckd_count"));
- entry1.set("nckd_integerfield", count);
- }
-
- OperationResult saveResult = SaveServiceHelper.saveOperate("nckd_ywcld", new DynamicObject[]{busProcess}, 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", "nckd_ywcld",saveResult.getSuccessPkIds().toArray(),OperateOption.create());
- OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "nckd_ywcld",submitResult.getSuccessPkIds().toArray(),OperateOption.create());
- }else {
- this.operationResult.setShowMessage(true);
- this.operationResult.setSuccess(false);
- this.operationResult.setMessage("下推业务处理单失败");
- }
- }
- }
- }
- }
- }
-
- private DynamicObject getUser(String eUser) {
- QFilter filter = new QFilter("number", QCP.in, eUser);
- DynamicObject[] user = BusinessDataServiceHelper.load("bos_user","id",new QFilter[] {filter});
- if (user.length > 0) {
- DynamicObject userInfo = BusinessDataServiceHelper.loadSingle(user[0].getPkValue(), user[0].getDynamicObjectType().getName());
- return userInfo;
- }
- return null;
- }
-
- private Long getOrg(String eOrgId) {
- QFilter orgFilter = new QFilter("nckd_e_org", QCP.equals,eOrgId);
- DynamicObject[] orgControl = BusinessDataServiceHelper.load("nckd_base_org_ext","id",new QFilter[] {orgFilter});
- if (orgControl.length > 0) {
- DynamicObject orgControlInfo = BusinessDataServiceHelper.loadSingle(orgControl[0].getPkValue(), orgControl[0].getDynamicObjectType().getName());
- String number = orgControlInfo.getString("nckd_org_number");
- QFilter filter = new QFilter("number", QCP.equals,number);
- DynamicObject[] org = BusinessDataServiceHelper.load("bos_org","id",new QFilter[] {filter});
- if (org.length > 0) {
- DynamicObject orgInfo = BusinessDataServiceHelper.loadSingle(org[0].getPkValue(), org[0].getDynamicObjectType().getName());
- return orgInfo.getLong("id");
- }
- }
- return null;
- }
-
- private DynamicObject queryFinCard(Long realCardId) {
- QFilter cardFilter = new QFilter("realcardmasterid", QCP.equals,realCardId);
- DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_fin","id",new QFilter[] {cardFilter});
- for (int c = 0; c < card.length; c++) {
- DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
- return cardInfo;
- }
- return null;
- }
-
- private DynamicObject queryDepreuse(Long id) {
- QFilter orgQFilter= new QFilter("id", QCP.equals,id);
- DynamicObject[] depreuse = BusinessDataServiceHelper.load("fa_depreuse","id",new QFilter[] {orgQFilter});
- for (int c = 0; c < depreuse.length; c++) {
- DynamicObject depreuseInfo = BusinessDataServiceHelper.loadSingle(depreuse[c].getPkValue(), depreuse[c].getDynamicObjectType().getName());
- return depreuseInfo;
- }
- return null;
- }
-
- private DynamicObject queryChangeType(Long id) {
- QFilter orgQFilter= new QFilter("id", QCP.equals,id);
- DynamicObject[] changeType = BusinessDataServiceHelper.load("fa_change_type","id",new QFilter[] {orgQFilter});
- for (int c = 0; c < changeType.length; c++) {
- DynamicObject changeInfo = BusinessDataServiceHelper.loadSingle(changeType[c].getPkValue(), changeType[c].getDynamicObjectType().getName());
- return changeInfo;
- }
- return null;
- }
-
- private DynamicObject queryOrg(Long orgId) {
- QFilter orgQFilter= new QFilter("id", QCP.equals,orgId);
- DynamicObject[] org = BusinessDataServiceHelper.load("bos_org","id",new QFilter[] {orgQFilter});
- for (int c = 0; c < org.length; c++) {
- DynamicObject orgInfo = BusinessDataServiceHelper.loadSingle(org[c].getPkValue(), org[c].getDynamicObjectType().getName());
- return orgInfo;
- }
- return null;
- }
- }
|