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

414 lines
24 KiB
Java
Raw Normal View History

2025-11-12 10:09:03 +00:00
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;
2025-11-14 06:33:29 +00:00
import kd.bos.servicehelper.AttachmentServiceHelper;
2025-11-12 10:09:03 +00:00
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;
2025-11-13 08:49:47 +00:00
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
2025-11-12 10:09:03 +00:00
//非采供应商
@ApiController(value = "SupplierControl", desc = "泛微非采购供应商导入")
public class SupplierControl implements Serializable {
private final static Log logger = LogFactory.getLog(SupplierControl.class);
2025-11-13 08:49:47 +00:00
@ApiPostMapping(value = "/FWFCSupplierImport", desc = "泛微非采购供应商导入")
2025-11-12 10:09:03 +00:00
public CustomApiResult<@ApiResponseBody("返回参数") ApiResultExt> fWSupplierImport
(@NotNull @Valid @ApiRequestBody(value = "入参") SupplierModel supplier) {
2025-11-14 06:33:29 +00:00
String entityName = "bd_supplier";
2025-11-12 10:09:03 +00:00
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)});
2025-11-13 08:49:47 +00:00
if (null == creator) {
rowMsg.add("根据创建人工号【" + creator_number + "】在金蝶系统中没有查询到对应的人员信息");
2025-11-12 10:09:03 +00:00
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;
}
2025-11-13 08:49:47 +00:00
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();//国家
2025-11-12 10:09:03 +00:00
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 {
2025-11-13 08:49:47 +00:00
Boolean isdefault_linkman = false;
2025-11-12 10:09:03 +00:00
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;
}
2025-11-13 08:49:47 +00:00
isdefault_linkman = linkmanBean.getIsdefault_linkman();
}
if (!isdefault_linkman) {
rowMsg.add("联系人信息中需要有一个默认且有效的联系人");
billStatus = false;
2025-11-12 10:09:03 +00:00
}
}
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);
2025-11-14 06:33:29 +00:00
error.setEntityKey(entityName);
2025-11-12 10:09:03 +00:00
resultBean.setId("");
resultBean.setBillStatus(billStatus);
resultBean.setErrors(error);
results.add(resultBean);
resultExt.setFailCount(1);
resultExt.setSuccessCount(0);
} else {
2025-11-14 06:33:29 +00:00
DynamicObject bd_supplier = BusinessDataServiceHelper.newDynamicObject(entityName);
2025-11-12 10:09:03 +00:00
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);
2025-11-13 08:49:47 +00:00
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,");
2025-11-12 10:09:03 +00:00
DynamicObjectCollection entry_linkman1 = bd_supplier.getDynamicObjectCollection("entry_linkman");
for (SupplierModel.DataBean.LinkmanBean linkmanBean : entry_linkman) {
DynamicObject dynamicObject = entry_linkman1.addNew();
2025-11-13 08:49:47 +00:00
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());
2025-11-12 10:09:03 +00:00
}
DynamicObjectCollection entry_bank1 = bd_supplier.getDynamicObjectCollection("entry_bank");
for (SupplierModel.DataBean.BankBean bankBean : entry_bank) {
DynamicObject dynamicObject = entry_bank1.addNew();
2025-11-13 08:49:47 +00:00
dynamicObject.set("seq", bankBean.getSeq());
dynamicObject.set("accountname", bankBean.getAccountname());
2025-11-12 10:09:03 +00:00
String bank_number = bankBean.getBank_number();
DynamicObject bank = BusinessDataServiceHelper.loadSingle("bd_bebank",
new QFilter[]{new QFilter("union_number", QCP.equals, bank_number)});
2025-11-13 08:49:47 +00:00
dynamicObject.set("bank", bank);
dynamicObject.set("bankaccount", bankBean.getBankaccount());
dynamicObject.set("isdefault_bank", bankBean.getIsdefault_bank());
2025-11-12 10:09:03 +00:00
DynamicObject currency = BusinessDataServiceHelper.loadSingle("bd_currency",
new QFilter[]{new QFilter("number", QCP.equals, "CNY")});
2025-11-13 08:49:47 +00:00
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);//组织
2025-11-12 10:09:03 +00:00
}
//供应商状态——正常
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");//使用状态
2025-11-13 08:49:47 +00:00
bd_supplier.set("status", "A");//数据状态
2025-11-12 10:09:03 +00:00
bd_supplier.set("ctrlstrategy", "5");//控制策略
2025-11-13 08:49:47 +00:00
//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});
2025-11-12 10:09:03 +00:00
2025-11-14 06:33:29 +00:00
OperationResult operationResult = OperationServiceHelper.executeOperate("save", entityName, new DynamicObject[]{bd_supplier}, OperateOption.create());
2025-11-13 08:49:47 +00:00
if (!operationResult.isSuccess()) {
2025-11-12 10:09:03 +00:00
List<IOperateInfo> allErrorOrValidateInfo = operationResult.getAllErrorOrValidateInfo();
for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) {
rowMsg.add(iOperateInfo.getMessage());
}
error.setKeys(keys);
error.setRowMsg(rowMsg);
2025-11-14 06:33:29 +00:00
error.setEntityKey(entityName);
resultBean.setId(bd_supplier.getString("id"));
2025-11-12 10:09:03 +00:00
resultBean.setBillStatus(false);
resultBean.setErrors(error);
results.add(resultBean);
resultExt.setFailCount(1);
resultExt.setSuccessCount(0);
2025-11-14 06:33:29 +00:00
//保存失败——删除暂存单据
OperationServiceHelper.executeOperate("delete", entityName, new DynamicObject[]{bd_supplier}, OperateOption.create());
} else {
2025-11-12 10:09:03 +00:00
bd_supplier.set("masterid", bd_supplier.getPkValue());
SaveServiceHelper.save(new DynamicObject[]{bd_supplier});
//循环遍历每个附件内容
2025-11-13 08:49:47 +00:00
if (null != attachment && attachment.size() > 0) {
2025-11-12 10:09:03 +00:00
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();
2025-11-14 06:33:29 +00:00
/*DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("tqq9_registration", new QFilter[]{new QFilter("number", QCP.equals, "1134256")});
List<Map<String, Object>> attachments = AttachmentServiceHelper.getAttachments("tqq9_registration", dynamicObject.getPkValue(), "tqq9_attachmentpanelsh");
Object url = attachments.get(0).get("url");
attachementurl= (String) url;*/
2025-11-13 08:49:47 +00:00
String uid1 = uid.toString() + index++;
2025-11-12 10:09:03 +00:00
Map<String, Object> uploadres = null;
try {
2025-11-14 06:33:29 +00:00
uploadres = AttachmentFileUtil.saveUrlFile2Attchment(uid1, entityName, bd_supplier.getPkValue(), attachementurl, attachementname, attachementsize.toString(), "tqq9_attachmentpanelap");
2025-11-13 08:49:47 +00:00
} catch (Exception ee1) {
2025-11-14 06:33:29 +00:00
rowMsg.add("" + (j + 1) + "条附件信息处理错误上传失败The No." + j + 1 + " attachment information processing error." + ee1);
2025-11-12 10:09:03 +00:00
break;
}
2025-11-13 08:49:47 +00:00
if (uploadres.get("isSuccess") != "true") {
2025-11-14 06:33:29 +00:00
rowMsg.add("" + (j + 1) + "条附件信息处理错误上传失败The No." + j + 1 + " attachment information processing error." + uploadres.get("msg"));
2025-11-12 10:09:03 +00:00
break;
}
}
}
2025-11-14 06:33:29 +00:00
if (rowMsg.size() == 0) {
operationResult = OperationServiceHelper.executeOperate("submit", entityName, new DynamicObject[]{bd_supplier}, OperateOption.create());
2025-11-13 08:49:47 +00:00
if (!operationResult.isSuccess()) {
2025-11-12 10:09:03 +00:00
List<IOperateInfo> allErrorOrValidateInfo = operationResult.getAllErrorOrValidateInfo();
for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) {
rowMsg.add(iOperateInfo.getMessage());
}
error.setKeys(keys);
error.setRowMsg(rowMsg);
2025-11-14 06:33:29 +00:00
error.setEntityKey(entityName);
2025-11-12 10:09:03 +00:00
resultBean.setId(bd_supplier.getString("id"));
resultBean.setBillStatus(false);
resultBean.setErrors(error);
results.add(resultBean);
resultExt.setFailCount(1);
resultExt.setSuccessCount(0);
2025-11-13 08:49:47 +00:00
} else {
2025-11-14 06:33:29 +00:00
operationResult = OperationServiceHelper.executeOperate("audit", entityName, 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(entityName);
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);
}
2025-11-12 10:09:03 +00:00
}
2025-11-14 06:33:29 +00:00
} else {
//附件上传失败——删除暂存单据
OperationServiceHelper.executeOperate("delete", entityName, new DynamicObject[]{bd_supplier}, OperateOption.create());
error.setKeys(keys);
error.setRowMsg(rowMsg);
error.setEntityKey(entityName);
resultBean.setId(bd_supplier.getString("id"));
resultBean.setBillStatus(false);
resultBean.setErrors(error);
results.add(resultBean);
resultExt.setFailCount(1);
resultExt.setSuccessCount(0);
2025-11-12 10:09:03 +00:00
}
2025-11-14 06:33:29 +00:00
2025-11-12 10:09:03 +00:00
}
resultExt.setResult(results);
return CustomApiResult.success(resultExt);
}
}
} else {
rowMsg.add("供应商信息为空");
billStatus = false;
}
if (!billStatus) {
//出现错误后返回
error.setKeys(keys);
error.setRowMsg(rowMsg);
2025-11-14 06:33:29 +00:00
error.setEntityKey(entityName);
2025-11-12 10:09:03 +00:00
resultBean.setId("");
resultBean.setBillStatus(billStatus);
resultBean.setErrors(error);
results.add(resultBean);
resultExt.setFailCount(1);
resultExt.setSuccessCount(0);
}
resultExt.setResult(results);
return CustomApiResult.success(resultExt);
}
}