|
|
|
@ -1,353 +0,0 @@
|
|
|
|
|
package com.weaver.seconddev.interfaces.workflow.action;
|
|
|
|
|
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.text.*;
|
|
|
|
|
import java.math.*;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import org.apache.commons.lang.StringEscapeUtils;
|
|
|
|
|
import com.weaver.seconddev.interfaces.srmoa.*;
|
|
|
|
|
import com.weaver.seconddev.interfaces.srmoa.SI_GoodsSupplyExpanding_OUTServiceStub.SRM_OA_VENMATEXT_RESULT;
|
|
|
|
|
import com.weaver.seconddev.interfaces.srmoa.SI_GoodsSupplyExpanding_OUTServiceStub.VenMatExtResultIn;
|
|
|
|
|
import com.weaver.seconddev.interfaces.srmoa.SI_GoodsSupplyExpanding_OUTServiceStub.VenMatExtResultItemIn;
|
|
|
|
|
import com.weaver.seconddev.interfaces.swfa.*;
|
|
|
|
|
import com.weaver.common.i18n.tool.util.I18nContextUtil;
|
|
|
|
|
import com.weaver.verupgrade.conn.CONN_TYPE;
|
|
|
|
|
import java.lang.*;
|
|
|
|
|
import com.weaver.verupgrade.workflow.request.RequestManager;
|
|
|
|
|
import com.weaver.esb.api.rpc.EsbServerlessRpcRemoteInterface;
|
|
|
|
|
import com.weaver.common.base.entity.result.WeaResult;
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import com.weaver.verupgrade.soa.workflow.request.RequestInfo;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import com.weaver.verupgrade.conn.RecordSet;
|
|
|
|
|
import com.weaver.verupgrade.conn.RecordSetDataSource;
|
|
|
|
|
import com.weaver.verupgrade.general.TimeUtil;
|
|
|
|
|
import com.weaver.verupgrade.general.Util;
|
|
|
|
|
import com.weaver.verupgrade.interfaces.workflow.action.Action;
|
|
|
|
|
import com.weaver.verupgrade.soa.workflow.request.Property;
|
|
|
|
|
import com.weaver.verupgrade.soa.workflow.request.Cell;
|
|
|
|
|
import com.weaver.verupgrade.soa.workflow.request.DetailTable;
|
|
|
|
|
import com.weaver.verupgrade.soa.workflow.request.Row;
|
|
|
|
|
import com.weaver.verupgrade.general.BaseBean;
|
|
|
|
|
import com.weaver.verupgrade.hrm.resource.ResourceComInfo;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* SRM--供应商转正申请验证接口--qingf20161109
|
|
|
|
|
* @author Administrator
|
|
|
|
|
*/
|
|
|
|
|
@org.springframework.stereotype.Service("workflow_action_OaSrmVendorPropmtionServiceCheckAction")
|
|
|
|
|
public class OaSrmVendorPropmtionServiceCheckAction extends BaseBean implements Action, EsbServerlessRpcRemoteInterface {
|
|
|
|
|
|
|
|
|
|
// 对应E9的请求信息对象
|
|
|
|
|
@Autowired
|
|
|
|
|
private RequestInfo requestInfoTemp;
|
|
|
|
|
|
|
|
|
|
private static final Logger logger_3f2e7fc2 = LoggerFactory.getLogger(OaSrmVendorPropmtionServiceCheckAction.class);
|
|
|
|
|
|
|
|
|
|
public WeaResult<Map<String, Object>> execute(Map<String, Object> requestInfoMap) {
|
|
|
|
|
Map<String, Object> weaverResultMap = new HashMap<>();
|
|
|
|
|
Long requestIdTemp = Long.parseLong(String.valueOf(requestInfoMap.getOrDefault("requestid", -1)));
|
|
|
|
|
Long userIdTemp = Long.parseLong(String.valueOf(requestInfoMap.getOrDefault("userid", -1)));
|
|
|
|
|
RequestInfo request = requestInfoTemp.getRequestInfo(requestIdTemp, userIdTemp);
|
|
|
|
|
try {
|
|
|
|
|
// 流程请求ID
|
|
|
|
|
String requestId = request.getRequestid();
|
|
|
|
|
try {
|
|
|
|
|
// 流程编号
|
|
|
|
|
String lcbh = "";
|
|
|
|
|
// 公司编码
|
|
|
|
|
String sqdwbm = "";
|
|
|
|
|
// 公司名称
|
|
|
|
|
String sqdw = "";
|
|
|
|
|
// 申请部门名称
|
|
|
|
|
String sqbm = "";
|
|
|
|
|
// 供应商编码
|
|
|
|
|
String gysbm = "";
|
|
|
|
|
// 供应商名称
|
|
|
|
|
String gysmc = "";
|
|
|
|
|
// 供应商类型名称
|
|
|
|
|
String gyslx = "";
|
|
|
|
|
// 申请人姓名
|
|
|
|
|
String sqrxm = "";
|
|
|
|
|
// 工号
|
|
|
|
|
String gh = "";
|
|
|
|
|
// 主供品类
|
|
|
|
|
String gycpmc = "";
|
|
|
|
|
// 审核人
|
|
|
|
|
String shr = "";
|
|
|
|
|
// 审核意见
|
|
|
|
|
String shyj = "";
|
|
|
|
|
// 审核日期
|
|
|
|
|
String shrq = "2016-11-13";
|
|
|
|
|
// 审核时间
|
|
|
|
|
String shsj = "12:00:00";
|
|
|
|
|
// 1校验、2审核
|
|
|
|
|
String shzt = "1";
|
|
|
|
|
// 线上0/线下1供应商
|
|
|
|
|
String xsxx = "";
|
|
|
|
|
// 申请日期
|
|
|
|
|
String sqrq = "";
|
|
|
|
|
RecordSet rs = I18nContextUtil.getBean(RecordSet.class);
|
|
|
|
|
ResourceComInfo hr = I18nContextUtil.getBean(ResourceComInfo.class);
|
|
|
|
|
BillFieldUtil unit = new BillFieldUtil();
|
|
|
|
|
Date now = new Date();
|
|
|
|
|
SimpleDateFormat datetype = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
SimpleDateFormat timetype = new SimpleDateFormat("HH:mm:ss");
|
|
|
|
|
shrq = datetype.format(now);
|
|
|
|
|
shsj = timetype.format(now);
|
|
|
|
|
lcbh = requestId;
|
|
|
|
|
shyj = request.getRequestManager().getRemark();
|
|
|
|
|
shr = hr.getResourcename(request.getLastoperator());
|
|
|
|
|
logger_3f2e7fc2.info(String.valueOf("OaSrmVendorPropmtionServiceCheckAction-Request: " + requestId + "开始"));
|
|
|
|
|
OaSrmVendorPropmtionServiceServiceStub.OaInputVendor oainputvendor = new OaSrmVendorPropmtionServiceServiceStub.OaInputVendor();
|
|
|
|
|
// 封装单据主信息
|
|
|
|
|
// 封装表单信息
|
|
|
|
|
// 获取表单主字段信息
|
|
|
|
|
Property[] properties = request.getMainTableInfo().getProperty();
|
|
|
|
|
for (int i = 0; i < properties.length; i++) {
|
|
|
|
|
// 主表数据
|
|
|
|
|
// 字段名
|
|
|
|
|
String name = properties[i].getName().toLowerCase();
|
|
|
|
|
// 值
|
|
|
|
|
String value = Util.null2String(properties[i].getValue());
|
|
|
|
|
// 单据主信息使用
|
|
|
|
|
if (name.equals("lcbh")) {
|
|
|
|
|
if (!value.equals("")) {
|
|
|
|
|
// 流程编号
|
|
|
|
|
lcbh = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (name.equals("sqdwbm")) {
|
|
|
|
|
// 公司编码
|
|
|
|
|
sqdwbm = value;
|
|
|
|
|
}
|
|
|
|
|
if (name.equals("sqdw")) {
|
|
|
|
|
// 公司名称
|
|
|
|
|
sqdw = value;
|
|
|
|
|
}
|
|
|
|
|
if (name.equals("gysbm")) {
|
|
|
|
|
// 供应商编码
|
|
|
|
|
gysbm = value;
|
|
|
|
|
}
|
|
|
|
|
if (name.equals("gysmc")) {
|
|
|
|
|
// 供应商名称
|
|
|
|
|
gysmc = value;
|
|
|
|
|
}
|
|
|
|
|
if (name.equals("gyslx")) {
|
|
|
|
|
// 供应商类型名称
|
|
|
|
|
gyslx = unit.getselectName(value, "47262");
|
|
|
|
|
logger_3f2e7fc2.info(String.valueOf("供应商类型名称:" + gyslx));
|
|
|
|
|
}
|
|
|
|
|
if (name.equals("sqr")) {
|
|
|
|
|
// 申请人
|
|
|
|
|
sqrxm = hr.getResourcename(value);
|
|
|
|
|
// 申请人
|
|
|
|
|
;
|
|
|
|
|
}
|
|
|
|
|
if (name.equals("sqbm")) {
|
|
|
|
|
// 部门名称
|
|
|
|
|
sqbm = unit.getDepartmentname(value);
|
|
|
|
|
}
|
|
|
|
|
if (name.equals("gh")) {
|
|
|
|
|
// 工号
|
|
|
|
|
gh = value;
|
|
|
|
|
}
|
|
|
|
|
if (name.equals("gycpmc")) {
|
|
|
|
|
// 工号
|
|
|
|
|
gycpmc = value;
|
|
|
|
|
}
|
|
|
|
|
if (name.equals("xsxx")) {
|
|
|
|
|
xsxx = unit.getselectName(value, "47269");
|
|
|
|
|
logger_3f2e7fc2.info(String.valueOf("线上线下供应商:" + xsxx));
|
|
|
|
|
if (xsxx.length() > 1) {
|
|
|
|
|
// 线上0/线下1供应商
|
|
|
|
|
xsxx = xsxx.substring(0, 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (name.equals("sqrq")) {
|
|
|
|
|
sqrq = value;
|
|
|
|
|
logger_3f2e7fc2.info(String.valueOf("申请日期:" + value));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
oainputvendor.setRequestId(requestId);
|
|
|
|
|
oainputvendor.setLcbh(lcbh);
|
|
|
|
|
oainputvendor.setSqdwbm(sqdwbm);
|
|
|
|
|
oainputvendor.setSqdw(sqdw);
|
|
|
|
|
oainputvendor.setSqbm(sqbm);
|
|
|
|
|
oainputvendor.setGysbm(gysbm);
|
|
|
|
|
oainputvendor.setGysmc(gysmc);
|
|
|
|
|
oainputvendor.setGyslx(gyslx);
|
|
|
|
|
oainputvendor.setSqrxm(sqrxm);
|
|
|
|
|
oainputvendor.setGh(gh);
|
|
|
|
|
oainputvendor.setGycpmc(gycpmc);
|
|
|
|
|
oainputvendor.setShr(shr);
|
|
|
|
|
oainputvendor.setShyj(shyj);
|
|
|
|
|
oainputvendor.setShrq(shrq);
|
|
|
|
|
oainputvendor.setShsj(shsj);
|
|
|
|
|
oainputvendor.setShzt(shzt);
|
|
|
|
|
// writeLog("调用接口开始0 ");
|
|
|
|
|
String sta = "";
|
|
|
|
|
String meg = "";
|
|
|
|
|
if (xsxx.equals("1")) {
|
|
|
|
|
sta = "S";
|
|
|
|
|
meg = "线下供应商!!!";
|
|
|
|
|
logger_3f2e7fc2.info(String.valueOf("调用接口完成RequestId--" + requestId + "--sta--" + sta + "--meg--" + meg));
|
|
|
|
|
} else {
|
|
|
|
|
CallSrmServices srm = new CallSrmServices();
|
|
|
|
|
srm.setOainputvendor(oainputvendor);
|
|
|
|
|
String[] rtInfo = srm.call();
|
|
|
|
|
logger_3f2e7fc2.info(String.valueOf("调用接口完成RequestId--" + rtInfo[0] + "--Istat--" + rtInfo[1] + "--Srmsage--" + rtInfo[2]));
|
|
|
|
|
sta = rtInfo[1];
|
|
|
|
|
meg = rtInfo[2].replace("'", "’");
|
|
|
|
|
}
|
|
|
|
|
String tablename = "";
|
|
|
|
|
String wfid = request.getWorkflowid();
|
|
|
|
|
tablename = unit.getTablename(wfid);
|
|
|
|
|
String logsql = "update " + tablename + " set sta ='" + sta + "', meg = '" + meg + "' where requestId = " + requestId;
|
|
|
|
|
logger_3f2e7fc2.info(String.valueOf("logsql:" + logsql));
|
|
|
|
|
String poolname = CONN_TYPE.workflow.getType();
|
|
|
|
|
// TODO E10执行sql方法第二参数必须指定源,默认使用流程源,单体客户无需修改,微服务/组合客户需根据查询表所属服务切换源,或使用外部数据源
|
|
|
|
|
rs.executeSql(logsql, poolname);
|
|
|
|
|
logger_3f2e7fc2.info(String.valueOf("OaSrmVendorPropmtionServiceCheckAction-Request: " + requestId + "完成"));
|
|
|
|
|
if ("S".equals(sta) && ("直接材料".equals(gyslx) || "间接材料".equals(gyslx) || "OEM及委外加工".equals(gyslx))) {
|
|
|
|
|
logger_3f2e7fc2.info(String.valueOf(requestId + "调用货源关系接口" + "--" + sta + "--" + gyslx));
|
|
|
|
|
Set<String> set = new HashSet<String>();
|
|
|
|
|
Set<String> wlhset = new HashSet<String>();
|
|
|
|
|
List<String> list = new ArrayList<String>();
|
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
|
DetailTable[] detailtable = request.getDetailTableInfo().getDetailTable();
|
|
|
|
|
// 指定明细表
|
|
|
|
|
DetailTable dtq = detailtable[2];
|
|
|
|
|
// 当前明细表的所有数据,按行存储
|
|
|
|
|
Row[] sq = dtq.getRow();
|
|
|
|
|
if (sq.length <= 300) {
|
|
|
|
|
SRM_OA_VENMATEXT_RESULT param = new SRM_OA_VENMATEXT_RESULT();
|
|
|
|
|
VenMatExtResultIn paramInfo = new VenMatExtResultIn();
|
|
|
|
|
VenMatExtResultItemIn[] item = new VenMatExtResultItemIn[sq.length];
|
|
|
|
|
for (int j = 0; j < sq.length; j++) {
|
|
|
|
|
// 指定行
|
|
|
|
|
Row rq = sq[j];
|
|
|
|
|
Cell[] cq = rq.getCell();
|
|
|
|
|
VenMatExtResultItemIn itemIn = new VenMatExtResultItemIn();
|
|
|
|
|
for (int k = 0; k < cq.length; k++) {
|
|
|
|
|
// 指定列
|
|
|
|
|
Cell cq1 = cq[k];
|
|
|
|
|
// 明细字段名称
|
|
|
|
|
String nameq = cq1.getName().toLowerCase();
|
|
|
|
|
// 明细字段的值
|
|
|
|
|
String valueq = Util.null2String(cq1.getValue());
|
|
|
|
|
if ("cgzzbm".equals(nameq)) {
|
|
|
|
|
set.add(valueq);
|
|
|
|
|
}
|
|
|
|
|
if ("直接材料".equals(gyslx) || "间接材料".equals(gyslx)) {
|
|
|
|
|
if ("wlh".equals(nameq)) {
|
|
|
|
|
itemIn.setMaterialCode(valueq);
|
|
|
|
|
list.add(valueq);
|
|
|
|
|
}
|
|
|
|
|
if ("wlms".equals(nameq)) {
|
|
|
|
|
String wlms = StringEscapeUtils.unescapeHtml(valueq.trim());
|
|
|
|
|
itemIn.setMaterialName(wlms);
|
|
|
|
|
}
|
|
|
|
|
if ("xjxzb".equals(nameq)) {
|
|
|
|
|
itemIn.setWeight(valueq);
|
|
|
|
|
}
|
|
|
|
|
if ("clfl".equals(nameq)) {
|
|
|
|
|
String clfl = unit.getselectName(valueq, "48517");
|
|
|
|
|
itemIn.setMatLevel(clfl);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if ("wlh".equals(nameq)) {
|
|
|
|
|
itemIn.setMatCategoryCode(valueq);
|
|
|
|
|
list.add(valueq);
|
|
|
|
|
}
|
|
|
|
|
if ("wlms".equals(nameq)) {
|
|
|
|
|
String wlms = StringEscapeUtils.unescapeHtml(valueq.trim());
|
|
|
|
|
itemIn.setMatCategoryName(wlms);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
item[j] = itemIn;
|
|
|
|
|
}
|
|
|
|
|
if (list.size() > 0) {
|
|
|
|
|
for (String s : list) {
|
|
|
|
|
boolean flag = wlhset.add(s);
|
|
|
|
|
if (!flag) {
|
|
|
|
|
sb.append("物料号-" + s + "-存在重复;");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (sb != null && sb.length() > 0) {
|
|
|
|
|
sta = "E";
|
|
|
|
|
meg = sb.toString();
|
|
|
|
|
logger_3f2e7fc2.info(String.valueOf(requestId + " 用户申请GY105流程数据不符合要求:" + meg));
|
|
|
|
|
} else {
|
|
|
|
|
if (set.size() == 1) {
|
|
|
|
|
paramInfo.setApplyUser(gh);
|
|
|
|
|
paramInfo.setCheckUser(shr);
|
|
|
|
|
paramInfo.setCompanyCode(sqdwbm);
|
|
|
|
|
paramInfo.setCompanyName(sqdw);
|
|
|
|
|
paramInfo.setVendorCode(gysbm);
|
|
|
|
|
paramInfo.setVendorName(gysmc);
|
|
|
|
|
paramInfo.setHandleType("0");
|
|
|
|
|
paramInfo.setRequestId("GY105/" + requestId);
|
|
|
|
|
paramInfo.setStartDate(sqrq);
|
|
|
|
|
paramInfo.setEndDate("2099-12-31");
|
|
|
|
|
paramInfo.setPurOrgCode((String) set.toArray()[0]);
|
|
|
|
|
paramInfo.setItems(item);
|
|
|
|
|
param.setInputTab(paramInfo);
|
|
|
|
|
OaSrmVenMatExtService service = new OaSrmVenMatExtService();
|
|
|
|
|
String[] str = service.call(param);
|
|
|
|
|
if ("1".equals(str[0])) {
|
|
|
|
|
sta = "S";
|
|
|
|
|
} else {
|
|
|
|
|
sta = "E";
|
|
|
|
|
}
|
|
|
|
|
meg = str[1];
|
|
|
|
|
logger_3f2e7fc2.info(String.valueOf(requestId + " GY105调用货源关系接口校验数据返回值" + meg));
|
|
|
|
|
} else {
|
|
|
|
|
sta = "E";
|
|
|
|
|
meg = "一次只能申请一个采购组织的";
|
|
|
|
|
logger_3f2e7fc2.info(String.valueOf(requestId + " 用户申请GY105流程数据不符合要求:" + meg));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
sta = "E";
|
|
|
|
|
meg = "明细表明细行不能超过300行,请分开申请!";
|
|
|
|
|
logger_3f2e7fc2.info(String.valueOf(requestId + " 用户申请GY105流程数据不符合要求:" + meg));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!sta.equals("S")) {
|
|
|
|
|
request.getRequestManager().setMessageid("error");
|
|
|
|
|
request.getRequestManager().setMessagecontent(meg);
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
request.getRequestManager().setMessageid("error");
|
|
|
|
|
request.getRequestManager().setMessagecontent("SRM接口返回错误信息:" + e.toString());
|
|
|
|
|
logger_3f2e7fc2.info(String.valueOf(requestId + "OaSrmVendorPropmtionServiceCheckAction-Request出错: " + e.toString()));
|
|
|
|
|
}
|
|
|
|
|
return WeaResult.success(getResultMapForAction(weaverResultMap, "result", Action.SUCCESS, request.getRequestManager()));
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
logger_3f2e7fc2.error("OaSrmVendorPropmtionServiceCheckAction e: {}", e.getMessage());
|
|
|
|
|
return WeaResult.success(getResultMapForAction(weaverResultMap, "result", WeaResult.fail(500, "执行异常", getResultMapForAction(weaverResultMap, "result", e.getMessage(), request.getRequestManager())), request.getRequestManager()));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Map<String, Object> getResultMapForAction(Map<String, Object> map, String key, Object value, RequestManager requestManager) {
|
|
|
|
|
if (key != null && !key.isEmpty()) {
|
|
|
|
|
map.put(key, value);
|
|
|
|
|
}
|
|
|
|
|
String msgContent = requestManager.getMessagecontent();
|
|
|
|
|
if (msgContent != null && !msgContent.isEmpty()) {
|
|
|
|
|
map.put("msgContent", msgContent);
|
|
|
|
|
}
|
|
|
|
|
String msgId = requestManager.getMessageid();
|
|
|
|
|
if (msgId != null && !msgId.isEmpty()) {
|
|
|
|
|
map.put("msgId", msgId);
|
|
|
|
|
}
|
|
|
|
|
return map;
|
|
|
|
|
}
|
|
|
|
|
}
|