Explorar el Código

【科翔】【MES对接】

wuyx hace 1 año
padre
commit
c8986d04e9

+ 78 - 40
src/main/java/com/uas/eis/controller/ERPController.java

@@ -1,60 +1,98 @@
 package com.uas.eis.controller;
 
+import com.uas.eis.core.config.SpObserver;
+import com.uas.eis.core.enums.BusinessType;
+import com.uas.eis.dao.BaseDao;
+import com.uas.eis.entity.ApiReq;
+import com.uas.eis.entity.Employee;
+import com.uas.eis.entity.ErrorMessage;
+import com.uas.eis.exception.ApiSystemException;
 import com.uas.eis.sdk.entity.ApiResult;
 
-import com.uas.eis.service.ERPService;
+import com.uas.eis.sdk.resp.ApiResponse;
+import com.uas.eis.service.EAPICommonService;
+import com.uas.eis.service.EAPIDataService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
 
 /**
- * @author koul
- * @email koul@usoftchina.com
- * @date 2021-12-07 9:31
+ * @author wuyx
+ * @date 2023-12-11
  */
 @RestController
+@RequestMapping("/api")
 public class ERPController {
     @Autowired
-    private ERPService erpService;
-
-    /**
-     * 物料资料
-     * @param data
-     * @return
-     */
-    @RequestMapping("/erp/syncProduct")
-    public ApiResult<String> syncProduct(String data){
-        return erpService.syncProduct(data);
-    }
-
-    /**
-     * 工单资料
-     * @param data
-     * @return
-     */
-    @RequestMapping("/erp/syncMakeBase")
-    public ApiResult<String> syncMakeBase(String data){
-        return erpService.syncMakeBase(data);
-    }
-
-    /**
-     *工单BOM资料
-     * @param data
-     * @return
-     */
-    @RequestMapping("/erp/syncMakeBaseDetail")
-    public ApiResult<String> syncMakeBaseDetail(String data){
-        return erpService.syncMakeBaseDetail(data);
-    }
+    private EAPICommonService eAPICommonService;
+    @Autowired
+    private EAPIDataService eapiDataService;
+    @Value("${spring.datasource.username}")
+    private String username;
 
+    @Autowired
+    private BaseDao baseDao;
     /**
-     *推送领料单
-     * @param data
+     * MES对接通用接口 -- 新增
+     * @param apiReq
      * @return
      */
-    @RequestMapping("/erp/syncUpdateReceiveByErp")
-    public ApiResult<String> syncUpdateReceiveByErp(String data){
-        return erpService.syncUpdateReceiveByErp(data);
+    @RequestMapping(value ="/create", method = RequestMethod.POST)
+    public ApiResult<Map<String,Object>> createOrder(HttpServletRequest request, @RequestBody ApiReq apiReq){
+        apiReq.setAccessKey(request.getHeader("AccessKey"));
+        apiReq.setTimestamp(request.getHeader("Timestamp"));
+        apiReq.setRequestId(request.getHeader("RequestId"));
+        apiReq.setSignature(request.getHeader("Signature"));
+        Employee employee = eAPICommonService.loginEmp(apiReq);
+        if(employee == null){
+            ApiResult apiResult = new ApiResult();
+            apiResult.setCode(ErrorMessage.EMP_ILLEGAL.getCode());
+            apiResult.setMessage(ErrorMessage.EMP_ILLEGAL.getMessage());
+            apiResult.setRequestId(apiReq.getRequestId());
+            throw new ApiSystemException(apiResult);
+        }else {
+            employee.setEm_name("API("+apiReq.getAccessKey()+")");
+            employee.setEm_type("admin");
+            employee.setEm_class("admin_virtual");
+        }
+        try {
+            BusinessType bus = BusinessType.valueOf(apiReq.getCode());
+            apiReq.setBusinessType(bus);
+            apiReq.setEmployee(employee);
+            request.getSession().setAttribute("language", "zh_CN");
+        }catch (Exception e){
+            e.printStackTrace();
+            return ApiResponse.failRsp(ErrorMessage.APITYPE_ILLEGAL.getCode(),request.getHeader("RequestId"),ErrorMessage.APITYPE_ILLEGAL.getMessage());
+        }
+        //切账套
+        if(apiReq.getfCode() == null){
+            return ApiResponse.failRsp(ErrorMessage.MASTER_EMPTY.getCode(),request.getHeader("RequestId"),ErrorMessage.MASTER_EMPTY.getMessage());
+        }
+        String toSp = String.valueOf(apiReq.getfCode()).toUpperCase();
+        String fromSp = SpObserver.getSp();
+        if(fromSp==null&&username!=null){
+            fromSp = username;
+            SpObserver.putSp(fromSp);
+        }
+        if(!fromSp.equals(toSp)){
+            if(!baseDao.checkIf(username+".master","ma_user = '"+toSp+"'")){
+                return ApiResponse.failRsp(ErrorMessage.MASTER_ILLEGAL.getCode(),request.getHeader("RequestId"),String.format(ErrorMessage.MASTER_ILLEGAL.getMessage(),toSp));
+            }
+            if(!baseDao.checkIf(username+".master","ma_user = '"+toSp+"' and nvl(ma_enableapi,0) = 1")){
+                return ApiResponse.failRsp(ErrorMessage.MASTER_DISABLED.getCode(),request.getHeader("RequestId"),String.format(ErrorMessage.MASTER_DISABLED.getMessage(),toSp));
+            }
+            SpObserver.putSp(toSp);
+        }
+        ApiResult<Map<String, Object>> res = eapiDataService.dockingOrders(apiReq);
+        if(!fromSp.equals(toSp)){
+            SpObserver.putSp(fromSp);
+        }
+        return res;
     }
 }

+ 103 - 0
src/main/java/com/uas/eis/core/enums/BusinessType.java

@@ -0,0 +1,103 @@
+package com.uas.eis.core.enums;
+
+/**
+ * 系统业务类型
+ *
+ * @author yingp
+ */
+
+public enum BusinessType {
+
+    /**
+     * 报废记录
+     */
+    SCRAP("SCRAP", "报废记录写入", "报废记录", "SCRAP_RECORD", "com.uas.eis.service.Impl.EAPIMesBusiness", "createScrap","");
+    private final String code;
+    private final String name;//业务名称
+    private final String orderType;//单据类型
+    private final String caller;//单据caller
+    private final String busissClass; //调用类
+    private final String busissFunction; //调用方法
+
+    private BusinessType() {
+        this.code = this.toString();
+        this.name = this.toString();
+        this.caller = this.toString();
+        this.orderType = this.toString();
+        this.busissClass = "";
+        this.busissFunction = this.toString();
+    }
+
+    private BusinessType(String name, String caller, String orderType, String busissClass, String busissFunction, String subApi) {
+        this.code = this.toString();
+        this.name = name;
+        this.caller = caller;
+        this.orderType = orderType;
+        this.busissClass = busissClass;
+        this.busissFunction = busissFunction;
+    }
+
+    private BusinessType(String code, String name, String orderType, String caller, String busissClass, String busissFunction, String subApi) {
+        this.code = code;
+        this.name = name;
+        this.caller = caller;
+        this.orderType = orderType;
+        this.busissClass = busissClass;
+        this.busissFunction = busissFunction;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getCaller() {
+        return caller;
+    }
+
+    public String getOrderType() {
+        return orderType;
+    }
+
+    public String getBusissFunction() {
+        return busissFunction;
+    }
+
+    public String getBusissClass() {
+        return busissClass;
+    }
+
+    public static BusinessType getBusinessTypeByCode(String code) {
+        BusinessType[] BusinessTypes = values();
+        for (BusinessType BusinessType : BusinessTypes) {
+            if (BusinessType.getCode().equals(code)) {
+                return BusinessType;
+            }
+        }
+        return null;
+    }
+
+    public static BusinessType getBusinessTypeByCodeAndUrl(String code,String apiUrl) {
+        BusinessType[] BusinessTypes = values();
+        for (BusinessType BusinessType : BusinessTypes) {
+            if (BusinessType.getCode().equals(code)) {
+                return BusinessType;
+            }
+        }
+        return null;
+    }
+
+	public String toString() {
+		return "BusinessType{" +
+				"code='" + code + '\'' +
+				", name='" + name + '\'' +
+				", orderType='" + orderType + '\'' +
+				", caller='" + caller + '\'' +
+				", busissClass='" + busissClass + '\'' +
+				", busissFunction='" + busissFunction + '\'' +
+				'}';
+	}
+}

+ 19 - 8
src/main/java/com/uas/eis/core/support/ApiSignLoginInterceptor.java

@@ -1,12 +1,14 @@
 package com.uas.eis.core.support;
 
+import com.uas.api.crypto.util.MD5Util;
+import com.uas.eis.dao.BaseDao;
 import com.uas.eis.entity.ErrorMessage;
 import com.uas.eis.exception.ApiSystemException;
 import com.uas.eis.sdk.entity.ApiResult;
-import com.uas.eis.utils.MD5Util;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 
@@ -17,7 +19,8 @@ import java.util.*;
 
 @Service
 public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
-
+    @Autowired
+    private BaseDao baseDao;
     // 签名超时时长,默认时间为5分钟,ms
     private static final int SIGN_EXPIRED_TIME = 5 * 60 * 1000;
     private static final String ACCESS_KEY = "AccessKey";
@@ -31,17 +34,25 @@ public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
 
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
-
+        logger.info(String.format("Content-Type:%s,URI:%s,Header:%s,bodyparam:%s"
+                ,request.getRequestURI()
+                ,request.getHeader("Content-Type")
+                ,"stamp{"+request.getHeader(TIMESTAMP_KEY)+"},ACCESS_KEY{"+request.getHeader(ACCESS_KEY)+"},RequestId{"+request.getHeader(RequestId)
+                        +"},sign{"+request.getHeader(SIGN_KEY)+"}"
+                , request.getInputStream().toString()
+                )
+        );
         String timestamp = request.getHeader(TIMESTAMP_KEY);
         String accessKey = request.getHeader(ACCESS_KEY);
         String requestId = request.getHeader(RequestId);
         String originSign = request.getHeader(SIGN_KEY);
+        Object accessSecret_O = baseDao.getFieldDataByCondition("EMPLOYEE", "EM_APISECRET", "EM_CODE='" + accessKey + "' and nvl(EM_ISAPI,0)<>0");
+        String accessSecret = accessSecret_O == null ? "" : accessSecret_O.toString();
         logger.info("timestamp=="+timestamp);
         logger.info("accessKey=="+accessKey);
         logger.info("requestId=="+requestId);
         logger.info("originSign=="+originSign);
 
-        String accessSecret = tokenConfig.get(accessKey);
         if (StringUtils.isEmpty(requestId)) {
             ApiResult apiResult = new ApiResult();
             apiResult.setCode(ErrorMessage.REQUESTID_ILLEGAL.getCode());
@@ -73,6 +84,7 @@ public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
             apiResult.setCode(ErrorMessage.TIMEOUT_ILLEGAL.getCode());
             apiResult.setMessage(ErrorMessage.TIMEOUT_ILLEGAL.getMessage());
             apiResult.setRequestId(requestId);
+            System.out.println(System.currentTimeMillis());
             throw new ApiSystemException(apiResult);
         }
 
@@ -92,7 +104,6 @@ public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
         params.put(RequestId,requestId);
         params.put(TIMESTAMP_KEY,timestamp);
         String sign = createSign(params, accessSecret);
-        System.out.println(sign);
         return sign.equals(originSign);
     }
 
@@ -117,8 +128,8 @@ public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
             temp.append(valueString);
         }
         temp.append("&").append(ACCESS_SECRET).append("=").append(accessSecret);
-        System.out.println(temp);
-        System.out.println(MD5Util.encrypt32Up(temp.toString()));
-        return MD5Util.encrypt32Up(temp.toString());
+        System.out.println("temp: "+temp);
+        System.out.println("sign: "+com.uas.api.crypto.util.MD5Util.encrypt(temp.toString()).toUpperCase());
+        return MD5Util.encrypt(temp.toString()).toUpperCase();
     }
 }

+ 40 - 0
src/main/java/com/uas/eis/entity/ApiBill.java

@@ -0,0 +1,40 @@
+package com.uas.eis.entity;
+
+import java.io.Serializable;
+
+public class ApiBill implements Serializable {
+
+	/**
+	 *
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private int id;
+
+	private String code;
+
+	public ApiBill() {
+
+	}
+	public ApiBill(int id, String code) {
+		this.id = id;
+		this.code = code;
+	}
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+}

+ 31 - 0
src/main/java/com/uas/eis/entity/ApiData.java

@@ -0,0 +1,31 @@
+package com.uas.eis.entity;
+
+import com.uas.eis.utils.StringUtil;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+public class ApiData<T> {
+    private String formStore;//主表信息
+
+    private String gridStore;//从表信息
+
+    public String getFormStore() {
+        return (StringUtil.nvl(formStore,"{}"));
+    }
+
+    public void setFormStore(String formStore) {
+        this.formStore = formStore;
+    }
+
+    public String getGridStore() {
+        return (StringUtil.nvl(gridStore,"[]"));
+    }
+
+    public void setGridStore(String gridStore) {
+        this.gridStore = gridStore;
+    }
+}
+
+

+ 130 - 0
src/main/java/com/uas/eis/entity/ApiReq.java

@@ -0,0 +1,130 @@
+package com.uas.eis.entity;
+
+
+import com.uas.eis.core.enums.BusinessType;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+public class ApiReq<T> {
+    //自定义业务码
+    private String code;
+
+    private String fCode;//工厂代码
+    //传入 数据集
+    private ApiData data;
+
+    /*以下为对接通过后封装*/
+    //用户ID
+    private String AccessKey;
+    //时间戳
+    private String Timestamp;
+    //请求ID
+    private String requestId;
+    //签名
+    private String Signature;
+    //日志ID
+    private int logID;
+    //对接账户信息
+    private Employee employee;
+    //业务信息
+    private BusinessType businessType;
+
+    public String getfCode() {
+        return fCode;
+    }
+
+    public void setfCode(String fCode) {
+        this.fCode = fCode;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+
+    public ApiData getData() {
+        return data;
+    }
+
+    public void setData(ApiData data) {
+        this.data = data;
+    }
+
+    public String getAccessKey() {
+        return AccessKey;
+    }
+
+    public void setAccessKey(String accessKey) {
+        AccessKey = accessKey;
+    }
+
+    public String getTimestamp() {
+        return Timestamp;
+    }
+
+    public void setTimestamp(String timestamp) {
+        Timestamp = timestamp;
+    }
+
+    public String getRequestId() {
+        return requestId;
+    }
+
+    public void setRequestId(String requestId) {
+        this.requestId = requestId;
+    }
+
+    public String getSignature() {
+        return Signature;
+    }
+
+    public void setSignature(String signature) {
+        Signature = signature;
+    }
+
+    public int getLogID() {
+        return logID;
+    }
+
+    public void setLogID(int logID) {
+        this.logID = logID;
+    }
+
+    public Employee getEmployee() {
+        return employee;
+    }
+
+    public void setEmployee(Employee employee) {
+        this.employee = employee;
+    }
+
+    public BusinessType getBusinessType() {
+        return businessType;
+    }
+
+    public void setBusinessType(BusinessType businessType) {
+        this.businessType = businessType;
+    }
+
+    @Override
+    public String toString() {
+        return "ApiReq{" +
+                "code='" + code + '\'' +
+                "fcode='" + fCode + '\'' +
+                ", data=" + (data != null ? data.toString() : "") +
+                ", AccessKey='" + AccessKey + '\'' +
+                ", Timestamp='" + Timestamp + '\'' +
+                ", requestId='" + requestId + '\'' +
+                ", Signature='" + Signature + '\'' +
+                ", logID=" + logID +
+                ", employee=" + (employee != null ? employee.toString() : "")  +
+                ", businessType=" + (businessType != null ? businessType.toString() : "") +
+                '}';
+    }
+}

+ 9 - 1
src/main/java/com/uas/eis/entity/ErrorMessage.java

@@ -13,7 +13,15 @@ public enum ErrorMessage {
     TIMEOUT_ILLEGAL("1003","请求超时"),
     REQUESTID_ILLEGAL("1004","随机字符串不合法"),
     SIGNATURE_ILLEGAL("1005","签名错误"),
-    BUSINESS_ILLEGAL("2001","业务异常");
+    BUSINESS_ILLEGAL("2001","业务异常"),
+
+    APITYPE_ILLEGAL("1006","接口类型不存在"),
+    EMP_ILLEGAL("1007","登录用户错误或不存在"),
+    APITYPESET_NOTFOUND("1008","接口方法不存在"),
+    BUSDATA_ILLEGAL("1009","接口数据错误"),
+    MASTER_EMPTY("1010","工厂代码为空"),
+    MASTER_ILLEGAL("1011","工厂代码:%s 非法。"),
+    MASTER_DISABLED("1012","工厂:%s 尚未开通对接业务。");
 
     private String code;
     private String message;

+ 221 - 0
src/main/java/com/uas/eis/entity/MesApiLog.java

@@ -0,0 +1,221 @@
+package com.uas.eis.entity;
+
+import com.uas.eis.utils.NumberUtil;
+import com.uas.eis.utils.StringUtil;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class MesApiLog {
+    private int ml_id;
+    private Date ml_date;// 下载时间
+    private String ml_businesstype;// 业务类型,如:工单写入
+    private String ml_requestid;// 请求ID
+    private String ml_fcode;// 工厂代码
+    private String ml_accessKey;// MES用户
+    private String ml_delstatus;// 处理结果
+    private int ml_delcount; //处理条数
+    private Date ml_deldate; // 处理时间
+    private String ml_type;// 单据类型
+    private String ml_billcode;// 单据编号
+    private int ml_billid;// 单据ID
+    private String ml_operate;// 操作例如:过账等
+    private String ml_errmsg;// 失败原因
+    private String ml_msg;// 提示信息(成功后返回)
+
+    public int getMl_id() {
+        return ml_id;
+    }
+
+    public void setMl_id(int ml_id) {
+        this.ml_id = ml_id;
+    }
+
+    public Date getMl_date() {
+        return ml_date;
+    }
+
+    public void setMl_date(Date ml_date) {
+        this.ml_date = ml_date;
+    }
+
+    public String getMl_businesstype() {
+        return ml_businesstype;
+    }
+
+    public void setMl_businesstype(String ml_businesstype) {
+        this.ml_businesstype = ml_businesstype;
+    }
+
+    public String getMl_requestid() {
+        return ml_requestid;
+    }
+
+    public void setMl_requestid(String ml_requestid) {
+        this.ml_requestid = ml_requestid;
+    }
+
+    public String getMl_accessKey() {
+        return ml_accessKey;
+    }
+
+    public void setMl_accessKey(String ml_accessKey) {
+        this.ml_accessKey = ml_accessKey;
+    }
+
+    public String getMl_delstatus() {
+        return ml_delstatus;
+    }
+
+    public void setMl_delstatus(String ml_delstatus) { this.ml_delstatus = ml_delstatus; }
+
+    public int getMl_delcount() {
+        return ml_delcount;
+    }
+
+    public void setMl_delcount(int ml_delcount) {  this.ml_delcount = ml_delcount; }
+
+    public Date getMl_deldate() {
+        return ml_deldate;
+    }
+
+    public void setMl_deldate(Date ml_deldate) {
+        this.ml_deldate = ml_deldate;
+    }
+
+    public String getMl_type() {
+        return ml_type;
+    }
+
+    public void setMl_type(String ml_type) {
+        this.ml_type = ml_type;
+    }
+
+    public String getMl_billcode() {
+        return ml_billcode;
+    }
+
+    public void setMl_billcode(String ml_billcode) {
+        this.ml_billcode = ml_billcode;
+    }
+
+    public int getMl_billid() {
+        return ml_billid;
+    }
+
+    public void setMl_billid(int ml_billid) {
+        this.ml_billid = ml_billid;
+    }
+
+    public String getMl_fcode() {
+        return ml_fcode;
+    }
+
+    public void setMl_fcode(String ml_fcode) {
+        this.ml_fcode = ml_fcode;
+    }
+
+    public String getMl_operate() {
+        return ml_operate;
+    }
+
+    public void setMl_operate(String ml_operate) {
+        this.ml_operate = ml_operate;
+    }
+
+    public String getMl_errmsg() {
+        return ml_errmsg;
+    }
+
+    public void setMl_errmsg(String ml_errmsg) {
+        this.ml_errmsg = ml_errmsg;
+    }
+
+    public String getMl_msg() {
+        return ml_msg;
+    }
+
+    public void setMl_msg(String ml_msg) {
+        this.ml_msg = ml_msg;
+    }
+
+
+    public String table() {
+        return "MesApiLog";
+    }
+
+    public String[] keyColumns() {
+        return new String[]{"ml_id"};
+    }
+
+    public MesApiLog() {
+
+    }
+
+    public MesApiLog(ApiReq apiReq) {
+        this.ml_id = NumberUtil.isEmpty(apiReq.getLogID()) ? 0 : apiReq.getLogID();
+        this.ml_businesstype = apiReq.getBusinessType().getName();// 业务类型,如:工单写入
+        this.ml_requestid = apiReq.getRequestId();// 请求ID
+        this.ml_accessKey = apiReq.getAccessKey();// MES用户
+        this.ml_type = apiReq.getBusinessType().getOrderType();// 单据类型
+        this.ml_operate = apiReq.getBusinessType().getName();// 操作例如:过账等
+        this.ml_fcode = apiReq.getfCode();
+    }
+
+    public List<String> getLogSql() {
+        List<String> sqls = new ArrayList<>();
+        //主表
+        StringBuffer sql = new StringBuffer("INSERT INTO MesApiLog(ml_id, ml_date, ml_businesstype, ml_requestid, ml_accessKey, ml_type, ml_operate,ml_fcode) VALUES(");
+        sql.append(String.valueOf(this.ml_id)).append(",").append("sysdate")
+                .append(",'").append(StringUtil.nvl(this.ml_businesstype, "")).append("'")
+                .append(",'").append(StringUtil.nvl(this.ml_requestid, "")).append("'")
+                .append(",'").append(StringUtil.nvl(this.ml_accessKey, "")).append("'")
+                .append(",'").append(StringUtil.nvl(this.ml_type, "")).append("'")
+                .append(",'").append(StringUtil.nvl(this.ml_operate, "")).append("'")
+                .append(",'").append(StringUtil.nvl(this.ml_fcode, "")).append("'")
+                .append(")");
+        sqls.add(sql.toString());
+        return sqls;
+    }
+
+    public String getLogBillCodeSql(ApiBill apiBill) {
+        if (apiBill != null) {
+            this.ml_billcode = apiBill.getCode();
+            this.ml_billid = apiBill.getId();
+            StringBuffer sql = new StringBuffer("update MesApiLog set ");
+            sql.append(" ml_billcode = '").append(StringUtil.nvl(this.ml_billcode, "")).append("'")
+                    .append(",ml_billid = '").append(StringUtil.nvl(this.ml_billid, "-1")).append("'")
+                    .append(" where ml_id = ").append(String.valueOf(this.ml_id));
+            return sql.toString();
+        } else {
+            return null;
+        }
+    }
+
+    public String getSuccessSql(String msg) {
+        this.ml_delstatus = "S";
+        StringBuffer sql = new StringBuffer("update MesApiLog set ");
+        sql.append(" ml_deldate = sysdate")
+                .append(", ml_delstatus = '").append(StringUtil.nvl(this.ml_delstatus, "S")).append("'")
+				.append(", ml_delcount = ").append( (NumberUtil.isEmpty(this.ml_delcount)?" null ":this.ml_delcount) )
+                .append(", ml_msg = '").append(StringUtil.nvl(msg, "")).append("'")
+                .append(" where ml_id = ").append(String.valueOf(this.ml_id));
+        return sql.toString();
+    }
+
+    public String getFailureSql(String errorMsg) {
+        this.ml_delstatus = "F";
+        this.ml_errmsg = errorMsg;
+        if (errorMsg != null && errorMsg.length() > 4000) {
+            this.ml_errmsg = errorMsg.substring(0, 3900) + "...";
+        }
+        StringBuffer sql = new StringBuffer("update MesApiLog set ");
+        sql.append(" ml_deldate = sysdate")
+                .append(", ml_delstatus = '").append(StringUtil.nvl(this.ml_delstatus, "F")).append("'")
+				.append(", ml_delcount = ").append( (NumberUtil.isEmpty(this.ml_delcount)?" null ":this.ml_delcount) )
+                .append(", ml_errmsg = '").append(StringUtil.nvl(this.ml_errmsg, "")).append("'")
+                .append(" where ml_id = ").append(String.valueOf(this.ml_id));
+        return sql.toString();
+    }
+}

+ 218 - 0
src/main/java/com/uas/eis/entity/ScrapRecord.java

@@ -0,0 +1,218 @@
+package com.uas.eis.entity;
+
+import com.uas.eis.utils.BaseUtil;
+import com.uas.eis.utils.NumberUtil;
+import com.uas.eis.utils.StringUtil;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class ScrapRecord implements Serializable {
+    private Integer object_rrn;
+    private String scrap_code;
+    private String create_time;
+    private String create_mancode;
+    private String created_manname;
+    private String lotno;
+    private String makecode;
+    private String step_code;
+    private String responsible_process;
+    private String responsible_processname;
+    private String customer_code;
+    private String prod_code;
+    private Integer pqty;
+    private Integer sqty;
+    private Integer uqty;
+    private List<ScrapRecordDet> items;
+
+    public Integer getObject_rrn() {
+        return object_rrn==null?0:object_rrn;
+    }
+
+    public void setObject_rrn(Integer object_rrn) {
+        this.object_rrn = object_rrn;
+    }
+
+    public String getScrap_code() {
+        return scrap_code==null?"":scrap_code;
+    }
+
+    public void setScrap_code(String scrap_code) {
+        this.scrap_code = scrap_code;
+    }
+
+    public String getCreate_time() {
+        return create_time==null?"":create_time;
+    }
+
+    public void setCreate_time(String create_time) {
+        this.create_time = create_time;
+    }
+
+    public String getCreate_mancode() {
+        return create_mancode==null?"":create_mancode;
+    }
+
+    public void setCreate_mancode(String create_mancode) {
+        this.create_mancode = create_mancode;
+    }
+
+    public String getCreated_manname() {
+        return created_manname==null?"":created_manname;
+    }
+
+    public void setCreated_manname(String created_manname) {
+        this.created_manname = created_manname;
+    }
+
+    public String getLotno() {
+        return lotno==null?"":lotno;
+    }
+
+    public void setLotno(String lotno) {
+        this.lotno = lotno;
+    }
+
+    public String getMakecode() {
+        return makecode==null?"":makecode;
+    }
+
+    public void setMakecode(String makecode) {
+        this.makecode = makecode;
+    }
+
+    public String getStep_code() {
+        return step_code==null?"":step_code;
+    }
+
+    public void setStep_code(String step_code) {
+        this.step_code = step_code;
+    }
+
+    public String getResponsible_process() {
+        return responsible_process==null?"":responsible_process;
+    }
+
+    public void setResponsible_process(String responsible_process) {
+        this.responsible_process = responsible_process;
+    }
+
+    public String getResponsible_processname() {
+        return responsible_processname==null?"":responsible_processname;
+    }
+
+    public void setResponsible_processname(String responsible_processname) {
+        this.responsible_processname = responsible_processname;
+    }
+
+    public String getCustomer_code() {
+        return customer_code==null?"":customer_code;
+    }
+
+    public void setCustomer_code(String customer_code) {
+        this.customer_code = customer_code;
+    }
+
+    public String getProd_code() {
+        return prod_code==null?"":prod_code;
+    }
+
+    public void setProd_code(String prod_code) {
+        this.prod_code = prod_code;
+    }
+
+    public Integer getPqty() {
+        return pqty == null?0:pqty;
+    }
+
+    public void setPqty(Integer pqty) {
+        this.pqty = pqty;
+    }
+
+    public Integer getSqty() {
+        return sqty == null?0:sqty;
+    }
+
+    public void setSqty(Integer sqty) {
+        this.sqty = sqty;
+    }
+
+    public Integer getUqty() {
+        return uqty == null?0:uqty;
+    }
+
+    public void setUqty(Integer uqty) {
+        this.uqty = uqty;
+    }
+
+    public List<ScrapRecordDet> getItems() {
+        return items;
+    }
+
+    public void setItems(List<ScrapRecordDet> items) {
+        this.items = items;
+    }
+    public List<String> getSqls(String source_){
+        List<String> sqls = new ArrayList<>();
+        StringBuffer sqlStr = new StringBuffer();
+        sqlStr.append("INSERT INTO DOCKING_SCRAP_RECORD(CODE,LOTNO,PRODCODE,PQTY,SQTY,UQTY" +
+                ",MAKECODE,CCCODE,INDATE,INTIME,INMANCODE,INMAN,SOURCE_, SOURCEID,RESPONSIBLE_PROCESSCODE,RESPONSIBLE_PROCESSNAME)")
+                .append("values (")
+                .append("'").append(scrap_code).append("',")
+                .append("'").append(lotno).append("',")
+                .append("'").append(prod_code).append("',")
+                .append("'").append(getPqty()).append("',")
+                .append("'").append(getSqty()).append("',")
+                .append("'").append(getUqty()).append("',")
+                .append("'").append(getMakecode()).append("',")
+                .append("'").append(getStep_code()).append("',")
+                .append("'").append(getCreate_time()).append("',")
+                .append("to_date('"+getCreate_time()+"','yyyy-mm-dd hh24:mi:ss')").append(",")
+                .append("'").append(getCreate_mancode()).append("',")
+                .append("'").append(getCreated_manname()).append("',")
+                .append("'").append(source_).append("',")
+                .append("'").append(getObject_rrn()).append("',")
+                .append("'").append(getResponsible_process()).append("',")
+                .append("'").append(getResponsible_processname()).append("'")
+                .append(")");
+        sqls.add(sqlStr.toString());
+        //缺陷代码等信息  List<ScrapRecordDet>
+        if(getItems()!=null &&getItems().size()>0){
+            for (ScrapRecordDet item : getItems()) {
+                sqlStr = new StringBuffer();
+                sqlStr.append("INSERT INTO DOCKING_SCRAP_RECORD_DET(CODE, INDATE, INMANCODE, INMAN, LOTNO, PROD_CODE, STEP_CODE, PQTY, SQTY, UQTY, CUSTOMER_CODE, MAKECODE, LAYER" +
+                        ",RESPONSIBLE_PROCESSCODE, RESPONSIBLE_PROCESSNAME, DEFECT_CODE, DEFECT_CODENAME, DEFECT_GROUPCODE, DEFECT_GROUPCODENAME, SCRAP_AREA" +
+                        ", SCRAP_ACTION,SOURCE_,SOURCEID)")
+                        .append("values (")
+                        .append("'").append(getScrap_code()).append("',")
+                        .append("to_date('"+getCreate_time()+"','yyyy-mm-dd hh24:mi:ss')").append(",")
+                        .append("'").append(getCreate_mancode()).append("',")
+                        .append("'").append(getCreated_manname()).append("',")
+                        .append("'").append(getLotno()).append("',")
+                        .append("'").append(getProd_code()).append("',")
+                        .append("'").append(getScrap_code()).append("',")
+                        .append("'").append(item.getPqty()).append("',")
+                        .append("'").append(item.getSqty()).append("',")
+                        .append("'").append(item.getUqty()).append("',")
+                        .append("'").append(getCustomer_code()).append("',")
+                        .append("'").append(getMakecode()).append("',")
+                        .append("'").append(item.getLayer()).append("',")
+                        .append("'").append(getResponsible_process()).append("',")
+                        .append("'").append(getResponsible_processname()).append("',")
+                        .append("'").append(item.getDefect_code()).append("',")
+                        .append("'").append(item.getDefect_codename()).append("',")
+                        .append("'").append(item.getDefect_groupcode()).append("',")
+                        .append("'").append(item.getDefect_groupcodename()).append("',")
+                        .append("'").append(item.getScrap_area()).append("',")
+                        .append("'").append(item.getScrap_action()).append("',")
+                        .append("'").append(source_).append("',")
+                        .append("'").append(getObject_rrn()).append("'")
+                        .append(")");
+                sqls.add(sqlStr.toString());
+            }
+        }
+        return sqls;
+    }
+}

+ 96 - 0
src/main/java/com/uas/eis/entity/ScrapRecordDet.java

@@ -0,0 +1,96 @@
+package com.uas.eis.entity;
+
+import java.io.Serializable;
+
+public class ScrapRecordDet implements Serializable {
+    private Integer pqty;
+    private Integer sqty;
+    private Integer uqty;
+    private String layer;
+    private String defect_code;
+    private String defect_codename;
+    private String defect_groupcode;
+    private String defect_groupcodename;
+    private Double scrap_area;
+    private String scrap_action;
+
+    public Integer getPqty() {
+        return pqty == null?0:pqty;
+    }
+
+    public void setPqty(Integer pqty) {
+        this.pqty = pqty;
+    }
+
+    public Integer getSqty() {
+        return sqty == null?0:sqty;
+    }
+
+    public void setSqty(Integer sqty) {
+        this.sqty = sqty;
+    }
+
+    public Integer getUqty() {
+        return uqty == null?0:uqty;
+    }
+
+    public void setUqty(Integer uqty) {
+        this.uqty = uqty;
+    }
+
+    public String getLayer() {
+        return layer==null?"":layer;
+    }
+
+    public void setLayer(String layer) {
+        this.layer = layer;
+    }
+
+    public String getDefect_code() {
+        return defect_code==null?"":defect_code;
+    }
+
+    public void setDefect_code(String defect_code) {
+        this.defect_code = defect_code;
+    }
+
+    public String getDefect_codename() {
+        return defect_codename==null?"":defect_codename;
+    }
+
+    public void setDefect_codename(String defect_codename) {
+        this.defect_codename = defect_codename;
+    }
+
+    public String getDefect_groupcode() {
+        return defect_groupcode==null?"":defect_groupcode;
+    }
+
+    public void setDefect_groupcode(String defect_groupcode) {
+        this.defect_groupcode = defect_groupcode;
+    }
+
+    public String getDefect_groupcodename() {
+        return defect_groupcodename==null?"":defect_groupcodename;
+    }
+
+    public void setDefect_groupcodename(String defect_groupcodename) {
+        this.defect_groupcodename = defect_groupcodename;
+    }
+
+    public Double getScrap_area() {
+        return scrap_area ==null?0.0:scrap_area;
+    }
+
+    public void setScrap_area(Double scrap_area) {
+        this.scrap_area = scrap_area;
+    }
+
+    public String getScrap_action() {
+        return scrap_action==null?"":scrap_action;
+    }
+
+    public void setScrap_action(String scrap_action) {
+        this.scrap_action = scrap_action;
+    }
+}

+ 24 - 0
src/main/java/com/uas/eis/service/EAPICommonService.java

@@ -0,0 +1,24 @@
+package com.uas.eis.service;
+
+import com.uas.eis.entity.ApiBill;
+import com.uas.eis.entity.ApiReq;
+import com.uas.eis.entity.Employee;
+import com.uas.eis.entity.MesApiLog;
+
+import java.util.List;
+import java.util.Map;
+
+public interface EAPICommonService {
+
+	Employee loginEmp(ApiReq apiReq);
+
+	MesApiLog log(ApiReq apiReq);
+
+	void logSucess(MesApiLog log, String msg);
+
+	void logFailure(MesApiLog log, String errorMsg);
+
+	void logBillCode(MesApiLog log, ApiBill apiBill);
+
+	List<Map<String, Object>> changeKeyToLowerCase(List<Map<String, Object>> list);
+}

+ 10 - 0
src/main/java/com/uas/eis/service/EAPIDataService.java

@@ -0,0 +1,10 @@
+package com.uas.eis.service;
+
+import com.uas.eis.entity.ApiReq;
+import com.uas.eis.sdk.entity.ApiResult;
+
+import java.util.Map;
+
+public interface EAPIDataService {
+    ApiResult<Map<String, Object>> dockingOrders(ApiReq apiReq);
+}

+ 81 - 0
src/main/java/com/uas/eis/service/Impl/EAPICommonServiceImpl.java

@@ -0,0 +1,81 @@
+package com.uas.eis.service.Impl;
+
+import com.uas.eis.dao.BaseDao;
+import com.uas.eis.entity.*;
+import com.uas.eis.exception.ApiSystemException;
+import com.uas.eis.sdk.entity.ApiResult;
+import com.uas.eis.service.EAPICommonService;
+import com.uas.eis.utils.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+
+@Service
+public class EAPICommonServiceImpl implements EAPICommonService {
+	@Autowired
+	private BaseDao baseDao;
+	@Override
+	public Employee loginEmp(ApiReq apiReq) {
+		try {
+			Employee employee = baseDao.getJdbcTemplate().queryForObject("select * from employee where em_code=?",
+					new BeanPropertyRowMapper<Employee>(Employee.class),apiReq.getAccessKey());
+			return employee;
+		}catch (Exception e){
+			e.printStackTrace();
+		}
+		return null;
+	}
+	@Override
+	public MesApiLog log(ApiReq apiReq) {
+		apiReq.setLogID(baseDao.getSeqId(apiReq.getfCode()+".MesApiLog_SEQ"));
+		MesApiLog log = new MesApiLog(apiReq);
+		try {
+			//保存记录
+			baseDao.execute(log.getLogSql());
+		}catch (Exception e){
+			e.printStackTrace();
+			logFailure(log, ErrorMessage.BUSDATA_ILLEGAL.getMessage());
+		}
+		return log;
+	}
+
+	@Override
+	public void logSucess(MesApiLog log,String msg) {
+		if(StringUtil.hasText(msg)){
+			msg = msg.replaceAll("'","");
+		}
+		baseDao.execute(log.getSuccessSql(msg));
+	}
+
+	@Override
+	public void logFailure(MesApiLog log, String errorMsg) {
+		baseDao.execute(log.getFailureSql(errorMsg.replaceAll("'","''")));
+	}
+
+	@Override
+	public void logBillCode(MesApiLog log, ApiBill apiBill) {
+		baseDao.execute(log.getLogBillCodeSql(apiBill));
+	}
+
+	@Override
+	public List<Map<String, Object>> changeKeyToLowerCase(List<Map<String, Object>> list) {
+		Map<String, Object> map = new HashMap<String, Object>();
+		List<Map<String, Object>> datas = new ArrayList<Map<String, Object>>();
+		Iterator<Map<String, Object>> iter = list.iterator();
+		map = null;
+		while (iter.hasNext()) {
+			Map<String, Object> map1 = new HashMap<String, Object>();
+			map = iter.next();
+			Iterator<String> it = map.keySet().iterator();
+			while (it.hasNext()) {
+				String key = it.next();
+				map1.put(key.toLowerCase(), map.get(key));
+			}
+			datas.add(map1);
+		}
+		return datas;
+	}
+}

+ 90 - 0
src/main/java/com/uas/eis/service/Impl/EAPIDataServiceImpl.java

@@ -0,0 +1,90 @@
+package com.uas.eis.service.Impl;
+
+import com.uas.eis.entity.ApiReq;
+import com.uas.eis.entity.ErrorMessage;
+import com.uas.eis.entity.MesApiLog;
+import com.uas.eis.sdk.entity.ApiResult;
+import com.uas.eis.sdk.resp.ApiResponse;
+import com.uas.eis.service.EAPICommonService;
+import com.uas.eis.service.EAPIDataService;
+import com.uas.eis.utils.NumberUtil;
+import com.uas.eis.utils.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+public class EAPIDataServiceImpl implements EAPIDataService {
+
+	@Autowired
+	private EAPICommonService eAPICommonService;
+
+	private MesApiLog mesApiLog;
+	@Autowired
+	private EAPIMesBusiness eAPIMesBusiness;
+	@Override
+	public ApiResult<Map<String, Object>> dockingOrders(ApiReq apiReq) {
+		ApiResult<Map<String,Object>> apiRes = new ApiResult<>();
+		mesApiLog = eAPICommonService.log(apiReq); //保存下载记录
+		if(StringUtil.hasText(mesApiLog.getMl_errmsg())){
+			apiRes = ApiResponse.failRsp(ErrorMessage.BUSDATA_ILLEGAL.getCode(),apiReq.getRequestId(),mesApiLog.getMl_errmsg());
+			return apiRes;
+		}
+		try {
+			/*Object object = null;
+			if(StringUtil.hasText(apiReq.getBusinessType().getBusissClass())){
+				object = ContextUtil.getBean(apiReq.getBusinessType().getBusissClass().substring(apiReq.getBusinessType().getBusissClass().lastIndexOf(".") + 1));
+				if(object == null){
+					object = this;
+				}
+			} else {
+				object = this;
+			}
+			//调用业务代码
+			Method method = object.getClass().getMethod(apiReq.getBusinessType().getBusissFunction(), new Class[] { ApiReq.class });
+			apiRes = (ApiResult<Map<String,Object>>) method.invoke(object,new Object[]{apiReq});
+			*/
+			String delBeanName = "";
+			if(StringUtil.hasText(apiReq.getBusinessType().getBusissClass())){
+				delBeanName = apiReq.getBusinessType().getBusissClass().substring(apiReq.getBusinessType().getBusissClass().lastIndexOf(".") + 1);
+			}
+			if("EAPIMesBusiness".equals(delBeanName)){
+				if("createScrap".equals(apiReq.getBusinessType().getBusissFunction())){
+					apiRes = eAPIMesBusiness.createScrap(apiReq);
+				}
+			}
+			if(apiRes.getCode() == null){
+				eAPICommonService.logFailure(mesApiLog,ErrorMessage.APITYPESET_NOTFOUND.getMessage()+": "+apiReq.getCode());
+				apiRes = ApiResponse.failRsp(ErrorMessage.APITYPESET_NOTFOUND.getCode(),apiReq.getRequestId(),ErrorMessage.APITYPESET_NOTFOUND.getMessage()+": "+apiReq.getCode());
+				return apiRes;
+			}
+			if(apiRes.getData()!=null&&!NumberUtil.isEmpty(apiRes.getData().get("size"))){
+				mesApiLog.setMl_delcount(Integer.valueOf(apiRes.getData().get("size").toString()));
+			}
+			if(!"1".equals(apiRes.getCode())){
+				eAPICommonService.logFailure(mesApiLog,apiRes.getMessage());
+				return apiRes;
+			}
+//		} catch (NoSuchMethodException e) {
+//			eAPICommonService.logFailure(mesApiLog,ErrorMessage.APITYPESET_NOTFOUND.getMessage()+": "+e.getMessage());
+//			apiRes = ApiResponse.failRsp(ErrorMessage.APITYPESET_NOTFOUND.getCode(),apiReq.getRequestId(),ErrorMessage.APITYPESET_NOTFOUND.getMessage()+": "+e.getMessage());
+//			return apiRes;
+		}catch (Exception e){
+			e.printStackTrace();
+			//记录处理失败 e.cause.toString()
+			String errorMsg = null;
+			if(e.getCause() != null){
+				errorMsg = e.getCause().getMessage();
+			}
+			if(errorMsg == null){
+				errorMsg = (StringUtil.hasText(e.getMessage())) ? e.getMessage() : ErrorMessage.BUSINESS_ILLEGAL.getMessage();
+			}
+			eAPICommonService.logFailure(mesApiLog,errorMsg);
+			apiRes = ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId(),errorMsg);
+			return apiRes;
+		}
+		eAPICommonService.logSucess(mesApiLog,apiRes.getMessage());//记录处理成功
+		return apiRes;
+	}
+}

+ 154 - 0
src/main/java/com/uas/eis/service/Impl/EAPIMesBusiness.java

@@ -0,0 +1,154 @@
+package com.uas.eis.service.Impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.uas.eis.dao.BaseDao;
+import com.uas.eis.dao.SqlRowList;
+import com.uas.eis.entity.*;
+import com.uas.eis.sdk.entity.ApiResult;
+import com.uas.eis.sdk.resp.ApiResponse;
+import com.uas.eis.service.EAPICommonService;
+import com.uas.eis.utils.*;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service("EAPIMesBusiness")
+public class EAPIMesBusiness {
+    @Autowired
+    private BaseDao baseDao;
+    @Autowired
+    private EAPICommonService eAPICommonService;
+
+    /**
+     * 报废记录
+     */
+//    @Transactional
+    public ApiResult<Map<String, Object>> createScrap(ApiReq apiReq){
+        ApiResult<Map<String, Object>> res = new ApiResult<>();
+        ApiData apiData = apiReq.getData();
+        if(!StringUtil.hasText(apiData.getFormStore())){
+            return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId(),"传入数据为空!");
+        }
+        res = checkData(apiReq);
+        if(!"1".equals(res.getCode())){
+            return res;
+        }
+        try {
+            res = delData(apiReq);
+        }catch (Exception e){
+            e.printStackTrace();
+            //记录处理失败 e.cause.toString()
+            String errorMsg = null;
+            if(e.getCause() != null){
+                errorMsg = e.getCause().getMessage();
+            }
+            if(errorMsg == null){
+                errorMsg = (StringUtil.hasText(e.getMessage())) ? e.getMessage() : ErrorMessage.BUSINESS_ILLEGAL.getMessage();
+            }
+            MesApiLog mesApiLog = new MesApiLog(apiReq);
+            eAPICommonService.logFailure(mesApiLog,errorMsg);
+            return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId(),errorMsg);
+        }
+        return res;
+    }
+    private ApiResult<Map<String, Object>> checkData(ApiReq apiReq){
+        if(apiReq.getData()==null){
+            return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId()
+                    ,"报废记录明细为空!");
+        }
+        if(apiReq.getData().getGridStore() == null){
+            return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId()
+                    ,"报废记录明细为空!");
+        }
+        List<ScrapRecord> scrapRecordList = new ArrayList<>();
+        try {
+            scrapRecordList = JSONArray.parseArray(apiReq.getData().getGridStore(),ScrapRecord.class);
+        }catch (Exception e){
+            e.printStackTrace();
+            return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId()
+                    ,"报废记录数据格式错误!");
+        }
+        if(CollectionUtil.isEmpty(scrapRecordList)){
+            return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId()
+                    ,"报废记录明细为空!");
+        }
+        List<Integer> object_rrns = new ArrayList<>();
+        for (ScrapRecord g: scrapRecordList) {
+            if(!StringUtil.hasText(g.getScrap_code())){
+                return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId(),"报废单号为空!");
+            }
+            if(NumberUtil.isEmpty(g.getObject_rrn())){
+                return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId(),"主键:object_rrn为0或者不存在!");
+            }
+            object_rrns.add(Integer.valueOf(g.getObject_rrn()));
+            if(!StringUtil.hasText(g.getLotno())){
+                return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId(),"生产批号为空!");
+            }
+            if(!StringUtil.hasText(g.getCreate_time())){
+                return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId(),"报废时间为空!");
+            }else {
+                try {
+                    Date d = DateUtil.parse(g.getCreate_time(), Constant.YMD_HMS);
+                }catch (Exception e){
+                    e.printStackTrace();
+                    return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId()
+                            ,"报废时间:"+g.getCreate_time()+"格式(YYYY-MM-DD HH24:MI:SS)不合法!");
+                }
+            }
+            if(!StringUtil.hasText(g.getProd_code())){
+                return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId(),"生产型号为空!");
+            }
+            if(!StringUtil.hasText(g.getStep_code())){
+                return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId(),"工序代码为空!");
+            }
+        }
+        List<Integer> object_rrnsL = object_rrns.stream().map(item -> item).distinct().collect(Collectors.toList());
+        if(object_rrnsL.size()!=object_rrns.size()){
+            return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId(),"object_rrn存在重复项!");
+        }
+        Employee emp = apiReq.getEmployee();
+        //object_rrns 校验对接记录是否存在
+        String ids = StringUtils.join(object_rrns.toArray(), ",");
+        SqlRowList checks = baseDao.queryForRowSet("select wm_concat(SOURCEID) object_rrns from (select SOURCEID from (select nvl(SOURCEID,0) SOURCEID from DOCKING_SCRAP_RECORD where SOURCE_ = '"+emp.getEm_name()+"' and nvl(SOURCEID,0) in ("+ids+") order by nvl(SOURCEID,0)) where rownum <= 10) ");
+        if(checks.next() && !"".equals(checks.getGeneralString("object_rrns"))){
+            return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId(),"object_rrn 已存在对接记录:"+checks.getGeneralString("object_rrns"));
+        }
+        return ApiResponse.successRsp("1", apiReq.getRequestId(), null);
+    }
+
+    @Transactional
+    ApiResult<Map<String, Object>> delData(ApiReq apiReq){
+        MesApiLog mesApiLog = new MesApiLog(apiReq);
+        Employee emp = apiReq.getEmployee();
+        Map<String, Object> resMap = new HashMap<>();
+        List<ScrapRecord> scrapRecordList = JSONArray.parseArray(apiReq.getData().getGridStore(),ScrapRecord.class);
+        List<String> sqls = new ArrayList<>();
+        int size = 0;
+        for (ScrapRecord g: scrapRecordList) {
+            if(!baseDao.checkIf("DOCKING_SCRAP_RECORD","SOURCE_ = '"+emp.getEm_name()+"' and nvl(SOURCEID,0) ="+g.getObject_rrn())){
+                sqls.addAll(g.getSqls(emp.getEm_name()));
+                size=size+1;
+            }
+        }
+        if(sqls.size() == 0){
+            return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId()
+                    ,"报废记录明细为空!");
+        }
+//        System.out.println("sqls:");
+//        System.out.println(sqls.toString());
+        baseDao.execute(sqls);
+        String scrap_code_min = scrapRecordList.get(0).getScrap_code();
+        int object_rrn_min = scrapRecordList.get(0).getObject_rrn();
+        ApiBill apiBill = new ApiBill();
+        apiBill.setId(object_rrn_min);
+        apiBill.setCode(scrap_code_min);
+        //记录业务单据编号
+        eAPICommonService.logBillCode(mesApiLog, apiBill);
+        resMap.put("size",size);
+        return ApiResponse.successRsp("1", apiReq.getRequestId(), resMap);
+    }
+}

+ 2 - 2
src/main/java/com/uas/eis/task/ProductMITask.java

@@ -82,7 +82,7 @@ public class ProductMITask {
     }
 
 
-    @Scheduled(cron = "0 0/5 * * * ?")
+//    @Scheduled(cron = "0 0/5 * * * ?")
     public void syncJXKXProductMIImg() {
         SqlRowList sl = baseDao.queryForRowSet("SELECT  * FROM  (SELECT PR_MIIMG,PR_CODE FROM N_KX_JXKX.PRODUCT WHERE PR_GROUPCODE='成品' AND NVL(PR_MISTATUS,' ')='已上网' AND PR_NEWFLAG=1 AND PR_MIIMG IS NULL ORDER BY PR_ID DESC) WHERE ROWNUM<=200");
         File file = null;
@@ -134,7 +134,7 @@ public class ProductMITask {
         baseDao.execute(sqls);
         logger.info("更新江西科翔型号结束");
     }
-    @Scheduled(cron = "0 0/5 * * * ?")
+//    @Scheduled(cron = "0 0/5 * * * ?")
     public void syncGZKXProductMIImg() {
         SqlRowList sl = baseDao.queryForRowSet("SELECT  * FROM  (SELECT PR_MIIMG,PR_CODE FROM GZKX.PRODUCT WHERE PR_GROUPCODE='成品' AND NVL(PR_MISTATUS,' ')='已上网' AND PR_NEWFLAG=1 AND PR_MIIMG IS NULL ORDER BY PR_ID DESC) WHERE ROWNUM<=200");
         File file = null;