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

383 lines
22 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;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.operation.OperationServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.bos.util.StringUtils;
import scala.Dynamic;
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.*;
//非采供应商
@ApiController(value = "SupplierControl", desc = "泛微非采购供应商导入")
public class SupplierControl implements Serializable {
private final static Log logger = LogFactory.getLog(SupplierControl.class);
@ApiPostMapping(value = "/FWSupplierImport", 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 {
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;
}
}
}
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("societycreditcode",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);
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());
}
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 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", "C");//数据状态
bd_supplier.set("ctrlstrategy", "5");//控制策略
bd_supplier.set("type", "1");//伙伴类型
bd_supplier.set("bizfunction", ",1,2,3,4,");//业务职能
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) {
// 单个附件面板中所有附件的信息
List<Map<String, Object>> attachments = new ArrayList<Map<String, Object>>();
// 单个附件的信息
Map<String, Object> attachmentInfo = null;
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();
// attachmentInfo = new HashMap<String, Object>();
// attachmentInfo.put("entityNum", "attachmentpanel");
// attachmentInfo.put("name", attachementname);
// attachmentInfo.put("url", attachementurl);
// attachmentInfo.put("size", attachementsize);
// attachmentInfo.put("uid", uid.toString() + index++);
String uid1 = uid.toString() + index++;
// attachments.add(attachmentInfo);
Map<String, Object> uploadres = null;
try {
uploadres = AttachmentFileUtil.saveUrlFile2Attchment(uid1,"bd_supplier", bd_supplier.getPkValue(), attachementurl, attachementname, attachementsize.toString(), "attachmentpanel");
}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;
}
}
}
//供应商分类标准页签
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 = 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(1);
resultExt.setSuccessCount(0);
}
}
}
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);
}
}