package fi.fa.webService; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.openapi.common.custom.annotation.ApiController; import kd.bos.openapi.common.custom.annotation.ApiMapping; import kd.bos.openapi.common.custom.annotation.ApiParam; import kd.bos.openapi.common.custom.annotation.ApiPostMapping; 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.SaveServiceHelper; import java.io.Serializable; /** * 接收e管家资产调拨单接口 */ @ApiController(value = "midDispatch", desc = "自定义API 中间表新增") @ApiMapping(value = "saveMidDispatchApi") public class DispatchMidController implements Serializable { /** * @description 资产调拨单中间表新增接口,资产调拨单下推接口 * @param info * @return CustomApiResult */ @ApiPostMapping(value = "/add", desc = "新增资产调拨单中间表") public CustomApiResult AddMidDispatch (@ApiParam(value = "e管家资产调拨单") JSONObject info) { StringBuilder resultString = new StringBuilder(); JSONArray data = info.getJSONArray("data"); //循环传入的数据 for (int i = 0; i < data.size(); i++) { try{ JSONObject eobject = data.getJSONObject(i); //第一步:保存进中间表 SaveMidDispatch(eobject); } catch (Exception e){ resultString.append("保存过程中发生异常:").append(e.getMessage()).append("\n"); } } return resultString.length() == 0 ? CustomApiResult.success("推送中间表成功成功!") : CustomApiResult.fail("404", resultString.toString()); } /** * @description 保存中间表 * @param jsonObject */ private void SaveMidDispatch(JSONObject jsonObject) { 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"));//报废申请人 } 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"); for (int j = 0; j < assetArray.size(); j++) { //判断资产的组织是否相同 JSONObject asset = assetArray.getJSONObject(j); String number = asset.getString("number"); String orgId = asset.getString("orgId"); cardNumber = cardNumber + number+ ":" + orgId + ","; if ("2".equals(jsonObject.getString("dispatchType"))) { minInfo.set("nckd_count", asset.getString("count"));//资产数量 } } minInfo.set("nckd_card_number", cardNumber); SaveServiceHelper.save(new DynamicObject[]{minInfo}); } }