|
@@ -4,9 +4,9 @@ package fi.fa.webService;
|
|
|
import com.alibaba.druid.util.StringUtils;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
-import kd.bos.coderule.api.CodeRuleInfo;
|
|
|
import kd.bos.dataentity.entity.DynamicObject;
|
|
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
|
+import kd.bos.entity.operate.result.OperationResult;
|
|
|
import kd.bos.openapi.common.custom.annotation.ApiController;
|
|
|
import kd.bos.openapi.common.custom.annotation.ApiMapping;
|
|
|
import kd.bos.openapi.common.custom.annotation.ApiParam;
|
|
@@ -15,8 +15,9 @@ import kd.bos.openapi.common.result.CustomApiResult;
|
|
|
import kd.bos.orm.query.QCP;
|
|
|
import kd.bos.orm.query.QFilter;
|
|
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|
|
-import kd.bos.servicehelper.coderule.CodeRuleServiceHelper;
|
|
|
+import kd.bos.servicehelper.operation.OperationServiceHelper;
|
|
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
|
|
+import nckd.sys.web.common.utils.OperateHelper;
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
import java.io.Serializable;
|
|
|
import java.util.ArrayList;
|
|
@@ -42,6 +43,7 @@ public class DispatchMidController implements Serializable {
|
|
|
for (int i = 0; i < data.size(); i++) {
|
|
|
try{
|
|
|
JSONObject eobject = data.getJSONObject(i);
|
|
|
+ //用来储存转换好的用户和组织id
|
|
|
HashMap<String , Long> map = new HashMap<>();
|
|
|
//第一步:保存进中间表
|
|
|
SaveMidDispatch(eobject);
|
|
@@ -94,6 +96,7 @@ public class DispatchMidController implements Serializable {
|
|
|
midDispatch.set("nckd_dept_in", jsonObject.getString("inDeptId"));//调入部门
|
|
|
midDispatch.set("nckd_used_user", jsonObject.getString("user"));//调入使用人
|
|
|
midDispatch.set("nckd_storeplace", jsonObject.getString("storeplace"));//调入存放地点
|
|
|
+ //拼接资产信息的组织和编码
|
|
|
String cardNumber = "";
|
|
|
JSONArray assetArray = jsonObject.getJSONArray("asset");
|
|
|
for (int j = 0; j < assetArray.size(); j++) {
|
|
@@ -117,9 +120,9 @@ public class DispatchMidController implements Serializable {
|
|
|
String user = jsonObject.getString("user");//使用人
|
|
|
List<String> numberList = new ArrayList<>();
|
|
|
// 校验该单据是否已经下推生成调拨单
|
|
|
- if (isAlreadyDispatched(billno)) {
|
|
|
- return "单据" + billno + "已经生成调拨单,请勿重复推送!";
|
|
|
- }
|
|
|
+// if (isAlreadyDispatched(billno)) {
|
|
|
+// return "单据" + billno + "已经生成调拨单,请勿重复推送!";
|
|
|
+// }
|
|
|
// 获取资产编号数组
|
|
|
JSONArray assetArray = jsonObject.getJSONArray("asset");
|
|
|
if (assetArray.isEmpty()) {
|
|
@@ -189,16 +192,10 @@ public class DispatchMidController implements Serializable {
|
|
|
//组织间,生成资产调出单
|
|
|
if ("0".equals(dispatchType)) {
|
|
|
DynamicObject dispatch = BusinessDataServiceHelper.newDynamicObject("fa_dispatch");
|
|
|
- //获取配置编码规则生成的编码
|
|
|
- CodeRuleInfo codeRule = CodeRuleServiceHelper.getCodeRule(dispatch.getDataEntityType().getName(), dispatch, null);
|
|
|
- String sysCode = CodeRuleServiceHelper.getNumber(codeRule, dispatch);
|
|
|
String nckd_card_real_code = jsonObject.getString("nckd_card_real_code");
|
|
|
- nckd_card_real_code = "A00100101900240800008";
|
|
|
- //拼接单据编号
|
|
|
- String firstTenChars = nckd_card_real_code.substring(0, 10);
|
|
|
- String billno = firstTenChars + sysCode;
|
|
|
+ nckd_card_real_code = "A00100101900240600007";
|
|
|
+
|
|
|
//单据头
|
|
|
- dispatch.set("billno", billno);//单据编号
|
|
|
dispatch.set("outuser", map.get("sendUser"));//调出申请人
|
|
|
dispatch.set("inuser", map.get("recieveUser"));//调入负责人
|
|
|
dispatch.set("dispatchdate", jsonObject.getDate("sendDate"));//调出日期
|
|
@@ -218,11 +215,12 @@ public class DispatchMidController implements Serializable {
|
|
|
dispatch.set("modifytime", jsonObject.getDate("sendDate"));//修改时间
|
|
|
dispatch.set("auditor", map.get("recieveUser"));//审核人
|
|
|
dispatch.set("auditdate", jsonObject.getDate("sendDate"));//审核时间
|
|
|
- dispatch.set("billstatus", "C");//默认审核
|
|
|
+ dispatch.set("billstatus", "A");//暂存
|
|
|
dispatch.set("appliant", map.get("sendUser"));//调拨申请人
|
|
|
//单据体
|
|
|
//根据资产编号查询实物卡片
|
|
|
- QFilter cardFilter = new QFilter("billno", QCP.equals,nckd_card_real_code);
|
|
|
+ QFilter cardFilter = new QFilter("number", QCP.equals,nckd_card_real_code);
|
|
|
+ cardFilter.and("isbak", QCP.equals, "0");
|
|
|
DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {cardFilter});
|
|
|
for (int c = 0; c < card.length; c++) {
|
|
|
DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
|
|
@@ -234,53 +232,92 @@ public class DispatchMidController implements Serializable {
|
|
|
entry1.set("dispatchqty", cardInfo.getInt("assetamount"));//数量
|
|
|
entry1.set("inusedept", map.get("inDeptId"));//调入使用部门
|
|
|
}
|
|
|
- SaveServiceHelper.save(new DynamicObject[]{dispatch});
|
|
|
+ //执行保存-提交-审核
|
|
|
+ OperationResult saveResult = SaveServiceHelper.saveOperate("fa_dispatch", new DynamicObject[]{dispatch}, OperateHelper.createOperate());
|
|
|
+ OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "fa_dispatch",saveResult.getSuccessPkIds().toArray(),OperateHelper.createOperate());
|
|
|
+ OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "fa_dispatch",submitResult.getSuccessPkIds().toArray(),OperateHelper.createOperate());
|
|
|
}//组织内,生成资产变更单
|
|
|
else if ("1".equals(dispatchType)) {
|
|
|
DynamicObject changeDept = BusinessDataServiceHelper.newDynamicObject("fa_change_dept");
|
|
|
- //获取配置编码规则生成的编码
|
|
|
- CodeRuleInfo codeRule = CodeRuleServiceHelper.getCodeRule(changeDept.getDataEntityType().getName(), changeDept, null);
|
|
|
- String sysCode = CodeRuleServiceHelper.getNumber(codeRule, changeDept);
|
|
|
String nckd_card_real_code = jsonObject.getString("nckd_card_real_code");
|
|
|
- nckd_card_real_code = "A00100101900240800008";
|
|
|
- //拼接单据编号
|
|
|
- String firstTenChars = nckd_card_real_code.substring(0, 10);
|
|
|
- String billno = firstTenChars + sysCode;
|
|
|
+ nckd_card_real_code = "A00100101900240600004";
|
|
|
+ DynamicObject orgInfo = queryOrg(map.get("orgId"));
|
|
|
//单据头
|
|
|
- changeDept.set("billno", billno);//单据编号
|
|
|
- changeDept.set("org", map.get("orgId"));//核算组织
|
|
|
+ changeDept.set("org", orgInfo);//核算组织
|
|
|
changeDept.set("changedate", jsonObject.getDate("sendDate"));//记账日期
|
|
|
- changeDept.set("appliantid", map.get("sendUser"));//变更申请人
|
|
|
+ changeDept.set("appliantid", getUser(jsonObject.getString("sendUser")));//变更申请人
|
|
|
changeDept.set("remark", jsonObject.getString("reason"));//调出原因
|
|
|
- changeDept.set("sourcetype", "5");//来源方式(5:API生成)
|
|
|
- changeDept.set("changetype", Long.parseLong("733953285719123968"));//变更类型,默认部门变更
|
|
|
+ changeDept.set("sourcetype", 2);//来源方式(5:API生成)
|
|
|
+ changeDept.set("changetype", queryChangeType(Long.parseLong("733953285719123968")));//变更类型,默认部门变更
|
|
|
changeDept.set("chtypedetail", "1");//变更类型明细默认实物变更1
|
|
|
changeDept.set("voucherflag", "A");//记账标识默认无需记账A
|
|
|
//制单信息
|
|
|
- changeDept.set("creator", map.get("sendUser"));//创建人
|
|
|
+ changeDept.set("creator", getUser(jsonObject.getString("sendUser")));//创建人
|
|
|
changeDept.set("createtime", jsonObject.getDate("sendDate"));//创建时间
|
|
|
- changeDept.set("modifier", map.get("recieveUser"));//修改人
|
|
|
+ changeDept.set("modifier", getUser(jsonObject.getString("recieveUser")));//修改人
|
|
|
changeDept.set("modifytime", jsonObject.getDate("sendDate"));//修改时间
|
|
|
- changeDept.set("auditor", map.get("recieveUser"));//审核人
|
|
|
+ changeDept.set("auditor", getUser(jsonObject.getString("recieveUser")));//审核人
|
|
|
changeDept.set("auditdate", jsonObject.getDate("sendDate"));//审核时间
|
|
|
- changeDept.set("billstatus", "C");//默认审核
|
|
|
+ changeDept.set("billstatus", "A");//默认审核
|
|
|
//单据体
|
|
|
//根据资产编号查询实物卡片
|
|
|
- QFilter cardFilter = new QFilter("billno", QCP.equals,nckd_card_real_code);
|
|
|
+ QFilter cardFilter = new QFilter("number", QCP.equals,nckd_card_real_code);
|
|
|
+ cardFilter.and("isbak", QCP.equals, "0");
|
|
|
DynamicObject[] card = BusinessDataServiceHelper.load("fa_card_real","id",new QFilter[] {cardFilter});
|
|
|
for (int c = 0; c < card.length; c++) {
|
|
|
DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(card[c].getPkValue(), card[c].getDynamicObjectType().getName());
|
|
|
- //创建变更详情分录
|
|
|
- DynamicObjectCollection entryEntity = changeDept.getDynamicObjectCollection("main_changebillentry");
|
|
|
- DynamicObject entry1 = entryEntity.addNew();
|
|
|
- entry1.set("m_realcard", cardInfo);//资产编码
|
|
|
- entry1.set("m_bef_headusedept", cardInfo.getDynamicObject("headusedept").getLong("id"));//变更前使用部门
|
|
|
- entry1.set("m_aft_headusedept", map.get("inDeptId"));//变更后使用部门
|
|
|
- entry1.set("m_bef_headuseperson", cardInfo.getDynamicObject("headuseperson").getLong("id"));//变更前使用人
|
|
|
- entry1.set("m_aft_headuseperson", map.get("user"));//变更后使用人
|
|
|
- entry1.set("m_bef_storeplace", cardInfo.getDynamicObject("storeplace").getLong("id"));//变动前存放地点
|
|
|
+ //查询财务卡片
|
|
|
+ DynamicObject fin = queryFinCard(cardInfo.getLong("id"));//财务卡片id
|
|
|
+ //创建变更字段分录
|
|
|
+ DynamicObjectCollection fieldentry = changeDept.getDynamicObjectCollection("fieldentry");
|
|
|
+ if (!map.get("inDeptId").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", jsonObject.getDate("sendDate"));//业务日期
|
|
|
+ entry1.set("field", "fa_card_real.headusedept");//变更字段-部门
|
|
|
+ entry1.set("beforevalue", String.valueOf(cardInfo.getDynamicObject("headusedept").getLong("id")));//变更前值
|
|
|
+ entry1.set("aftervalue", map.get("inDeptId").toString());//变更后值
|
|
|
+ entry1.set("realcardmasterid", cardInfo);//实物卡片id
|
|
|
+ entry1.set("fincard1", fin);//财务卡片
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isEmpty(cardInfo.getDynamicObject("headuseperson")) ||
|
|
|
+ ObjectUtils.isNotEmpty(cardInfo.getDynamicObject("headuseperson")) && map.get("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", jsonObject.getDate("sendDate"));//业务日期
|
|
|
+ entry2.set("field", "fa_card_real.headuseperson");//变更字段-使用人
|
|
|
+ entry2.set("beforevalue", beforevalue);//变更前值
|
|
|
+ entry2.set("aftervalue", map.get("user").toString());//变更后值
|
|
|
+ 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", queryDepreuse(Long.parseLong("418714318096331776")));//折旧用途默认
|
|
|
+ finentry1.set("fincard", fin);
|
|
|
+ finentry1.set("bizdate", jsonObject.getDate("sendDate"));
|
|
|
+
|
|
|
}
|
|
|
- SaveServiceHelper.save(new DynamicObject[]{changeDept});
|
|
|
+// //执行保存-提交-审核
|
|
|
+ OperationResult saveResult = SaveServiceHelper.saveOperate("fa_change_dept", new DynamicObject[]{changeDept}, OperateHelper.createOperate());
|
|
|
+ OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "fa_change_dept",saveResult.getSuccessPkIds().toArray(),OperateHelper.createOperate());
|
|
|
+ OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "fa_change_dept",submitResult.getSuccessPkIds().toArray(),OperateHelper.createOperate());
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -295,11 +332,11 @@ public class DispatchMidController implements Serializable {
|
|
|
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());
|
|
|
- Long orgId = Long.valueOf(orgControlInfo.getString("nckd_org_number"));
|
|
|
+ Long orgId = Long.parseLong(orgControlInfo.getString("nckd_org_number"));
|
|
|
return orgId;
|
|
|
}//组织对照表查询不到,查询组织表
|
|
|
else {
|
|
|
- QFilter filter = new QFilter("id", QCP.equals,Long.valueOf(eOrgId));
|
|
|
+ QFilter filter = new QFilter("id", QCP.equals,Long.parseLong(eOrgId));
|
|
|
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());
|
|
@@ -314,13 +351,12 @@ public class DispatchMidController implements Serializable {
|
|
|
* @param eUser
|
|
|
* @return Long
|
|
|
*/
|
|
|
- private Long getUser(String eUser) {
|
|
|
+ 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());
|
|
|
- Long userId = userInfo.getLong("id");
|
|
|
- return userId;
|
|
|
+ return userInfo;
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
@@ -331,17 +367,17 @@ public class DispatchMidController implements Serializable {
|
|
|
* @param jsonObject,map
|
|
|
* @return String
|
|
|
*/
|
|
|
- private String Control (JSONObject jsonObject, HashMap<String , Long> map) {
|
|
|
+ private String Control (JSONObject jsonObject, HashMap<String , Long> map) {
|
|
|
//查询人员
|
|
|
- Long sendUser = getUser(jsonObject.getString("sendUser"));//调出申请人
|
|
|
- Long recieveUser = getUser(jsonObject.getString("recieveUser"));//调入负责人
|
|
|
- Long user = getUser(jsonObject.getString("user"));//调入使用人
|
|
|
+ DynamicObject sendUser = getUser(jsonObject.getString("sendUser"));//调出申请人
|
|
|
+ DynamicObject recieveUser = getUser(jsonObject.getString("recieveUser"));//调入负责人
|
|
|
+ DynamicObject user = getUser(jsonObject.getString("user"));//调入使用人
|
|
|
if (ObjectUtils.isEmpty(sendUser) || ObjectUtils.isEmpty(recieveUser) || ObjectUtils.isEmpty(user)) {
|
|
|
return "人员信息转换失败";
|
|
|
}
|
|
|
- map.put("sendUser", sendUser);
|
|
|
- map.put("recieveUser", recieveUser);
|
|
|
- map.put("user", user);
|
|
|
+ map.put("sendUser", sendUser.getLong("id"));
|
|
|
+ map.put("recieveUser", recieveUser.getLong("id"));
|
|
|
+ map.put("user", user.getLong("id"));
|
|
|
|
|
|
//查询组织
|
|
|
Long outOrgId = getOrg(jsonObject.getString("outOrgId"));//调出组织
|
|
@@ -398,4 +434,60 @@ public class DispatchMidController implements Serializable {
|
|
|
resultString.append(errorCode).append("\n");
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @description 查询财务卡片
|
|
|
+ * @param realCardId
|
|
|
+ */
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @description 查询组织
|
|
|
+ * @param orgId
|
|
|
+ */
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @description 查询变更类型
|
|
|
+ * @param id
|
|
|
+ */
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @description 查询折旧用途
|
|
|
+ * @param id
|
|
|
+ */
|
|
|
+ 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;
|
|
|
+ }
|
|
|
}
|