package tqq9.lc123.cloud.app.api.controller; import com.alibaba.fastjson.JSONObject; import kd.bos.dataentity.OperateOption; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.operate.result.IOperateInfo; import kd.bos.entity.operate.result.OperationResult; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.openapi.common.custom.annotation.ApiController; import kd.bos.openapi.common.custom.annotation.ApiPostMapping; import kd.bos.openapi.common.custom.annotation.ApiRequestBody; import kd.bos.openapi.common.custom.annotation.ApiResponseBody; 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.util.StringUtils; import tqq9.lc123.cloud.app.api.model.SupplierModel; import tqq9.lc123.cloud.app.api.utils.ApiResultExt; import tqq9.lc123.cloud.app.api.utils.AttachmentFileUtil; import javax.validation.Valid; import javax.validation.constraints.NotNull; import java.io.Serializable; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; //非采供应商 @ApiController(value = "SupplierControl", desc = "泛微非采购供应商导入") public class SupplierControl implements Serializable { private final static Log logger = LogFactory.getLog(SupplierControl.class); @ApiPostMapping(value = "/FWFCSupplierImport", desc = "泛微非采购供应商导入") public CustomApiResult<@ApiResponseBody("返回参数") ApiResultExt> fWSupplierImport (@NotNull @Valid @ApiRequestBody(value = "入参") SupplierModel supplier) { ApiResultExt resultExt = new ApiResultExt(); List results = new ArrayList<>(); ApiResultExt.ResultBean resultBean = new ApiResultExt.ResultBean(); ApiResultExt.Error error = new ApiResultExt.Error(); ArrayList rowMsg = new ArrayList<>(); JSONObject keys = new JSONObject(); boolean billStatus = true; List data = supplier.getData(); if (null != data && data.size() > 0) { for (int i = 0; i < data.size(); i++) { SupplierModel.DataBean dataBean = data.get(i); String creator_number = dataBean.getCreator_number(); DynamicObject creator = null; if (StringUtils.isEmpty(creator_number)) { rowMsg.add("供应商创建人工号字段【creator_number】为空"); billStatus = false; } else { creator = BusinessDataServiceHelper.loadSingle("bos_user", new QFilter[]{new QFilter("number", QCP.equals, creator_number)}); if (null == creator) { rowMsg.add("根据创建人工号【" + creator_number + "】在金蝶系统中没有查询到对应的人员信息"); billStatus = false; } } Date createtime = dataBean.getCreatetime(); if (null == createtime) { rowMsg.add("供应商创建日期字段【createtime】为空"); billStatus = false; } String number = dataBean.getNumber(); if (StringUtils.isEmpty(number)) { rowMsg.add("供应商编号字段【number】为空"); billStatus = false; } else { keys.put("number", number); } String name = dataBean.getName(); if (StringUtils.isEmpty(name)) { rowMsg.add("供应商名称字段【name】为空"); billStatus = false; } String simplename = dataBean.getSimplename();//供应商简称 String tqq9_combofield3_jyzt = dataBean.getTqq9_combofield3_jyzt();//经营状态 Date tqq9_datefield5_clrq = dataBean.getTqq9_datefield5_clrq();//成立日期 String tqq9_textfield210 = dataBean.getTqq9_textfield210();//法定代表人 String tqq9_textareafield_jyfw = dataBean.getTqq9_textareafield_jyfw();//经营范围 String tqq9_textfield3_zczb1 = dataBean.getTqq9_textfield3_zczb1();//注册资本 String tqq9_textfield4_zs1 = dataBean.getTqq9_textfield4_zs1();//住所 String societycreditcode = dataBean.getSocietycreditcode();//统一社会信用代码 String tqq9_usagescenarios = dataBean.getTqq9_usagescenarios();//供应商用途类型 String tqq9_basedatafield1_name = dataBean.getTqq9_basedatafield1_name();//国家 DynamicObject tqq9_basedatafield1 = null; if (StringUtils.isNotEmpty(tqq9_basedatafield1_name)) { tqq9_basedatafield1 = BusinessDataServiceHelper.loadSingle("bd_country", new QFilter[]{new QFilter("name", QCP.equals, tqq9_basedatafield1_name)}); } List entry_bank = dataBean.getEntry_bank(); if (null == entry_bank || entry_bank.size() == 0) { rowMsg.add("供应商银行信息分录为空"); billStatus = false; } else { Boolean isdefault_bank = false; for (int j = 0; j < entry_bank.size(); j++) { SupplierModel.DataBean.BankBean bankBean = entry_bank.get(j); String bank_number = bankBean.getBank_number(); if (StringUtils.isEmpty(bank_number)) { rowMsg.add("供应商开户银行.编码(行号)字段【bank_number】为空"); billStatus = false; } isdefault_bank = bankBean.getIsdefault_bank(); String accountname = bankBean.getAccountname(); if (StringUtils.isEmpty(accountname)) { rowMsg.add("供应商银行信息分录.收款方名称字段【accountname】为空"); billStatus = false; } String bankaccount = bankBean.getBankaccount(); if (StringUtils.isEmpty(bankaccount)) { rowMsg.add("供应商银行信息分录.银行账号字段【bankaccount】为空"); billStatus = false; } Integer seq = bankBean.getSeq(); } if (!isdefault_bank) { rowMsg.add("供应商银行信息分录要有一行默认的银行账号"); billStatus = false; } } List entry_linkman = dataBean.getEntry_linkman(); if (null == entry_linkman || entry_linkman.size() == 0) { rowMsg.add("供应商联系人分录为空"); billStatus = false; } else { Boolean isdefault_linkman = false; for (int k = 0; k < entry_linkman.size(); k++) { SupplierModel.DataBean.LinkmanBean linkmanBean = entry_linkman.get(k); String contactperson = linkmanBean.getContactperson(); if (StringUtils.isEmpty(contactperson)) { rowMsg.add("供应商联系人分录.联系人字段【contactperson】为空"); billStatus = false; } Integer seq = linkmanBean.getSeq(); String mobile = linkmanBean.getMobile(); if (StringUtils.isEmpty(mobile)) { rowMsg.add("供应商联系人分录.手机字段【mobile】为空"); billStatus = false; } String phone = linkmanBean.getPhone(); String tqq9_textfield_xxdz = linkmanBean.getTqq9_textfield_xxdz(); if (StringUtils.isEmpty(tqq9_textfield_xxdz)) { rowMsg.add("供应商联系人分录.详细地址字段【tqq9_textfield_xxdz】为空"); billStatus = false; } isdefault_linkman = linkmanBean.getIsdefault_linkman(); } if (!isdefault_linkman) { rowMsg.add("联系人信息中需要有一个默认且有效的联系人"); billStatus = false; } } List attachment = dataBean.getAttachment(); if (null != attachment && attachment.size() > 0) { for (SupplierModel.DataBean.AttachmentBean attachmentBean : attachment) { String attachmentName = attachmentBean.getAttachmentName(); if (StringUtils.isEmpty(attachmentName)) { rowMsg.add("供应商附件名称为空"); billStatus = false; } String attachmentUrl = attachmentBean.getAttachmentUrl(); if (StringUtils.isEmpty(attachmentUrl)) { rowMsg.add("供应商附件地址为空"); billStatus = false; } } } resultBean.setBillIndex(0); resultBean.setKeys(keys); resultBean.setNumber(number); if (!billStatus) { //出现错误后返回 error.setKeys(keys); error.setRowMsg(rowMsg); error.setEntityKey("bd_supplier"); resultBean.setId(""); resultBean.setBillStatus(billStatus); resultBean.setErrors(error); results.add(resultBean); resultExt.setFailCount(1); resultExt.setSuccessCount(0); } else { DynamicObject bd_supplier = BusinessDataServiceHelper.newDynamicObject("bd_supplier"); bd_supplier.set("number", number); bd_supplier.set("name", name); bd_supplier.set("simplename", simplename); bd_supplier.set("tqq9_combofield3_jyzt", tqq9_combofield3_jyzt); bd_supplier.set("tqq9_basedatafield1", tqq9_basedatafield1); bd_supplier.set("creator", creator); bd_supplier.set("createtime", createtime); bd_supplier.set("tqq9_textfield33", societycreditcode); bd_supplier.set("tqq9_usagescenarios", tqq9_usagescenarios); bd_supplier.set("tqq9_datefield5_clrq", tqq9_datefield5_clrq); bd_supplier.set("tqq9_textfield210", tqq9_textfield210); bd_supplier.set("tqq9_textareafield_jyfw", tqq9_textareafield_jyfw); bd_supplier.set("tqq9_textfield3_zczb1", tqq9_textfield3_zczb1); bd_supplier.set("tqq9_textfield4_zs1", tqq9_textfield4_zs1); bd_supplier.set("tqq9_fwstate", "C"); bd_supplier.set("tqq9_mulcombofield1", ",A,B,C,"); DynamicObjectCollection entry_linkman1 = bd_supplier.getDynamicObjectCollection("entry_linkman"); for (SupplierModel.DataBean.LinkmanBean linkmanBean : entry_linkman) { DynamicObject dynamicObject = entry_linkman1.addNew(); dynamicObject.set("contactperson", linkmanBean.getContactperson()); dynamicObject.set("phone", linkmanBean.getPhone()); dynamicObject.set("mobile", linkmanBean.getMobile()); dynamicObject.set("tqq9_textfield_xxdz", linkmanBean.getTqq9_textfield_xxdz()); dynamicObject.set("seq", linkmanBean.getSeq()); dynamicObject.set("isdefault_linkman", linkmanBean.getIsdefault_linkman()); } DynamicObjectCollection entry_bank1 = bd_supplier.getDynamicObjectCollection("entry_bank"); for (SupplierModel.DataBean.BankBean bankBean : entry_bank) { DynamicObject dynamicObject = entry_bank1.addNew(); dynamicObject.set("seq", bankBean.getSeq()); dynamicObject.set("accountname", bankBean.getAccountname()); String bank_number = bankBean.getBank_number(); DynamicObject bank = BusinessDataServiceHelper.loadSingle("bd_bebank", new QFilter[]{new QFilter("union_number", QCP.equals, bank_number)}); dynamicObject.set("bank", bank); dynamicObject.set("bankaccount", bankBean.getBankaccount()); dynamicObject.set("isdefault_bank", bankBean.getIsdefault_bank()); DynamicObject currency = BusinessDataServiceHelper.loadSingle("bd_currency", new QFilter[]{new QFilter("number", QCP.equals, "CNY")}); dynamicObject.set("currency", currency); } QFilter qq = new QFilter("number", "=", "LICHI"); DynamicObject org = BusinessDataServiceHelper.loadSingle("bos_org", new QFilter[]{qq}); if (null != org) { bd_supplier.set("createorg", org); bd_supplier.set("org", org); bd_supplier.set("useorg", org);//组织 } //供应商状态——正常 QFilter q3 = new QFilter("number", "=", "ZCGYS"); DynamicObject bd_supplierstatus = BusinessDataServiceHelper.loadSingle("bd_supplierstatus", new QFilter[]{q3}); if (null != bd_supplierstatus) { bd_supplier.set("supplier_status", bd_supplierstatus);//供应商状态 } bd_supplier.set("enable", "1");//使用状态 bd_supplier.set("status", "A");//数据状态 bd_supplier.set("ctrlstrategy", "5");//控制策略 //bd_supplier.set("type", "1");//伙伴类型 //bd_supplier.set("bizfunction", ",1,2,3,4,");//业务职能 SaveServiceHelper.save(new DynamicObject[]{bd_supplier}); //供应商分类标准页签 DynamicObject bd_suppliergroupdetails = BusinessDataServiceHelper.newDynamicObject("bd_suppliergroupdetail"); QFilter q4 = new QFilter("number", "=", "JBFLBZ"); //供应商分类标准 DynamicObject bd_suppliergroupstandard = BusinessDataServiceHelper.loadSingle("bd_suppliergroupstandard", new QFilter[]{q4}); if (null != bd_suppliergroupstandard) { bd_suppliergroupdetails.set("standard", bd_suppliergroupstandard);//分录标准 } QFilter q2 = new QFilter("number", "=", "001"); DynamicObject bd_suppliergroup = BusinessDataServiceHelper.loadSingle("bd_suppliergroup", new QFilter[]{q2}); if (null != bd_suppliergroup) { bd_suppliergroupdetails.set("group", bd_suppliergroup);//分类 } bd_suppliergroupdetails.set("supplier", bd_supplier); bd_suppliergroupdetails.set("createorg", org); SaveServiceHelper.save(new DynamicObject[]{bd_suppliergroupdetails}); OperationResult operationResult = OperationServiceHelper.executeOperate("save", "bd_supplier", new DynamicObject[]{bd_supplier}, OperateOption.create()); if (!operationResult.isSuccess()) { List allErrorOrValidateInfo = operationResult.getAllErrorOrValidateInfo(); for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) { rowMsg.add(iOperateInfo.getMessage()); } error.setKeys(keys); error.setRowMsg(rowMsg); error.setEntityKey("bd_supplier"); resultBean.setId(""); resultBean.setBillStatus(false); resultBean.setErrors(error); results.add(resultBean); resultExt.setFailCount(1); resultExt.setSuccessCount(0); } else { bd_supplier.set("masterid", bd_supplier.getPkValue()); SaveServiceHelper.save(new DynamicObject[]{bd_supplier}); //循环遍历每个附件内容 if (null != attachment && attachment.size() > 0) { StringBuffer uid = new StringBuffer(); uid.append("rc-upload-").append(new Date().getTime()).append("-"); int index = (int) (1 + Math.random() * 10); //循环附件参数 for (int j = 0; j < attachment.size(); j++) { SupplierModel.DataBean.AttachmentBean attachmentBean = attachment.get(j); String attachementname = attachmentBean.getAttachmentName(); BigDecimal attachementsize = BigDecimal.ZERO; String attachementurl = attachmentBean.getAttachmentUrl(); String uid1 = uid.toString() + index++; Map uploadres = null; try { uploadres = AttachmentFileUtil.saveUrlFile2Attchment(uid1, "bd_supplier", bd_supplier.getPkValue(), attachementurl, attachementname, attachementsize.toString(), "tqq9_attachmentpanelap"); } catch (Exception ee1) { rowMsg.add("第" + (j + 1) + "条附件信息处理错误,上传失败!The No." + j + 1 + " attachment information processing error."); break; } if (uploadres.get("isSuccess") != "true") { rowMsg.add("第" + (j + 1) + "条附件信息处理错误,上传失败!The No." + j + 1 + " attachment information processing error."); break; } } } operationResult = OperationServiceHelper.executeOperate("submit", "bd_supplier", new DynamicObject[]{bd_supplier}, OperateOption.create()); if (!operationResult.isSuccess()) { List allErrorOrValidateInfo = operationResult.getAllErrorOrValidateInfo(); for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) { rowMsg.add(iOperateInfo.getMessage()); } error.setKeys(keys); error.setRowMsg(rowMsg); error.setEntityKey("bd_supplier"); resultBean.setId(bd_supplier.getString("id")); resultBean.setBillStatus(false); resultBean.setErrors(error); results.add(resultBean); resultExt.setFailCount(1); resultExt.setSuccessCount(0); } else { operationResult = OperationServiceHelper.executeOperate("audit", "bd_supplier", new DynamicObject[]{bd_supplier}, OperateOption.create()); if (!operationResult.isSuccess()) { List allErrorOrValidateInfo = operationResult.getAllErrorOrValidateInfo(); for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) { rowMsg.add(iOperateInfo.getMessage()); } error.setKeys(keys); error.setRowMsg(rowMsg); error.setEntityKey("bd_supplier"); resultBean.setId(bd_supplier.getString("id")); resultBean.setBillStatus(false); resultBean.setErrors(error); results.add(resultBean); resultExt.setFailCount(1); resultExt.setSuccessCount(0); } else { resultBean.setId(bd_supplier.getString("id")); resultBean.setBillStatus(true); results.add(resultBean); resultExt.setFailCount(0); resultExt.setSuccessCount(1); } } } resultExt.setResult(results); return CustomApiResult.success(resultExt); } } } else { rowMsg.add("供应商信息为空"); billStatus = false; } if (!billStatus) { //出现错误后返回 error.setKeys(keys); error.setRowMsg(rowMsg); error.setEntityKey("bd_supplier"); resultBean.setId(""); resultBean.setBillStatus(billStatus); resultBean.setErrors(error); results.add(resultBean); resultExt.setFailCount(1); resultExt.setSuccessCount(0); } resultExt.setResult(results); return CustomApiResult.success(resultExt); } }