|
@@ -1,12 +1,8 @@
|
|
|
package fi.fa.webService;
|
|
|
|
|
|
-
|
|
|
-import com.alibaba.druid.util.StringUtils;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
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,14 +11,8 @@ 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.operation.OperationServiceHelper;
|
|
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
|
|
-import kd.bos.dataentity.OperateOption;
|
|
|
-import org.apache.commons.lang3.ObjectUtils;
|
|
|
import java.io.Serializable;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* 接收e管家资产调拨单接口
|
|
@@ -43,27 +33,14 @@ 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);
|
|
|
- //组织,人员信息转换
|
|
|
- String errorChange = Control(eobject, map);
|
|
|
- //第二步:校验传入信息是否可以下推调拨单
|
|
|
- String errorCode = Check(eobject, map);
|
|
|
- //第三步:下推生成调拨单
|
|
|
- if (StringUtils.isEmpty(errorCode) && StringUtils.isEmpty(errorChange)) {
|
|
|
- //下推生成单
|
|
|
- Push(eobject, map);
|
|
|
- }
|
|
|
- // 错误拼接
|
|
|
- appendErrorMessages(resultString, errorChange, errorCode);
|
|
|
} catch (Exception e){
|
|
|
resultString.append("保存过程中发生异常:").append(e.getMessage()).append("\n");
|
|
|
}
|
|
|
}
|
|
|
return resultString.length() == 0
|
|
|
- ? CustomApiResult.success("推送调拨单成功!")
|
|
|
+ ? CustomApiResult.success("推送中间表成功成功!")
|
|
|
: CustomApiResult.fail("404", resultString.toString());
|
|
|
}
|
|
|
|
|
@@ -72,29 +49,61 @@ public class DispatchMidController implements Serializable {
|
|
|
* @param jsonObject
|
|
|
*/
|
|
|
private void SaveMidDispatch(JSONObject jsonObject) {
|
|
|
- DynamicObject midDispatch;
|
|
|
- //查询中间表,如果有则修改,没有则新增
|
|
|
- QFilter filter = new QFilter("number", QCP.equals, jsonObject.getString("billno"));
|
|
|
- DynamicObject[] mid = BusinessDataServiceHelper.load("nckd_e_dispatch_mid","id",new QFilter[] {filter});
|
|
|
- if (mid.length > 0) {
|
|
|
- midDispatch = BusinessDataServiceHelper.loadSingle(mid[0].getPkValue(), mid[0].getDynamicObjectType().getName());
|
|
|
- }else {
|
|
|
- midDispatch = BusinessDataServiceHelper.newDynamicObject("nckd_e_dispatch_mid");
|
|
|
- }
|
|
|
+ String dispatchType = jsonObject.getString("dispatchType");
|
|
|
+ DynamicObject minInfo = null;
|
|
|
+ if ("0".equals(dispatchType)) {
|
|
|
+ //查询调出中间表,如果有则修改,没有则新增
|
|
|
+ QFilter filter = new QFilter("number", QCP.equals, jsonObject.getString("billno"));
|
|
|
+ DynamicObject[] mid = BusinessDataServiceHelper.load("nckd_e_dispatch_mid","id",new QFilter[] {filter});
|
|
|
+ if (mid.length > 0) {
|
|
|
+ minInfo = BusinessDataServiceHelper.loadSingle(mid[0].getPkValue(), mid[0].getDynamicObjectType().getName());
|
|
|
+ }else {
|
|
|
+ minInfo = BusinessDataServiceHelper.newDynamicObject("nckd_e_dispatch_mid");
|
|
|
+ }
|
|
|
+
|
|
|
+ minInfo.set("nckd_changemode", "调出");//减少方式默认调出
|
|
|
+ minInfo.set("nckd_user_out", jsonObject.getString("sendUser"));//调出类型对应人员
|
|
|
+ minInfo.set("nckd_user_in", jsonObject.getString("recieveUser"));//调入负责人
|
|
|
+ minInfo.set("nckd_org_out", jsonObject.getString("outOrgId"));//调出组织
|
|
|
+ minInfo.set("nckd_org_in", jsonObject.getString("orgId"));//调入组织
|
|
|
+ minInfo.set("nckd_used_user", jsonObject.getString("user"));//调入使用人
|
|
|
+ minInfo.set("nckd_direction", jsonObject.getString("direction"));//调入调出类型
|
|
|
+ minInfo.set("nckd_storeplace", jsonObject.getString("storeplace"));//调入存放地点
|
|
|
+ } else if ("1".equals(dispatchType)) {
|
|
|
+ //查询变更中间表,如果有则修改,没有则新增
|
|
|
+ QFilter filter = new QFilter("number", QCP.equals, jsonObject.getString("billno"));
|
|
|
+ DynamicObject[] mid = BusinessDataServiceHelper.load("nckd_e_change_mid","id",new QFilter[] {filter});
|
|
|
+ if (mid.length > 0) {
|
|
|
+ minInfo = BusinessDataServiceHelper.loadSingle(mid[0].getPkValue(), mid[0].getDynamicObjectType().getName());
|
|
|
+ }else {
|
|
|
+ minInfo = BusinessDataServiceHelper.newDynamicObject("nckd_e_change_mid");
|
|
|
+ }
|
|
|
+ minInfo.set("nckd_user_out", jsonObject.getString("sendUser"));//调出类型对应人员
|
|
|
+ minInfo.set("nckd_user_in", jsonObject.getString("recieveUser"));//调入负责人
|
|
|
+ minInfo.set("nckd_org_in", jsonObject.getString("orgId"));//归属机构
|
|
|
+ minInfo.set("nckd_used_user", jsonObject.getString("user"));//调入使用人
|
|
|
+ minInfo.set("nckd_direction", jsonObject.getString("direction"));//调入调出类型
|
|
|
+ minInfo.set("nckd_storeplace", jsonObject.getString("storeplace"));//调入存放地点
|
|
|
+ } else if ("2".equals(dispatchType)) {
|
|
|
+ //查询报废单中间表,如果有则修改,没有则新增
|
|
|
+ QFilter filter = new QFilter("number", QCP.equals, jsonObject.getString("billno"));
|
|
|
+ DynamicObject[] mid = BusinessDataServiceHelper.load("nckd_e_discard_mid","id",new QFilter[] {filter});
|
|
|
+ if (mid.length > 0) {
|
|
|
+ minInfo = BusinessDataServiceHelper.loadSingle(mid[0].getPkValue(), mid[0].getDynamicObjectType().getName());
|
|
|
+ }else {
|
|
|
+ minInfo = BusinessDataServiceHelper.newDynamicObject("nckd_e_discard_mid");
|
|
|
+ }
|
|
|
+ minInfo.set("nckd_org_in", jsonObject.getString("orgId"));//归属机构
|
|
|
+ minInfo.set("nckd_user_out", jsonObject.getString("sendUser"));//报废申请人
|
|
|
|
|
|
- midDispatch.set("number", jsonObject.getString("billno"));//来源单据号
|
|
|
- midDispatch.set("nckd_user_out", jsonObject.getString("sendUser"));//调出类型对应人员
|
|
|
- midDispatch.set("nckd_user_in", jsonObject.getString("recieveUser"));//调入负责人
|
|
|
- midDispatch.set("nckd_date_out", jsonObject.getDate("sendDate"));//调出日期
|
|
|
- midDispatch.set("nckd_org_out", jsonObject.getString("outOrgId"));//调出组织
|
|
|
- midDispatch.set("nckd_org_in", jsonObject.getString("orgId"));//调入组织
|
|
|
- midDispatch.set("nckd_reason", jsonObject.getString("reason"));//调拨原因
|
|
|
- midDispatch.set("nckd_changemode", "调出");//减少方式默认调出
|
|
|
- midDispatch.set("nckd_dispatch_type", jsonObject.getString("dispatchType"));//调拨类型 枚举 组织间,组织内
|
|
|
- midDispatch.set("nckd_dept_in", jsonObject.getString("inDeptId"));//调入部门
|
|
|
- midDispatch.set("nckd_used_user", jsonObject.getString("user"));//调入使用人
|
|
|
- midDispatch.set("nckd_storeplace", jsonObject.getString("storeplace"));//调入存放地点
|
|
|
- midDispatch.set("nckd_direction", jsonObject.getString("direction"));//调入存放地点
|
|
|
+ }
|
|
|
+ minInfo.set("number", jsonObject.getString("billno"));//来源单据号
|
|
|
+ minInfo.set("nckd_date_out", jsonObject.getDate("sendDate"));//调出日期
|
|
|
+ minInfo.set("nckd_reason", jsonObject.getString("reason"));//调拨原因
|
|
|
+ minInfo.set("nckd_dispatch_type", jsonObject.getString("dispatchType"));//调拨类型 枚举 组织间,组织内
|
|
|
+ minInfo.set("nckd_dept_in", jsonObject.getString("inDeptId"));//调入部门
|
|
|
+ minInfo.set("createtime", jsonObject.getDate("sendDate"));//创建时间
|
|
|
+ minInfo.set("status", "A");//暂存
|
|
|
//拼接资产信息的组织和编码
|
|
|
String cardNumber = "";
|
|
|
JSONArray assetArray = jsonObject.getJSONArray("asset");
|
|
@@ -103,514 +112,12 @@ public class DispatchMidController implements Serializable {
|
|
|
JSONObject asset = assetArray.getJSONObject(j);
|
|
|
String number = asset.getString("number");
|
|
|
String orgId = asset.getString("orgId");
|
|
|
- cardNumber = number+ ":" + orgId + ",";
|
|
|
+ cardNumber = cardNumber + number+ ":" + orgId + ",";
|
|
|
if ("2".equals(jsonObject.getString("dispatchType"))) {
|
|
|
- midDispatch.set("nckd_count", asset.getString("count"));//资产数量
|
|
|
- }
|
|
|
- }
|
|
|
- midDispatch.set("nckd_card_number_tag", cardNumber);
|
|
|
- SaveServiceHelper.save(new DynamicObject[]{midDispatch});
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @description e管家推送数据校验
|
|
|
- * @param jsonObject,map
|
|
|
- * @return String
|
|
|
- */
|
|
|
- private String Check(JSONObject jsonObject, HashMap<String , Long> map) {
|
|
|
- String billno = jsonObject.getString("billno");//源单编号
|
|
|
- String user = jsonObject.getString("user");//使用人
|
|
|
- String dispatchType = jsonObject.getString("dispatchType");//调拨类型
|
|
|
- List<String> numberList = new ArrayList<>();
|
|
|
- // 校验该单据是否已经下推生成调拨单
|
|
|
- if (isAlreadyDispatched(billno)) {
|
|
|
- return "单据" + billno + "已经生成调拨单,请勿重复推送!";
|
|
|
- }
|
|
|
- // 获取资产编号数组
|
|
|
- JSONArray assetArray = jsonObject.getJSONArray("asset");
|
|
|
- if (assetArray.isEmpty()) {
|
|
|
- return "单据" + billno + "未绑定资产信息,生成调拨单失败";
|
|
|
- }
|
|
|
- Boolean isSame = true;
|
|
|
- //校验资产信息的组织是否相同,不相同则不进行处理
|
|
|
- for (int j = 0; j < assetArray.size(); j++) {
|
|
|
- //判断资产的组织是否相同
|
|
|
- JSONObject asset = assetArray.getJSONObject(j);
|
|
|
- if (!asset.getString("orgId").equals(assetArray.getJSONObject(0).getString("orgId"))) {
|
|
|
- isSame = false;
|
|
|
- }
|
|
|
- numberList.add(asset.getString("number"));
|
|
|
- }
|
|
|
- //组织相同则处理
|
|
|
- if (isSame) {
|
|
|
- String e_orgId = assetArray.getJSONObject(0).getString("orgId");
|
|
|
- //查询e管家实物卡片清单
|
|
|
- QFilter filter = new QFilter("number", QCP.in,numberList);
|
|
|
- DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
|
|
|
- if (dynamicObjects.length == 0 || dynamicObjects.length != numberList.size()) {
|
|
|
- return "单据"+billno+"绑定的资产有未同步至星瀚的数据,生成调拨单失败";
|
|
|
- }else {
|
|
|
- DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(dynamicObjects[0].getPkValue(), dynamicObjects[0].getDynamicObjectType().getName());
|
|
|
- //获取星瀚资产编码,查询关联的e管家实物卡片清单数量
|
|
|
- String code = cardInfo.getString("nckd_card_real_code");
|
|
|
- if (StringUtils.isEmpty(code)) {
|
|
|
- //星瀚未生成实物卡片,更新实物卡片清单数据-查询组织对照表
|
|
|
- Long orgId = getOrg(e_orgId);
|
|
|
- if (ObjectUtils.isNotEmpty(orgId) && ("0".equals(dispatchType))) {
|
|
|
- //更新归属机构,归属部门,使用人
|
|
|
- for (int a = 0; a < dynamicObjects.length ; a++) {
|
|
|
- DynamicObject ecardInfoList = BusinessDataServiceHelper.loadSingle(dynamicObjects[a].getPkValue(), dynamicObjects[a].getDynamicObjectType().getName());
|
|
|
- ecardInfoList.set("nckd_orgfield",orgId);
|
|
|
- ecardInfoList.set("nckd_dept",map.get("inDeptId"));
|
|
|
- SaveServiceHelper.save(new DynamicObject[]{ecardInfoList});
|
|
|
- }
|
|
|
- }else if (ObjectUtils.isNotEmpty(orgId) && "1".equals(dispatchType)) {
|
|
|
- //更新是否报废为是
|
|
|
- for (int a = 0; a < dynamicObjects.length ; a++) {
|
|
|
- DynamicObject ecardInfoList = BusinessDataServiceHelper.loadSingle(dynamicObjects[a].getPkValue(), dynamicObjects[a].getDynamicObjectType().getName());
|
|
|
- ecardInfoList.set("nckd_dept",map.get("inDeptId"));
|
|
|
- ecardInfoList.set("nckd_use_name",user);
|
|
|
- SaveServiceHelper.save(new DynamicObject[]{ecardInfoList});
|
|
|
- }
|
|
|
- }
|
|
|
- else if (ObjectUtils.isNotEmpty(orgId) && "2".equals(dispatchType)) {
|
|
|
- //更新是否报废为是
|
|
|
- for (int a = 0; a < dynamicObjects.length ; a++) {
|
|
|
- DynamicObject ecardInfoList = BusinessDataServiceHelper.loadSingle(dynamicObjects[a].getPkValue(), dynamicObjects[a].getDynamicObjectType().getName());
|
|
|
- ecardInfoList.set("nckd_discard",1);
|
|
|
- SaveServiceHelper.save(new DynamicObject[]{ecardInfoList});
|
|
|
- }
|
|
|
- } else {
|
|
|
- return "资产信息的组织在组织对照表中未查询到数据,生成调拨单失败";
|
|
|
- }
|
|
|
- return "星瀚系统未生成实物卡片,已更新e管家实物卡片清单";
|
|
|
- }else {
|
|
|
- //查询e管家实物卡片清单
|
|
|
- QFilter qfilter = new QFilter("nckd_card_real_code", QCP.equals,code);
|
|
|
- DynamicObject[] cardObject = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {qfilter});
|
|
|
- //e管家推送的清单和星瀚系统保存的清单数量不一致,返回错误信息并且不能生成调拨单
|
|
|
- if (cardObject.length > 0 && assetArray.size() != cardObject.length) {
|
|
|
- return "单据"+billno+"绑定的资产信息与星瀚实物卡片数量不一致,生成调拨单失败";
|
|
|
- }
|
|
|
- jsonObject.put("nckd_card_real_code", code);
|
|
|
- }
|
|
|
- }
|
|
|
- }else {
|
|
|
- //资产信息组织不同
|
|
|
- return "单据"+billno+"绑定的资产信息组织不相同,生成调拨单失败";
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @description 下推生成资产调拨单
|
|
|
- * @param jsonObject,map
|
|
|
- */
|
|
|
- private void Push(JSONObject jsonObject, HashMap<String , Long> map) {
|
|
|
- String dispatchType = jsonObject.getString("dispatchType");
|
|
|
- String direction = jsonObject.getString("direction");
|
|
|
- //组织间,生成资产调出单
|
|
|
- if ("0".equals(dispatchType)) {
|
|
|
- DynamicObject dispatch = BusinessDataServiceHelper.newDynamicObject("fa_dispatch");
|
|
|
- String nckd_card_real_code = jsonObject.getString("nckd_card_real_code");
|
|
|
-// nckd_card_real_code = "A00100101900240600008";
|
|
|
- //单据头
|
|
|
- dispatch.set("dispatchdate", jsonObject.getDate("sendDate"));//调出日期
|
|
|
- dispatch.set("assetunit", map.get("outOrgId"));//调出组织
|
|
|
- dispatch.set("inassetunit", map.get("orgId"));//调入组织
|
|
|
- dispatch.set("org", map.get("outOrgId"));//调出核算组织
|
|
|
- dispatch.set("inorg", map.get("orgId"));//调入核算组织
|
|
|
- dispatch.set("reason", jsonObject.getString("reason"));//调出原因
|
|
|
- dispatch.set("dispatchtype", "A");//调拨类型 A="平价调拨",B="非平价调拨"
|
|
|
- dispatch.set("changemode", 14);//减少方式默认"调出"
|
|
|
- dispatch.set("currency", 1);//币种
|
|
|
- dispatch.set("currencyrate", 1);//结算汇率
|
|
|
- //制单信息
|
|
|
- dispatch.set("createtime", jsonObject.getDate("sendDate"));//创建时间
|
|
|
- dispatch.set("modifytime", jsonObject.getDate("sendDate"));//修改时间
|
|
|
- dispatch.set("auditdate", jsonObject.getDate("sendDate"));//审核时间
|
|
|
- dispatch.set("billstatus", "A");//暂存
|
|
|
- //调出方向
|
|
|
- if("0".equals(direction)){
|
|
|
- dispatch.set("outuser", map.get("sendUser"));//调出申请人
|
|
|
- dispatch.set("inuser", map.get("recieveUser"));//调入负责人
|
|
|
- dispatch.set("creator", map.get("sendUser"));//创建人
|
|
|
- dispatch.set("modifier", map.get("sendUser"));//修改人
|
|
|
- dispatch.set("auditor", map.get("sendUser"));//审核人
|
|
|
- dispatch.set("appliant", map.get("sendUser"));//调拨申请人
|
|
|
- }//调入方向
|
|
|
- else if ("1".equals(direction)) {
|
|
|
- dispatch.set("outuser", map.get("recieveUser"));//调出申请人
|
|
|
- dispatch.set("inuser", map.get("sendUser"));//调入负责人
|
|
|
- dispatch.set("creator", map.get("recieveUser"));//创建人
|
|
|
- dispatch.set("modifier", map.get("recieveUser"));//修改人
|
|
|
- dispatch.set("auditor", map.get("recieveUser"));//审核人
|
|
|
- dispatch.set("appliant", map.get("recieveUser"));//调拨申请人
|
|
|
- }
|
|
|
- //单据体
|
|
|
- //根据资产编号查询实物卡片
|
|
|
- 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 = 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", map.get("inDeptId"));//调入使用部门
|
|
|
- }
|
|
|
- //执行保存-提交-审核
|
|
|
- OperationResult saveResult = SaveServiceHelper.saveOperate("fa_dispatch", new DynamicObject[]{dispatch}, OperateOption.create());
|
|
|
- if (saveResult.isSuccess()){
|
|
|
- //生单后反写中间表,防止反复生单
|
|
|
- OncePush(jsonObject.getString("billno"));
|
|
|
- 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 if ("1".equals(dispatchType)) {
|
|
|
- DynamicObject changeDept = BusinessDataServiceHelper.newDynamicObject("fa_change_dept");
|
|
|
- String nckd_card_real_code = jsonObject.getString("nckd_card_real_code");
|
|
|
-// nckd_card_real_code = "A00100101900240600007";
|
|
|
- DynamicObject orgInfo = queryOrg(map.get("orgId"));
|
|
|
- //单据头
|
|
|
- changeDept.set("org", orgInfo);//核算组织
|
|
|
- changeDept.set("changedate", jsonObject.getDate("sendDate"));//记账日期
|
|
|
- changeDept.set("remark", jsonObject.getString("reason"));//调出原因
|
|
|
- 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("createtime", jsonObject.getDate("sendDate"));//创建时间
|
|
|
- changeDept.set("modifytime", jsonObject.getDate("sendDate"));//修改时间
|
|
|
- changeDept.set("auditdate", jsonObject.getDate("sendDate"));//审核时间
|
|
|
- changeDept.set("billstatus", "A");//默认审核
|
|
|
- //调出方向
|
|
|
- if("0".equals(direction)){
|
|
|
- changeDept.set("creator", getUser(jsonObject.getString("sendUser")));//创建人
|
|
|
- changeDept.set("modifier", getUser(jsonObject.getString("sendUser")));//修改人
|
|
|
- changeDept.set("auditor", getUser(jsonObject.getString("sendUser")));//审核人
|
|
|
- changeDept.set("appliantid", getUser(jsonObject.getString("sendUser")));//变更申请人
|
|
|
- }//调入方向
|
|
|
- else if ("1".equals(direction)) {
|
|
|
- changeDept.set("creator", getUser(jsonObject.getString("recieveUser")));//创建人
|
|
|
- changeDept.set("modifier", getUser(jsonObject.getString("recieveUser")));//修改人
|
|
|
- changeDept.set("auditor", getUser(jsonObject.getString("recieveUser")));//审核人
|
|
|
- changeDept.set("appliantid", getUser(jsonObject.getString("recieveUser")));//变更申请人
|
|
|
- }
|
|
|
- //单据体
|
|
|
- //根据资产编号查询实物卡片
|
|
|
- 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());
|
|
|
- //查询财务卡片
|
|
|
- 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"));
|
|
|
-
|
|
|
- }
|
|
|
- //执行保存-提交-审核
|
|
|
- OperationResult saveResult = SaveServiceHelper.saveOperate("fa_change_dept", new DynamicObject[]{changeDept}, OperateOption.create());
|
|
|
- if (saveResult.isSuccess()) {
|
|
|
- //生单后反写中间表,防止反复生单
|
|
|
- OncePush(jsonObject.getString("billno"));
|
|
|
- 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 if ("2".equals(dispatchType)) {
|
|
|
- DynamicObject busProcess = BusinessDataServiceHelper.newDynamicObject("nckd_ywcld");
|
|
|
- String nckd_card_real_code = jsonObject.getString("nckd_card_real_code");
|
|
|
-// nckd_card_real_code = "A00100101900240700007";
|
|
|
- DynamicObject orgInfo = queryOrg(map.get("orgId"));
|
|
|
- busProcess.set("nckd_bizdate", jsonObject.getDate("sendDate"));//业务日期
|
|
|
- busProcess.set("nckd_detailtype", "D");//业务类型 D:报废
|
|
|
- busProcess.set("nckd_costcompany", map.get("orgId"));//资产组织
|
|
|
- busProcess.set("nckd_textfield1", jsonObject.getString("reason"));//摘要事由
|
|
|
- busProcess.set("nckd_applierv", getUser(jsonObject.getString("sendUser")));//制单人
|
|
|
-
|
|
|
- //制单信息
|
|
|
- busProcess.set("creator", getUser(jsonObject.getString("sendUser")));//创建人
|
|
|
- busProcess.set("createtime", jsonObject.getDate("sendDate"));//创建时间
|
|
|
- busProcess.set("modifier", getUser(jsonObject.getString("sendUser")));//修改人
|
|
|
- busProcess.set("modifytime", jsonObject.getDate("sendDate"));//修改时间
|
|
|
- busProcess.set("auditor", getUser(jsonObject.getString("sendUser")));//审核人
|
|
|
- busProcess.set("auditdate", jsonObject.getDate("sendDate"));//审核时间
|
|
|
- busProcess.set("billstatus", "A");//状态
|
|
|
- //单据体
|
|
|
- //根据资产编号查询实物卡片
|
|
|
- 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 = busProcess.getDynamicObjectCollection("nckd_entryentity6");
|
|
|
- DynamicObject entry1 = entryEntity.addNew();
|
|
|
- entry1.set("nckd_basedatafield", cardInfo);//资产编码
|
|
|
- Integer count = Integer.valueOf(jsonObject.getJSONArray("asset").getJSONObject(0).getString("count"));
|
|
|
- entry1.set("nckd_integerfield", count);//报废数量
|
|
|
- }
|
|
|
- //执行保存-提交-审核
|
|
|
- OperationResult saveResult = SaveServiceHelper.saveOperate("nckd_ywcld", new DynamicObject[]{busProcess}, OperateOption.create());
|
|
|
- if (saveResult.isSuccess()){
|
|
|
- //生单后反写中间表,防止反复生单
|
|
|
- OncePush(jsonObject.getString("billno"));
|
|
|
- OperationResult submitResult = OperationServiceHelper.executeOperate("submit", "nckd_ywcld",saveResult.getSuccessPkIds().toArray(),OperateOption.create());
|
|
|
- OperationResult auditResult = OperationServiceHelper.executeOperate("audit", "nckd_ywcld",submitResult.getSuccessPkIds().toArray(),OperateOption.create());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @description 查询组织对照表获取组织id
|
|
|
- * @param eOrgId
|
|
|
- * @return Long
|
|
|
- */
|
|
|
- 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");
|
|
|
+ minInfo.set("nckd_count", asset.getString("count"));//资产数量
|
|
|
}
|
|
|
}
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @description 查询用户表获取用户
|
|
|
- * @param eUser
|
|
|
- * @return Long
|
|
|
- */
|
|
|
- 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;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * @description e管家数据转换为星瀚数据
|
|
|
- * @param jsonObject,map
|
|
|
- * @return String
|
|
|
- */
|
|
|
- private String Control(JSONObject jsonObject, HashMap<String , Long> map) {
|
|
|
- String dispatchType = jsonObject.getString("dispatchType");
|
|
|
- if ("0".equals(dispatchType)) {
|
|
|
- //查询人员
|
|
|
- DynamicObject sendUser = getUser(jsonObject.getString("sendUser"));//调出申请人
|
|
|
- DynamicObject recieveUser = getUser(jsonObject.getString("recieveUser"));//调入负责人
|
|
|
- if (ObjectUtils.isEmpty(sendUser) || ObjectUtils.isEmpty(recieveUser)) {
|
|
|
- return "人员信息转换失败";
|
|
|
- }
|
|
|
- map.put("sendUser", sendUser.getLong("id"));
|
|
|
- map.put("recieveUser", recieveUser.getLong("id"));
|
|
|
- //查询组织
|
|
|
- Long outOrgId = getOrg(jsonObject.getString("outOrgId"));//调出组织
|
|
|
- Long orgId = getOrg(jsonObject.getString("orgId"));//调入组织
|
|
|
- Long inDeptId = getOrg(jsonObject.getString("inDeptId"));//调入部门
|
|
|
- if (ObjectUtils.isEmpty(outOrgId) || ObjectUtils.isEmpty(orgId) || ObjectUtils.isEmpty(inDeptId)) {
|
|
|
- return "组织信息转换失败";
|
|
|
- }
|
|
|
- map.put("outOrgId", outOrgId);
|
|
|
- map.put("orgId", orgId);
|
|
|
- map.put("inDeptId", inDeptId);
|
|
|
- return null;
|
|
|
- } else if ("1".equals(dispatchType)) {
|
|
|
- //查询人员
|
|
|
- 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.getLong("id"));
|
|
|
- map.put("recieveUser", recieveUser.getLong("id"));
|
|
|
- map.put("user", user.getLong("id"));
|
|
|
- //查询组织
|
|
|
- Long orgId = getOrg(jsonObject.getString("orgId"));//调入组织
|
|
|
- Long inDeptId = getOrg(jsonObject.getString("inDeptId"));//调入部门
|
|
|
- if (ObjectUtils.isEmpty(orgId) || ObjectUtils.isEmpty(inDeptId)) {
|
|
|
- return "组织信息转换失败";
|
|
|
- }
|
|
|
- map.put("orgId", orgId);
|
|
|
- map.put("inDeptId", inDeptId);
|
|
|
- return null;
|
|
|
- }else if ("2".equals(dispatchType)) {
|
|
|
- //查询人员
|
|
|
- DynamicObject sendUser = getUser(jsonObject.getString("sendUser"));//调出申请人
|
|
|
- if (ObjectUtils.isEmpty(sendUser)) {
|
|
|
- return "人员信息转换失败";
|
|
|
- }
|
|
|
- map.put("sendUser", sendUser.getLong("id"));
|
|
|
- //查询组织
|
|
|
- Long orgId = getOrg(jsonObject.getString("orgId"));//资产组织
|
|
|
- if (ObjectUtils.isEmpty(orgId)) {
|
|
|
- return "组织信息转换失败";
|
|
|
- }
|
|
|
- map.put("orgId", orgId);
|
|
|
- return null;
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * @description 生单后反写中间表,防止反复生单
|
|
|
- * @param billno
|
|
|
- * @return String
|
|
|
- */
|
|
|
- private void OncePush(String billno) {
|
|
|
- QFilter filter = new QFilter("number", QCP.equals, billno);
|
|
|
- DynamicObject[] mid = BusinessDataServiceHelper.load("nckd_e_dispatch_mid","id",new QFilter[] {filter});
|
|
|
- DynamicObject midDispatch = BusinessDataServiceHelper.loadSingle(mid[0].getPkValue(), mid[0].getDynamicObjectType().getName());
|
|
|
- midDispatch.set("nckd_flag", "1");
|
|
|
- SaveServiceHelper.save(new DynamicObject[]{midDispatch});
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @description 判断是否已经下推生成调拨单
|
|
|
- * @param billno
|
|
|
- * @return boolean
|
|
|
- */
|
|
|
- private boolean isAlreadyDispatched(String billno) {
|
|
|
- QFilter flagFilter = new QFilter("number", QCP.equals, billno);
|
|
|
- DynamicObject[] mid = BusinessDataServiceHelper.load("nckd_e_dispatch_mid", "id", new QFilter[]{flagFilter});
|
|
|
- if (mid.length > 0) {
|
|
|
- DynamicObject midDispatch = BusinessDataServiceHelper.loadSingle(mid[0].getPkValue(), mid[0].getDynamicObjectType().getName());
|
|
|
- String flag = midDispatch.getString("nckd_flag");
|
|
|
- return "1".equals(flag);
|
|
|
- }
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @description 拼接错误信息
|
|
|
- * @param resultString,errorChange,errorCode
|
|
|
- */
|
|
|
- private void appendErrorMessages(StringBuilder resultString, String errorChange, String errorCode) {
|
|
|
- if (!StringUtils.isEmpty(errorChange)) {
|
|
|
- resultString.append(errorChange).append("\n");
|
|
|
- }
|
|
|
- if (!StringUtils.isEmpty(errorCode)) {
|
|
|
- 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;
|
|
|
+ minInfo.set("nckd_card_number", cardNumber);
|
|
|
+ SaveServiceHelper.save(new DynamicObject[]{minInfo});
|
|
|
}
|
|
|
}
|