销售订单新增-自定义档案调整-liz

This commit is contained in:
mzr 2025-07-21 11:30:34 +08:00
parent 17898b3e6e
commit 46bd2e52ed
1 changed files with 124 additions and 24 deletions

View File

@ -4,10 +4,10 @@ import nc.bd.itf.tools.BFPubTools;
import nc.bs.dao.BaseDAO;
import nc.bs.framework.common.InvocationInfoProxy;
import nc.bs.framework.common.NCLocator;
import nc.bs.logging.Log;
import nc.itf.bd.defdoc.IDefdocService;
import nc.itf.pim.project.prv.IProject;
import nc.jdbc.framework.SQLParameter;
import nc.jdbc.framework.processor.ColumnListProcessor;
import nc.jdbc.framework.processor.ColumnProcessor;
import nc.jdbc.framework.processor.MapProcessor;
import nc.vo.bd.defdoc.DefdocVO;
@ -15,13 +15,14 @@ import nc.vo.pim.project.ProjectHeadVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.lang.UFDateTime;
import nc.vo.pubapp.AppContext;
import nc.vo.so.m30.entity.SaleOrderBVO;
import nc.vo.so.m30.entity.SaleOrderHVO;
import nc.vo.so.m30.entity.SaleOrderVO;
import nc.ws.opm.pub.utils.result.APIErrCodeEnum;
import nccloud.api.rest.utils.NCCRestUtils;
import nccloud.api.rest.utils.ResultMessageUtil;
import nccloud.api.so.m30.IAPISaleOrderMaitain;
import nccloud.api.so.m30.IAPISaleOrderQuery;
import nccloud.baseapp.core.log.NCCForUAPLogger;
import nccloud.commons.lang.StringUtils;
import nccloud.openapi.scmpub.pub.NCCPubRestResource;
import nccloud.openapi.scmpub.pub.TransferCodeToPKTool;
@ -33,9 +34,7 @@ import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
@ -45,7 +44,7 @@ import java.util.Map;
@Path("so/saleorder")
public class SaleOrderResource extends NCCPubRestResource {
private static Log log = Log.getInstance("biptonccsaleorder");
private static String BODYTABLE = "so_saleorder_b";
private static String HEADTABLE = "so_saleorder";
public BaseDAO dao;
@ -134,7 +133,9 @@ public class SaleOrderResource extends NCCPubRestResource {
}
// 新增自定义档案
SaleOrderVO[] salevos = OpenAPIParaUtil.changeVO(paramList, HEADTABLE, BODYTABLE);
genDef(salevos);
log.error("销售订单根据自定义项创建档案开始-----------------------");
List<DefdocVO> defdocVOS = genDef(salevos);
for (Map<String, Object> map : paramList) {
BaseDAO baseDAO = new BaseDAO();
Map<String, Object> headdata = (Map<String, Object>) map.get(HEADTABLE);
@ -149,21 +150,104 @@ public class SaleOrderResource extends NCCPubRestResource {
// 参数形式转换为vo并翻译
List<SaleOrderVO> vosList = TransferMapToVOTool.transferMapToAggVO(paramList, SaleOrderVO.class);
//根据返回的defdocVOS先行翻译
if(defdocVOS!=null && defdocVOS.size()>0){
Map<String,Map<String,String>> deflist_map = new HashMap<>();
for(DefdocVO defdocVO : defdocVOS){
String pkDefdoclist = defdocVO.getPk_defdoclist();
String code = defdocVO.getCode();
String pkDefdoc = defdocVO.getPk_defdoc();
log.error("销售订单保存接口:档案列表编号【"+pkDefdoclist+"】,档案编号【"+code+"】,档案主键【"+pkDefdoc+"");
if(deflist_map.containsKey(pkDefdoclist)){
Map<String, String> stringStringMap = deflist_map.get(pkDefdoclist);
if(!stringStringMap.containsKey(code)){
stringStringMap.put(code, pkDefdoc);
}
}else{
Map<String, String> code_DefdocMap = new HashMap<>();
code_DefdocMap.put(code, pkDefdoc);
deflist_map.put(pkDefdoclist, code_DefdocMap);
}
}
for(SaleOrderVO saleOrderVO : vosList){
SaleOrderHVO parentVO = saleOrderVO.getParentVO();
String vdef6 = BFPubTools.getString_TrimAsNull(parentVO.getVdef6());
String vdef2 = BFPubTools.getString_TrimAsNull(parentVO.getVdef2());
String vdef13 = BFPubTools.getString_TrimAsNull(parentVO.getVdef13());
if (vdef6 != "") {
Map<String, String> stringStringMap = deflist_map.get("zdy-001");
if(stringStringMap!=null&&stringStringMap.size()>0){
String defpk = stringStringMap.get(vdef6);
if(defpk!=null){
parentVO.setVdef6(defpk);
}
}
}
if (vdef2 != "") {
Map<String, String> stringStringMap = deflist_map.get("BQxmh");
if(stringStringMap!=null&&stringStringMap.size()>0){
String defpk = stringStringMap.get(vdef2);
if(defpk!=null){
parentVO.setVdef2(defpk);
}
}
}
if (vdef13 != "") {
Map<String, String> stringStringMap = deflist_map.get("BIP-ddh");
if(stringStringMap!=null&&stringStringMap.size()>0){
String defpk = stringStringMap.get(vdef13);
if(defpk!=null){
parentVO.setVdef13(defpk);
}
}
}
//表体自定义项翻译--vbdef1值与vdef6相同vbdef5与vdef13相同
SaleOrderBVO[] childrenVO = saleOrderVO.getChildrenVO();
for(SaleOrderBVO saleOrderBVO : saleOrderVO.getChildrenVO()){
String vbdef1 = saleOrderBVO.getVbdef1();
Map<String, String> zdy_001 = deflist_map.get("zdy-001");
if(zdy_001!=null&&zdy_001.size()>0){
String defpk = zdy_001.get(vbdef1);
if(defpk!=null){
saleOrderBVO.setVbdef1(defpk);
}
}
String vbdef5 = saleOrderBVO.getVbdef5();
Map<String, String> bip_ddh = deflist_map.get("BIP-ddh");
if(bip_ddh!=null&&bip_ddh.size()>0){
String defpk = bip_ddh.get(vbdef5);
if(defpk!=null){
saleOrderBVO.setVbdef5(defpk);
}
}
}
}
}else{
log.error("销售订单保存接口:新增/已存在的档案没有可能json自定义项无值");
}
//翻译前打印各个档案值
for (SaleOrderVO saleOrderVO : vosList) {
SaleOrderHVO parentVO = saleOrderVO.getParentVO();
log.error("销售订单保存接口vdef6【"+parentVO.getVdef6()+"vdef2【"+parentVO.getVdef2()+"vdef13【"+parentVO.getVdef13()+"");
}
vosList = TransferCodeToPKTool.transferAggVO(vosList);
SaleOrderVO[] vos = vosList.toArray(new SaleOrderVO[vosList.size()]);
// 调用接口保存
IAPISaleOrderMaitain service = NCLocator.getInstance().lookup(IAPISaleOrderMaitain.class);
SaleOrderVO[] results = service.save(vos);
log.error("销售订单根据自定义项创建档案结束-----------------------");
// 包装返回信息
return NCCRestUtils.toJSONString(CallReturnBuildUtil.buildSuccessResult(results, "销售订单保存成功"));
} catch (Exception e) {
log.error("销售订单根据自定义项创建档案结束-----------------------");
return NCCRestUtils.toJSONString(CallReturnBuildUtil.buildFailResult(null, "销售单保存异常:" + e.getMessage()));
}
}
private void genDef(SaleOrderVO[] salevos) throws BusinessException {
private List<DefdocVO> genDef(SaleOrderVO[] salevos) throws BusinessException {
BaseDAO baseDAO = new BaseDAO();
List<DefdocVO> allDefDoc = new ArrayList<DefdocVO>();
ArrayList<String> arrhth = new ArrayList<String>();
ArrayList<String> arrxmh = new ArrayList<String>();
ArrayList<String> arrxsddh = new ArrayList<String>();
@ -204,46 +288,62 @@ public class SaleOrderResource extends NCCPubRestResource {
}
if (arrhth.size() > 0) {
sql = " select code from bd_defdoc where pk_defdoclist in(select pk_defdoclist from bd_defdoclist where code='zdy-001') and pk_org='" + o + "' and ";
sql = " pk_defdoclist in(select pk_defdoclist from bd_defdoclist where code='zdy-001') and pk_org='" + o + "' and ";
sql += BFPubTools.getInSqlWithOutAnd("code", arrhth, 0, arrhth.size());
ArrayList<String> obj_arrhth = (ArrayList<String>) baseDAO.executeQuery(sql, new ColumnListProcessor());
// ArrayList<String> obj_arrhth = (ArrayList<String>) baseDAO.executeQuery(sql, new ColumnListProcessor());
List<DefdocVO> obj_arrhth = (List<DefdocVO>) dao.retrieveByClause(DefdocVO.class, sql);
if (obj_arrhth != null && obj_arrhth.size() > 0) {
arrhth.removeAll(obj_arrhth);
List<String> defCode=new ArrayList<>();
obj_arrhth.stream().forEach(defdoc -> {defdoc.setPk_defdoclist("zdy-001");defCode.add(defdoc.getCode());});
arrhth.removeAll(defCode);
allDefDoc.addAll(obj_arrhth);
}
}
// 组装销售订单数据
if (arrhth.size() > 0) {
NCLocator.getInstance().lookup(IDefdocService.class).insertDefdocs(o, createDefVO(arrhth, "zdy-001", o.toString()));
DefdocVO[] defdocVOS = NCLocator.getInstance().lookup(IDefdocService.class).insertDefdocs(o, createDefVO(arrhth, "zdy-001", o.toString()));
Arrays.stream(defdocVOS).forEach(defdoc -> defdoc.setPk_defdoclist("zdy-001"));
allDefDoc.addAll(Arrays.asList(defdocVOS));
}
if (arrxmh.size() > 0) {
sql = " select code from bd_defdoc where pk_defdoclist in(select pk_defdoclist from bd_defdoclist where code='BQxmh') and pk_org='" + o + "' and ";
sql = " pk_defdoclist in(select pk_defdoclist from bd_defdoclist where code='BQxmh') and pk_org='" + o + "' and ";
sql += BFPubTools.getInSqlWithOutAnd("code", arrxmh, 0, arrxmh.size());
ArrayList<String> obj_arrhth = (ArrayList<String>) baseDAO.executeQuery(sql, new ColumnListProcessor());
// ArrayList<String> obj_arrhth = (ArrayList<String>) baseDAO.executeQuery(sql, new ColumnListProcessor());
List<DefdocVO> obj_arrhth = (List<DefdocVO>) dao.retrieveByClause(DefdocVO.class, sql);
if (obj_arrhth != null && obj_arrhth.size() > 0) {
arrxmh.removeAll(obj_arrhth);
List<String> defCode=new ArrayList<>();
obj_arrhth.stream().forEach(defdoc -> {defdoc.setPk_defdoclist("BQxmh");defCode.add(defdoc.getCode());});
arrxmh.removeAll(defCode);
allDefDoc.addAll(obj_arrhth);
}
}
if (arrxmh.size() > 0) {
NCLocator.getInstance().lookup(IDefdocService.class).insertDefdocs(o, createDefVO(arrxmh, "BQxmh", o.toString()));
DefdocVO[] defdocVOS = NCLocator.getInstance().lookup(IDefdocService.class).insertDefdocs(o, createDefVO(arrxmh, "BQxmh", o.toString()));
Arrays.stream(defdocVOS).forEach(defdoc -> defdoc.setPk_defdoclist("BQxmh"));
allDefDoc.addAll(Arrays.asList(defdocVOS));
}
if (arrxsddh.size() > 0) {
sql = " select code from bd_defdoc where pk_defdoclist in( select pk_defdoclist from bd_defdoclist where code='BIP-ddh') and pk_org='" + o + "' and ";
sql = " pk_defdoclist in( select pk_defdoclist from bd_defdoclist where code='BIP-ddh') and pk_org='" + o + "' and ";
sql += BFPubTools.getInSqlWithOutAnd("code", arrxsddh, 0, arrxsddh.size());
ArrayList<String> obj_arrhth = (ArrayList<String>) baseDAO.executeQuery(sql, new ColumnListProcessor());
// ArrayList<String> obj_arrhth = (ArrayList<String>) baseDAO.executeQuery(sql, new ColumnListProcessor());
List<DefdocVO> obj_arrhth = (List<DefdocVO>) dao.retrieveByClause(DefdocVO.class, sql);
if (obj_arrhth != null && obj_arrhth.size() > 0) {
arrxsddh.removeAll(obj_arrhth);
List<String> defCode=new ArrayList<>();
obj_arrhth.stream().forEach(defdoc -> {defdoc.setPk_defdoclist("BIP-ddh");defCode.add(defdoc.getCode());});
arrxsddh.removeAll(defCode);
allDefDoc.addAll(obj_arrhth);
}
}
if (arrxsddh.size() > 0) {
NCLocator.getInstance().lookup(IDefdocService.class).insertDefdocs(o, createDefVO(arrxsddh, "BIP-ddh", o.toString()));
DefdocVO[] defdocVOS = NCLocator.getInstance().lookup(IDefdocService.class).insertDefdocs(o, createDefVO(arrxsddh, "BIP-ddh", o.toString()));
Arrays.stream(defdocVOS).forEach(defdoc -> defdoc.setPk_defdoclist("BIP-ddh"));
allDefDoc.addAll(Arrays.asList(defdocVOS));
}
return allDefDoc;
}
private void createPro(String cprocode, String cproname, Map map) throws BusinessException {
@ -499,7 +599,7 @@ public class SaleOrderResource extends NCCPubRestResource {
// 删除最后的", "
sql.delete(sql.length() - 2, sql.length());
sql.append(" where csaleorderbid = ?");
NCCForUAPLogger.debug("updateDef-sql:" + sql);
// NCCForUAPLogger.debug("updateDef-sql:" + sql);
parameter.addParam(csaleorderbid);
BaseDAO baseDAO = new BaseDAO();
// 修改销售订单子表