lc/lc123/cloud/app/api/controller/SupplierControl.java

391 lines
22 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<ApiResultExt.ResultBean> results = new ArrayList<>();
ApiResultExt.ResultBean resultBean = new ApiResultExt.ResultBean();
ApiResultExt.Error error = new ApiResultExt.Error();
ArrayList<String> rowMsg = new ArrayList<>();
JSONObject keys = new JSONObject();
boolean billStatus = true;
List<SupplierModel.DataBean> 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<SupplierModel.DataBean.BankBean> 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<SupplierModel.DataBean.LinkmanBean> 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<SupplierModel.DataBean.AttachmentBean> 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<IOperateInfo> 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<String, Object> 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<IOperateInfo> 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<IOperateInfo> 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);
}
}