Browse Source

【科翔ERPAPI接口】【收料单查询、保存、更新】

wuyx 1 tuần trước cách đây
mục cha
commit
b8b1e323b8
33 tập tin đã thay đổi với 1243 bổ sung632 xóa
  1. 18 9
      src/main/java/com/uas/eis/controller/ERPController.java
  2. 101 0
      src/main/java/com/uas/eis/core/enums/ActionPath.java
  3. 8 3
      src/main/java/com/uas/eis/core/enums/BusinessType.java
  4. 61 0
      src/main/java/com/uas/eis/core/enums/Operation.java
  5. 1 1
      src/main/java/com/uas/eis/core/support/ApiSignLoginInterceptor.java
  6. 148 22
      src/main/java/com/uas/eis/dao/BaseDao.java
  7. 39 0
      src/main/java/com/uas/eis/dao/GoodDao.java
  8. 22 0
      src/main/java/com/uas/eis/dao/MakeDao.java
  9. 27 0
      src/main/java/com/uas/eis/dao/PurchaseDao.java
  10. 13 0
      src/main/java/com/uas/eis/dao/Saveable.java
  11. 144 0
      src/main/java/com/uas/eis/dao/VerifyApplyDao.java
  12. 1 0
      src/main/java/com/uas/eis/entity/ErrorMessage.java
  13. 14 0
      src/main/java/com/uas/eis/entity/Make.java
  14. 9 0
      src/main/java/com/uas/eis/entity/MakeMaterial.java
  15. 123 0
      src/main/java/com/uas/eis/entity/MessageLog.java
  16. 43 345
      src/main/java/com/uas/eis/entity/VerifyApply.java
  17. 40 127
      src/main/java/com/uas/eis/entity/VerifyApplyDetail.java
  18. 15 4
      src/main/java/com/uas/eis/listener/UasMakeListener.java
  19. 1 1
      src/main/java/com/uas/eis/service/EAPIDataService.java
  20. 0 11
      src/main/java/com/uas/eis/service/GoodsService.java
  21. 37 0
      src/main/java/com/uas/eis/service/GoodsServiceImpl.java
  22. 3 2
      src/main/java/com/uas/eis/service/Impl/EAPIDataServiceImpl.java
  23. 0 53
      src/main/java/com/uas/eis/service/Impl/GoodsServiceImpl.java
  24. 18 0
      src/main/java/com/uas/eis/service/MakeServiceImpl.java
  25. 54 0
      src/main/java/com/uas/eis/service/VerifyApplyServiceImpl.java
  26. 0 22
      src/main/java/com/uas/eis/serviceImpl/Test.java
  27. 55 5
      src/main/java/com/uas/eis/utils/SqlUtil.java
  28. 2 2
      src/main/java/com/uas/eis/utils/TransferRepository.java
  29. 13 13
      src/main/resources/README/业务代码说明/型号列表查询.md
  30. 222 0
      src/main/resources/README/业务代码说明/型号资料查询.md
  31. 1 2
      src/main/resources/README/代码结构及数据结构说明.md
  32. 5 5
      src/main/resources/README/公共参数.md
  33. 5 5
      src/test/java/com/uas/eis/UasEisApplicationTests.java

+ 18 - 9
src/main/java/com/uas/eis/controller/ERPController.java

@@ -2,6 +2,7 @@ package com.uas.eis.controller;
 
 import com.uas.eis.core.config.SpObserver;
 import com.uas.eis.core.enums.BusinessType;
+import com.uas.eis.core.enums.ActionPath;
 import com.uas.eis.entity.ApiReq;
 import com.uas.eis.entity.Employee;
 import com.uas.eis.entity.ErrorMessage;
@@ -13,10 +14,7 @@ import com.uas.eis.utils.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.util.StringUtils;
-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 org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.Map;
@@ -33,12 +31,20 @@ public class ERPController {
     private String username;
 
     /**
-     * MES对接通用接口 -- 查询
+     * MES对接通用接口
+     * @param path 请求类型:queryList queryOrder createOrder updateOrder
+     * @param request
      * @param apiReq
      * @return
      */
-    @RequestMapping(value ="/queryList", method = RequestMethod.POST)
-    public ApiResult<Map<String,Object>> queryList(HttpServletRequest request, @RequestBody ApiReq apiReq){
+    @RequestMapping(value ="/{path}", method = RequestMethod.POST)
+    public ApiResult<Map<String,Object>> doApiAction(@PathVariable String path,HttpServletRequest request, @RequestBody ApiReq apiReq){
+        if(!ActionPath.exists(path)){
+            return ApiResponse.failRsp(ErrorMessage.APITYPESET_NOTFOUND.getCode(),request.getHeader("RequestId"),ErrorMessage.APITYPESET_NOTFOUND.getMessage());
+        }
+        if(apiReq.getData()==null){
+            return ApiResponse.failRsp(ErrorMessage.DATA_EMPTY.getCode(),request.getHeader("RequestId"),ErrorMessage.DATA_EMPTY.getMessage());
+        }
         apiReq.setAccessKey(request.getHeader("AccessKey"));
         apiReq.setTimestamp(request.getHeader("Timestamp"));
         apiReq.setRequestId(request.getHeader("RequestId"));
@@ -74,7 +80,11 @@ public class ERPController {
             if(!fromSp.equals(toSp)){
                 SpObserver.putSp(toSp);
             }
-            res = eapiDataService.queryList(apiReq);
+            System.out.println(path);
+            if ("queryList".equals(path) || "queryOrder".equals(path)) {
+                //不同业务类型执行不同通用逻辑
+            }
+            res = eapiDataService.doApiAction(apiReq);
         }catch (Exception e){
             e.printStackTrace();
             //记录处理失败 e.cause.toString()
@@ -93,5 +103,4 @@ public class ERPController {
         }
         return res;
     }
-
 }

+ 101 - 0
src/main/java/com/uas/eis/core/enums/ActionPath.java

@@ -0,0 +1,101 @@
+package com.uas.eis.core.enums;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+
+public enum ActionPath {
+    QUERY_LIST("queryList", "查询列表"),
+    QUERY_DETAIL("queryDetail", "查询详情"),
+    CREATE_ORDER("createData", "新增单据"),
+    UPDATE_ORDER("updateData", "更新单据"),
+    DELETE_ORDER("deleteItem", "删除单据");
+
+    private final String path;
+    private final String description;
+    private static final Map<String, ActionPath> PATH_MAP = new HashMap<>();
+
+    static {
+        for (ActionPath actionPath : ActionPath.values()) {
+            PATH_MAP.put(actionPath.path, actionPath);
+        }
+    }
+
+    ActionPath(String path, String description) {
+        this.path = path;
+        this.description = description;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    /**
+     * 校验字符串是否存在于枚举中
+     * @param value 待校验的字符串
+     * @return true-存在,false-不存在
+     */
+    public static boolean exists(String value) {
+        return value != null && PATH_MAP.containsKey(value);
+    }
+
+    /**
+     * 校验字符串是否存在于枚举中(忽略大小写)
+     */
+    public static boolean existsIgnoreCase(String value) {
+        if (value == null || value.isEmpty()) {
+            return false;
+        }
+        return PATH_MAP.keySet().stream()
+                .anyMatch(key -> key.equalsIgnoreCase(value));
+    }
+
+    /**
+     * 根据路径获取枚举值
+     * @param value 路径字符串
+     * @return Optional包装的枚举值
+     */
+    public static Optional<ActionPath> fromPath(String value) {
+        return Optional.ofNullable(PATH_MAP.get(value));
+    }
+
+    /**
+     * 根据路径获取枚举值,不存在则返回默认值
+     */
+    public static ActionPath fromPathOrDefault(String value, ActionPath defaultValue) {
+        return PATH_MAP.getOrDefault(value, defaultValue);
+    }
+
+    /**
+     * 校验并获取枚举值,如果不存在抛出异常
+     * @param value 路径字符串
+     * @return 匹配的枚举值
+     * @throws IllegalArgumentException 如果路径不存在
+     */
+    public static ActionPath fromPathOrThrow(String value) {
+        ActionPath actionPath = PATH_MAP.get(value);
+        if (actionPath == null) {
+            throw new IllegalArgumentException("无效的路径: " + value +
+                    ",可用的路径有: " + PATH_MAP.keySet());
+        }
+        return actionPath;
+    }
+
+    /**
+     * 获取所有路径列表
+     */
+    public static String[] getAllPaths() {
+        return PATH_MAP.keySet().toArray(new String[0]);
+    }
+
+    /**
+     * 获取所有枚举值
+     */
+    public static ActionPath[] getAllValues() {
+        return values();
+    }
+}

+ 8 - 3
src/main/java/com/uas/eis/core/enums/BusinessType.java

@@ -14,7 +14,12 @@ import java.util.stream.Collectors;
 public enum BusinessType {
 
     //查询物料资料
-    QUERYGOODSLIST("QueryGoodsList", "查询型号资料", "型号资料",  "queryGoods", "com.uas.eis.service.GoodsService", "queryGoodsList");
+    QUERY_GOODSLIST("QUERY_GOODSLIST","查询型号资料列表", "型号资料","Product!finish",  "com.uas.eis.service.GoodsServiceImpl", "queryGoodsList"),
+    QUERY_GOOD( "QUERY_GOOD","查询型号资料", "型号资料","Product!finish",  "com.uas.eis.service.GoodsServiceImpl", "queryGood"),
+    QUERY_VERIFYAPPLY( "QUERY_VERIFYAPPLY","查询收料单", "采购收料单","VerifyApply",  "com.uas.eis.service.VerifyApplyServiceImpl", "queryVerifyApply"),
+    CREATE_VERIFYAPPLY( "CREATE_VERIFYAPPLY","写入收料单", "采购收料单","VerifyApply",  "com.uas.eis.service.VerifyApplyServiceImpl", "createVerifyApply"),
+    UPDATE_VERIFYAPPLY( "UPDATE_VERIFYAPPLY","更新收料单", "采购收料单","VerifyApply",  "com.uas.eis.service.VerifyApplyServiceImpl", "updateVerifyApply")
+    ;
     private final String code;
     private final String name;//业务名称
     private final String orderType;//单据类型
@@ -31,7 +36,7 @@ public enum BusinessType {
         this.busissFunction = this.toString();
     }
 
-    private BusinessType(String name, String caller, String orderType, String busissClass, String busissFunction,String subApi) {
+    private BusinessType(String name, String caller, String orderType, String busissClass, String busissFunction) {
         this.code = this.toString();
         this.name = name;
         this.caller = caller;
@@ -40,7 +45,7 @@ public enum BusinessType {
         this.busissFunction = busissFunction;
     }
 
-    private BusinessType(String code, String name, String orderType, String caller, String busissClass, String busissFunction,String subApi) {
+    private BusinessType(String code, String name, String orderType, String caller, String busissClass, String busissFunction) {
         this.code = code;
         this.name = name;
         this.caller = caller;

+ 61 - 0
src/main/java/com/uas/eis/core/enums/Operation.java

@@ -0,0 +1,61 @@
+package com.uas.eis.core.enums;
+
+
+/**
+ * 系统常用操作
+ *
+ */
+public enum Operation {
+
+	/**
+	 * 新增
+	 */
+	SAVE("保存操作", "保存成功", "SAVE"),
+	/**
+	 * 修改
+	 */
+	UPDATE("更新操作", "更新成功", "UPDATE"),
+	/**
+	 * 删除
+	 */
+	DELETE("删除操作", "删除成功","DELETE");
+
+	private final String title;
+	private final String result;
+	private final String resultStatus;
+
+	private Operation(String title, String result) {
+		this.title = title;
+		this.result = result;
+		this.resultStatus = null;
+	}
+
+	private Operation(String title, String result, String resultStatus) {
+		this.title = title;
+		this.result = result;
+		this.resultStatus = resultStatus;
+	}
+	
+	/**
+	 * 操作描述
+	 * @return
+	 */
+	public String getTitle() {
+		return this.title;
+	}
+
+	/**
+	 * 操作结果
+	 */
+	public String getResult() {
+		return this.result;
+	}
+
+	/**
+	 * 结果状态
+	 * @return
+	 */
+	public String getResultStatus() {
+		return this.resultStatus;
+	}
+}

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

@@ -71,7 +71,7 @@ public class ApiSignLoginInterceptor extends HandlerInterceptorAdapter {
             apiResult.setMessage(ErrorMessage.TIMEOUT_ILLEGAL.getMessage());
             apiResult.setRequestId(requestId);
             System.out.println(System.currentTimeMillis());
-            throw new ApiSystemException(apiResult);
+//            throw new ApiSystemException(apiResult);
         }
         //判断工厂
         if(StringUtils.isEmpty(accessKey)) {

+ 148 - 22
src/main/java/com/uas/eis/dao/BaseDao.java

@@ -6,8 +6,10 @@ import java.sql.SQLException;
 import java.sql.Timestamp;
 import java.util.*;
 
+import com.uas.eis.core.enums.Operation;
 import com.uas.eis.entity.Configs;
 import com.uas.eis.entity.Employee;
+import com.uas.eis.entity.MessageLog;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.dao.DataAccessException;
 import org.springframework.dao.EmptyResultDataAccessException;
@@ -23,7 +25,7 @@ import com.uas.eis.utils.DateUtil;
 import net.sf.json.JSONObject;
 
 @Repository
-public class BaseDao{
+public class BaseDao {
 
 	static final String CREATE_SEQ = "CREATE SEQUENCE ?" + // 创建序列
 			" MINVALUE 1 MAXVALUE 99999999999 INCREMENT BY 1 START WITH 3000 CACHE 20 NOORDER NOCYCLE ";
@@ -669,15 +671,10 @@ public class BaseDao{
 	}
 
 	/**
-		* 获取编号序列
-	 *
-			 * @param myTable
-	 *            Caller
-	 * @param thisType
-	 *            2
-			 */
-	public synchronized String sGetMaxNumber(String myTable, int thisType) {
-		return callProcedure("Sp_GetMaxNumber", new Object[] { myTable, thisType });
+	 * * 获取编号序列
+	 * */
+	public synchronized String getOrderCode(String caller) {
+		return callProcedure("Sp_GetMaxNumber", new Object[] { caller, 2 });
 	}
 
 	/**
@@ -739,18 +736,6 @@ public class BaseDao{
 		return 0;
 	}
 
-	public String getBatchCode(String caller, String field) {
-		SqlRowList rs = queryForRowSet("select ds_inorout from DOCUMENTSETUP where ds_table=?", caller);
-		String finalCode = null;
-		if (rs.next()) {
-			String Code = rs.getObject("ds_inorout").toString();
-			if (Code.equals("IN") || Code.equals("-OUT")) {
-				finalCode = sGetMaxNumber("ProdIOut", 2);
-			}
-		}
-		return finalCode;
-	}
-
 	public boolean isProdIn(String caller){
 		boolean isProdIn=false;
 		SqlRowList rs = queryForRowSet("select ds_inorout from DOCUMENTSETUP where ds_table=?", caller);
@@ -864,4 +849,145 @@ public class BaseDao{
 				+ auditdateField + "=" + DateUtil.parseDateToOracleString(Constant.YMD_HMS, new Date()) + "," + auditorField + "='"+employee.getEm_name()+"'", condition);
 	}
 
+
+	/**
+	 * 记录操作
+	 *
+	 * @param operation
+	 *            操作类型
+	 * @param search
+	 *            用于查询的关键词
+	 * @return
+	 */
+	private MessageLog getMessageLog(Operation operation, String search) {
+		return new MessageLog("API",operation.getTitle(), operation.getResult(), search);
+	}
+
+	/**
+	 * 记录操作
+	 *
+	 * @param title
+	 *            操作描述
+	 * @param result
+	 *            操作结果
+	 * @param search
+	 *            用于查询的关键词
+	 * @return
+	 */
+	private MessageLog getMessageLog(String title, String result, String search) {
+		return new MessageLog("API", title, result, search);
+	}
+
+	/**
+	 * 记录操作
+	 *
+	 * @param operation
+	 *            操作类型
+	 * @param caller
+	 *            界面caller
+	 * @param searchKey
+	 *            用于查询的关键字段
+	 * @param keyValue
+	 *            关键字段的值
+	 * @return
+	 */
+	public MessageLog getMessageLog(Operation operation, String caller,
+									String searchKey, Object keyValue) {
+		return getMessageLog(operation, caller + "|" + searchKey + "="
+				+ keyValue);
+	}
+
+	/**
+	 * 记录操作
+	 *
+	 * @param title
+	 *            操作描述
+	 * @param result
+	 *            操作结果
+	 * @param caller
+	 *            界面caller
+	 * @param searchKey
+	 *            用于查询的关键字段
+	 * @param keyValue
+	 *            关键字段的值
+	 * @return
+	 */
+	public MessageLog getMessageLog(String title, String result,
+									String caller, String searchKey, Object keyValue) {
+		return getMessageLog(title, result, caller + "|" + searchKey + "="
+				+ keyValue);
+	}
+
+	/**
+	 * 记录新增操作
+	 *
+	 * @param caller
+	 *            界面caller
+	 *
+	 * @param searchKey
+	 *            用于查询的关键字段
+	 * @param keyValue
+	 *            关键字段的值
+	 */
+	public void saveLog(String caller, String searchKey, Object keyValue) {
+		getJdbcTemplate().execute(
+				getMessageLog(Operation.SAVE, caller, searchKey, keyValue)
+						.getSql());
+	}
+
+	/**
+	 * 记录修改操作
+	 *
+	 * @param caller
+	 *            界面caller
+	 *
+	 * @param searchKey
+	 *            用于查询的关键字段
+	 * @param keyValue
+	 *            关键字段的值
+	 */
+	public void updateLog(String caller, String searchKey, Object keyValue) {
+		getJdbcTemplate().execute(
+				getMessageLog(Operation.UPDATE, caller, searchKey, keyValue)
+						.getSql());
+	}
+
+
+	/**
+	 * 记录删除操作
+	 *
+	 * @param caller
+	 *            界面caller
+	 *
+	 * @param searchKey
+	 *            用于查询的关键字段
+	 * @param keyValue
+	 *            关键字段的值
+	 */
+	public void deleteLog(String caller, String searchKey, Object keyValue) {
+		getJdbcTemplate().execute(
+				getMessageLog(Operation.DELETE, caller, searchKey, keyValue)
+						.getSql());
+	}
+
+
+
+	/**
+	 * 记录其它操作
+	 *
+	 * @param title
+	 *            操作描述
+	 * @param afterinfo
+	 *            操作成功描述
+	 * @param caller
+	 *            界面caller
+	 * @param searchKey
+	 *            用于查询的关键字段
+	 * @param keyValue
+	 *            关键字段的值
+	 */
+	public void othersLog(String title, String afterinfo, String caller, String searchKey,
+					   Object keyValue) {
+		getJdbcTemplate().execute(getMessageLog(title,afterinfo, caller,searchKey, keyValue).getSql());
+	}
 }

+ 39 - 0
src/main/java/com/uas/eis/dao/GoodDao.java

@@ -0,0 +1,39 @@
+package com.uas.eis.dao;
+
+import com.uas.eis.entity.ApiQueryListReq;
+import com.uas.eis.entity.Goods;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
+
+@Repository
+public class GoodDao extends BaseDao {
+	public Goods getGood(Integer id) {
+		return getJdbcTemplate().queryForObject("select product.*,cu_name,cu_shortname from product left join customer on pr_Code = pr_custcode " +
+				" where nvl(pr_groupcode,' ')='成品' and nvl(pr_remark,' ') not like '共享抬头%' and pr_id = ?",new BeanPropertyRowMapper<Goods>(Goods.class),id);
+	}
+
+	public List<Goods> getGoodsList(ApiQueryListReq queryListReq) {
+		Integer page = queryListReq.getStartRow(); //起始行数(分页显示用) 0 默认从第一行记录
+		Integer pageSize = queryListReq.getLimit(); //最多行数 默认2000
+		page = (page == 0) ? 1 : page;
+		pageSize = (pageSize == 0) ? 2000 : pageSize;
+		int start = ((page - 1) * pageSize + 1);
+		int end = page * pageSize;
+		String cond_ = StringUtils.hasText(queryListReq.getFilterString()) ? queryListReq.getFilterString():" 1=1 ";
+		String orderBy = StringUtils.hasText(queryListReq.getOrderString()) ? queryListReq.getOrderString():" order by pr_id ";
+		StringBuffer querySql = new StringBuffer("select * from (select TT.*, ROWNUM rn from ( ");
+		querySql.append("select pr_custcode,cu_name,cu_shortname,pr_xbzbn_user,pr_xbzb,pr_style,pr_factorycode,pr_usetype,pr_usetypen,pr_usekind,pr_usekindn,pr_serial,pr_serialn,pr_nospec,pr_nospecn,pr_tsn_user,pr_ts_user,pr_layer,pr_code,pr_custprodspec,pr_custprodcode,pr_xhsx_user,pr_outerboxlength,pr_outerboxwidth,pr_length,pr_width,pr_combinetype_1,pr_combinetype_2,pr_unit,pr_cxkind,pr_zlly,pr_envreq,pr_bctp,pr_tg,pr_cpthick,pr_bottomcu,pr_wcdth_user,pr_tbthick,pr_mktmbno,pr_halogen,pr_id,pr_updatedate,pr_pacode,pr_ssttounit,pr_premakelevel,pr_ifcraft,pr_craftsize,pr_recordman,pr_pkid,pr_statuscode,pr_outver,pr_inver,pr_groupcode,pr_status,pr_isvalid,pr_sqr,pr_engremark,pr_docdate,pr_attach,pr_spec,pr_salearea,pr_unitarea,pr_ifab,pr_remark,pr_nodieceng,pr_nokailiao,pr_zkcolor,pr_holedeal,pr_zfcolor,pr_kthd,pr_goldthick,pr_nh_user,pr_sfht_user,pr_fjbj,pr_description,pr_x_type,pr_x_qty,pr_xbbl,pr_testmode,pr_bzfs,pr_extend3,pr_delreq,pr_vendcode,pr_llno,pr_tsyq,pr_samepdctno,pr_ifx,pr_testtype,pr_mmkb,pr_board_l,pr_board_w,pr_jhfs,pr_prodremark,pr_jhzc,pr_sy_user,pr_pzjb,pr_ifxbbdy,pr_aaa,pr_topnl,pr_pnltosst,pr_topcs,pr_utilization,pr_assignboard,pr_boardinfo,pr_miimg,pr_pnlalength,pr_pnlawidth,pr_flagsend_user,pr_flagplan_user,pr_manutype,pr_dhzc,pr_supplytype,pr_precision,pr_wccode,pr_wcname,pr_gdtqq,pr_plzl,pr_safetystock,pr_minstock,pr_planercode,pr_planner,pr_istracbefore,pr_whcode,pr_whname,pr_precheckdate,pr_recentchangedate,pr_recentpurcdate,pr_recentindate,pr_recentoutdate,pr_bzdays,pr_jkgsl,pr_finishoverrate,pr_purcoverrate,pr_mazeroqty,pr_maxstock,pr_qtyperplace,pr_acceptmethod,pr_qualmethod,pr_aql,pr_validdays,pr_ismsd,pr_msdlevel,pr_inspector,pr_ltqc,pr_stockcatecode,pr_stockcatename,pr_costcatecode,pr_costcatename,pr_incomecatecode,pr_incomecatename,pr_costlevel,pr_standtime,pr_materialcost,pr_humancost,pr_makecost,pr_salecost,pr_cost,pr_sourcecode_user,pr_pdmid_user" +
+				" from product left join customer on pr_Code = pr_custcode  " +
+				" where nvl(pr_groupcode,' ')='成品' and nvl(pr_remark,' ') not like '共享抬头%' and ");
+		querySql.append(cond_).append(orderBy);
+		querySql.append(" )TT where ROWNUM <= ");
+		querySql.append(end);
+		querySql.append(") where rn >= ");
+		querySql.append(start);
+		return query(querySql.toString(),Goods.class);
+	}
+
+}

+ 22 - 0
src/main/java/com/uas/eis/dao/MakeDao.java

@@ -0,0 +1,22 @@
+package com.uas.eis.dao;
+
+import com.uas.eis.entity.*;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.stereotype.Repository;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
+
+@Repository
+public class MakeDao extends BaseDao {
+	public Make getMake(Integer id) {
+		Make make = getJdbcTemplate().queryForObject("select * from make where ma_id = ?",new BeanPropertyRowMapper<Make>(Make.class),id);
+		List<MakeMaterial> details = getJdbcTemplate().query("select * from MakeMaterial where mm_maid= ?",new BeanPropertyRowMapper<MakeMaterial>(MakeMaterial.class),id);
+		if(make!=null){
+			make.setDetails(details);
+		}
+		return make;
+	}
+
+
+}

+ 27 - 0
src/main/java/com/uas/eis/dao/PurchaseDao.java

@@ -0,0 +1,27 @@
+package com.uas.eis.dao;
+
+import com.uas.eis.entity.ApiBill;
+import com.uas.eis.entity.VerifyApply;
+import com.uas.eis.entity.VerifyApplyDetail;
+import com.uas.eis.utils.SqlUtil;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+
+@Repository
+public class PurchaseDao extends BaseDao {
+	public VerifyApply updateYqty(Integer id) {
+		VerifyApply verifyApply = getJdbcTemplate().queryForObject("select * from VerifyApply where va_id = ?",new BeanPropertyRowMapper<VerifyApply>(VerifyApply.class),id);
+		List<VerifyApplyDetail> details = getJdbcTemplate().query("select * from VERIFYAPPLYDetail where vad_vaid= ?",new BeanPropertyRowMapper<VerifyApplyDetail>(VerifyApplyDetail.class),id);
+		if(verifyApply!=null){
+			verifyApply.setDetails(details);
+		}
+		return verifyApply;
+	}
+}

+ 13 - 0
src/main/java/com/uas/eis/dao/Saveable.java

@@ -0,0 +1,13 @@
+package com.uas.eis.dao;
+
+/**
+ * could be inserted into database
+ * @author yingp
+ * @date  2012-7-23 22:55:34
+ */
+public interface Saveable {
+
+	public String table();
+	//key field
+	public String[] keyColumns();
+}

+ 144 - 0
src/main/java/com/uas/eis/dao/VerifyApplyDao.java

@@ -0,0 +1,144 @@
+package com.uas.eis.dao;
+
+import com.uas.eis.entity.ApiBill;
+import com.uas.eis.entity.VerifyApply;
+import com.uas.eis.entity.VerifyApplyDetail;
+import com.uas.eis.utils.CollectionUtil;
+import com.uas.eis.utils.SqlUtil;
+import com.uas.eis.utils.StringUtil;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+
+@Repository
+public class VerifyApplyDao extends BaseDao {
+	public VerifyApply findById(Integer id) {
+		VerifyApply verifyApply = getJdbcTemplate().queryForObject("select * from VerifyApply where va_id = ?",new BeanPropertyRowMapper<VerifyApply>(VerifyApply.class),id);
+		List<VerifyApplyDetail> details = getJdbcTemplate().query("select * from VERIFYAPPLYDetail where vad_vaid= ?",new BeanPropertyRowMapper<VerifyApplyDetail>(VerifyApplyDetail.class),id);
+		if(verifyApply!=null){
+			verifyApply.setDetails(details);
+		}
+		return verifyApply;
+	}
+	@Transactional(rollbackFor = Exception.class)
+	public ApiBill insert(VerifyApply verifyApply) {
+		// 1. 参数校验
+		if (verifyApply == null) {
+			throw new IllegalArgumentException("实体不能为空");
+		}
+		//获取ID和编号
+		Integer id = getSeqId("VerifyApply_SEQ");
+		verifyApply.setVa_id(id);
+		if(StringUtils.isEmpty(verifyApply.getVa_code())){
+			verifyApply.setVa_code(getOrderCode("VerifyApply"));
+		}
+		// 2. 设置默认值
+		if (verifyApply.getVa_date() == null) {
+			verifyApply.setVa_date(new Date());
+		}
+		if (verifyApply.getVa_indate() == null) {
+			verifyApply.setVa_indate(new Date());
+		}
+		if (verifyApply.getVa_status() == null) {
+			verifyApply.setVa_status("在录入");
+		}
+		if (verifyApply.getVa_statuscode() == null) {
+			verifyApply.setVa_statuscode("ENTERING");
+		}
+		if (verifyApply.getVa_class() == null) {
+			verifyApply.setVa_class("采购收料单");
+		}
+		if (verifyApply.getVa_recorder() == null) {
+			verifyApply.setVa_recorder("API");
+		}
+		List<VerifyApplyDetail> detail = verifyApply.getDetails();
+		for (VerifyApplyDetail verifyApplyDetail : detail) {
+			verifyApplyDetail.setVad_code(verifyApply.getVa_code());
+			verifyApplyDetail.setVad_vaid(verifyApply.getVa_id());
+		}
+		List<String> sqls = new ArrayList<>();
+		sqls.add(SqlUtil.getInsertSqlByMap(SqlUtil.entityToMap(verifyApply), "VERIFYAPPLY"));
+		sqls.addAll(SqlUtil.getInsertOrUpdateSqlbyGridStore(SqlUtil.convertToObjectMapList(detail),"VERIFYAPPLYDETAIL","vad_id"));
+		execute(sqls);
+		return new ApiBill(verifyApply.getVa_id(),verifyApply.getVa_code());
+}
+
+	@Transactional
+	public void updateYqty(VerifyApply verifyApply){
+		List<VerifyApplyDetail> details = verifyApply.getDetails();
+		List<String> sqls = new ArrayList<>();
+		for (VerifyApplyDetail verifyApplyDetail : details) {
+			if(verifyApplyDetail.getVad_qty()!=null && verifyApplyDetail.getVad_qty() > 0
+				&& StringUtils.hasText(verifyApplyDetail.getVad_pucode())
+			){
+				sqls.add("update purchasedetail set pd_yqty = nvl(pd_yqty,0)+"+verifyApplyDetail.getVad_qty()
+						+" where pd_code = '"+verifyApplyDetail.getVad_pucode()+"' and pd_detno = "+verifyApplyDetail.getVad_pudetno());
+			}
+		}
+		if(sqls.size()>0){
+			execute(sqls);
+		}
+	}
+
+	public ApiBill update(VerifyApply vNew) {
+		List<String> sqls = new ArrayList<>();
+		StringBuffer sql = new StringBuffer();
+		//按照实际业务取对应字段更新
+		sql.append("update VerifyApply set Va_remark = '").append(StringUtil.nvl(vNew.getVa_remark(),"")).append("'")
+				.append(" where va_id = ").append(vNew.getVa_id());
+		sqls.add(sql.toString());
+
+		List<VerifyApplyDetail> details = vNew.getDetails();
+		if(!CollectionUtil.isEmpty(details)){
+			for (VerifyApplyDetail verifyApplyDetail : details){
+				if(verifyApplyDetail.getVad_detno()!=null){
+					StringBuffer dsql = new StringBuffer();
+					dsql.append("update verifyApplyDetail set ");
+					dsql.append("vad_pucode='").append(StringUtil.nvl(verifyApplyDetail.getVad_pucode(),"")).append("',");
+					dsql.append("vad_pudetno='").append(StringUtil.nvl(verifyApplyDetail.getVad_pudetno(),"")).append("',");
+					dsql.append("vad_qty='").append(StringUtil.nvl(verifyApplyDetail.getVad_qty(),"")).append("',");
+					dsql.append("vad_remark='").append(StringUtil.nvl(verifyApplyDetail.getVad_remark(),"")).append("'");
+					dsql.append(" where vad_vaid = "+vNew.getVa_id()+" and vad_detno = "+verifyApplyDetail.getVad_detno());
+					sqls.add(dsql.toString());
+				}
+			}
+		}
+		execute(sqls);
+		return new ApiBill(vNew.getVa_id(),vNew.getVa_code());
+	}
+
+	public void updateYqty(VerifyApply vOld, VerifyApply vNew) {
+		List<VerifyApplyDetail> detailsOld = vOld.getDetails();
+		List<VerifyApplyDetail> detailsNew = vNew.getDetails();
+		List<String> sqls = new ArrayList<>();
+		if(!CollectionUtil.isEmpty(detailsOld)){
+			for (VerifyApplyDetail verifyApplyDetail : detailsOld) {
+				if(verifyApplyDetail.getVad_qty()!=null && verifyApplyDetail.getVad_qty() > 0
+						&& StringUtils.hasText(verifyApplyDetail.getVad_pucode())
+				){
+					sqls.add("update purchasedetail set pd_yqty = nvl(pd_yqty,0)-"+verifyApplyDetail.getVad_qty()
+							+" where pd_code = '"+verifyApplyDetail.getVad_pucode()+"' and pd_detno = "+verifyApplyDetail.getVad_pudetno());
+				}
+			}
+		}
+		if(!CollectionUtil.isEmpty(detailsNew)){
+			for (VerifyApplyDetail verifyApplyDetail : detailsNew) {
+				if(verifyApplyDetail.getVad_qty()!=null && verifyApplyDetail.getVad_qty() > 0
+						&& StringUtils.hasText(verifyApplyDetail.getVad_pucode())
+				){
+					sqls.add("update purchasedetail set pd_yqty = nvl(pd_yqty,0)+"+verifyApplyDetail.getVad_qty()
+							+" where pd_code = '"+verifyApplyDetail.getVad_pucode()+"' and pd_detno = "+verifyApplyDetail.getVad_pudetno());
+				}
+			}
+		}
+		if(sqls.size()>0){
+			execute(sqls);
+		}
+	}
+}

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

@@ -19,6 +19,7 @@ public enum ErrorMessage {
     FAC_EMPTY("1009","工厂代码为空"),
     FAC_ILLEGAL("1010","工厂代码:%s 非法。"),
     FAC_DISABLED("1011","工厂:%s 尚未开通对接业务。"),
+    DATA_EMPTY("1012","请求内容为空"),
     BUSINESS_ILLEGAL("2001","业务异常");
 
     private String code;

+ 14 - 0
src/main/java/com/uas/eis/entity/Make.java

@@ -0,0 +1,14 @@
+package com.uas.eis.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class Make implements Serializable {
+    String ma_id;
+    String ma_code;
+    List<MakeMaterial> details;
+}

+ 9 - 0
src/main/java/com/uas/eis/entity/MakeMaterial.java

@@ -0,0 +1,9 @@
+package com.uas.eis.entity;
+
+import java.io.Serializable;
+
+public class MakeMaterial implements Serializable {
+    private Integer mm_id;
+    private String mm_code;
+    private String mm_maid;
+}

+ 123 - 0
src/main/java/com/uas/eis/entity/MessageLog.java

@@ -0,0 +1,123 @@
+package com.uas.eis.entity;
+
+import com.uas.eis.dao.Saveable;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class MessageLog implements Saveable, Serializable {
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	private int ml_id;
+	private Date ml_date;// 操作日期
+	private String ml_man;// 操作人
+	private String ml_content;// 内容
+	private String ml_result;// 结果
+	private String ml_search;// 用于事后查询单据操作记录时,用于检索的条件
+	private String code; // 对应单号
+	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_man() {
+		return ml_man;
+	}
+
+	public void setMl_man(String ml_man) {
+		this.ml_man = ml_man;
+	}
+
+	public String getMl_content() {
+		return ml_content;
+	}
+
+	public void setMl_content(String ml_content) {
+		this.ml_content = ml_content;
+	}
+
+	public String getMl_result() {
+		return ml_result;
+	}
+
+	public void setMl_result(String ml_result) {
+		this.ml_result = ml_result;
+	}
+
+	public String getMl_search() {
+		return ml_search;
+	}
+
+	public void setMl_search(String ml_search) {
+		this.ml_search = ml_search;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	@Override
+	public String table() {
+		return "messagelog";
+	}
+
+	@Override
+	public String[] keyColumns() {
+		return new String[] { "ml_id" };
+	}
+
+	public MessageLog() {
+
+	}
+
+	/**
+	 * @param ml_man
+	 *            操作人
+	 * @param ml_content
+	 *            内容
+	 * @param ml_result
+	 *            结果
+	 * @param ml_search
+	 *            用于事后查询单据操作记录时,用于检索的条件{caller|Key=keyValue}
+	 */
+	public MessageLog(String ml_man, String ml_content, String ml_result, String ml_search) {
+		this.ml_man = ml_man;
+		this.ml_content = ml_content;
+		this.ml_result = ml_result;
+		this.ml_search = ml_search;
+	}
+
+	public String getSql() {
+		return getInsertSql(ml_man, ml_content, ml_result, ml_search);
+	}
+
+	public static String getInsertSql(String man, String content, String result, String search) {
+		StringBuffer sql = new StringBuffer("INSERT INTO MessageLog(ml_date,ml_man,ml_content,ml_result,ml_search) VALUES(");
+		sql.append("to_date('");
+		sql.append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+		sql.append("','yyyy-MM-dd HH24:mi:ss'),'");
+		sql.append(man + "','");
+		sql.append(content + "','");
+		sql.append(result + "','");
+		sql.append(search + "')");
+		return sql.toString();
+	}
+}

+ 43 - 345
src/main/java/com/uas/eis/entity/VerifyApply.java

@@ -1,351 +1,49 @@
 package com.uas.eis.entity;
 
-import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
 
+import java.util.Date;
 import java.util.List;
-
+@Data
 public class VerifyApply {
-
-    @JSONField(name = "fInterID")
-    private int va_id;
-    @JSONField(name = "mesCode")
-    private String va_mescode;
-    @JSONField(name = "journalNo")
-    private String va_code;
-    @JSONField(name = "createdDateTime")
-    private String va_date;
-    @JSONField(name = "vendNo")
-    private String va_vendcode;
-    @JSONField(name = "vendName")
-    private String va_vendname;
-    @JSONField(name = "currency")
-    private String va_currency;
-    @JSONField(name = "rate")
-    private Float va_rate;
-    @JSONField(name = "paymentsCode")
-    private String va_paymentscode;
-    @JSONField(name = "payments")
-    private String va_payments;
-    @JSONField(name = "transport")
-    private String va_transport;
-    @JSONField(name = "sendCode")
-    private String va_sendcode;
-    @JSONField(name = "sellerCode")
-    private String va_emcode;
-    @JSONField(name = "sellerName")
-    private String va_emname;
-    @JSONField(name = "whNo")
-    private String va_whcode;
-    @JSONField(name = "whName")
-    private String va_whname;
-    @JSONField(name = "erpFDeptID")
-    private String va_departmentcode;
-    @JSONField(name = "erpFDept")
-    private String va_department;
-    @JSONField(name = "createdUser")
-    private String va_recorder;
-    @JSONField(name = "companyNo")
-    private String va_cop;
-    @JSONField(name = "remark")
-    private String va_remark;
-    @JSONField(name = "anCode")
-    private String va_ancode;
-    @JSONField(name = "SHFactory")
-    private String va_factory;
-    @JSONField(name = "version")
-    private String version;
-    @JSONField(name = "custNo")
-    private String va_custcode;
-    @JSONField(name = "custName")
-    private String va_custname;
-    @JSONField(name = "recType")
-    private String va_type;
-    @JSONField(name = "devNo")
-    private String va_pucode;
-    @JSONField(name = "fSourceInterId")
-    private int pu_id;
-    @JSONField(name = "fPOStyle")
-    private String va_status;
-    @JSONField(name = "posted")
-    private int posted;
-    @JSONField(name = "postedDateTime")
-    private String va_auditdate;
-    @JSONField(name = "postedBy")
-    private String va_auditman;
-
-    @JSONField(name = "detail")
-    private List<VerifyApplyDetail> detail;
-
-
-    public String getVa_type() {
-        return va_type;
-    }
-
-    public void setVa_type(String va_type) {
-        this.va_type = va_type;
-    }
-
-    public String getVa_status() {
-        return va_status;
-    }
-
-    public void setVa_status(String va_status) {
-        this.va_status = va_status;
-    }
-
-    public int getPosted() {
-        return posted;
-    }
-
-    public void setPosted(int posted) {
-        this.posted = posted;
-    }
-
-    public String getVa_auditdate() {
-        return va_auditdate;
-    }
-
-    public void setVa_auditdate(String va_auditdate) {
-        this.va_auditdate = va_auditdate;
-    }
-
-    public String getVa_auditman() {
-        return va_auditman;
-    }
-
-    public void setVa_auditman(String va_auditman) {
-        this.va_auditman = va_auditman;
-    }
-
-    public String getVersion() {
-        return version;
-    }
-
-    public void setVersion(String version) {
-        this.version = version;
-    }
-
-    public String getVa_custcode() {
-        return va_custcode;
-    }
-
-    public void setVa_custcode(String va_custcode) {
-        this.va_custcode = va_custcode;
-    }
-
-    public String getVa_custname() {
-        return va_custname;
-    }
-
-    public void setVa_custname(String va_custname) {
-        this.va_custname = va_custname;
-    }
-
-    public String getVa_pucode() {
-        return va_pucode;
-    }
-
-    public void setVa_pucode(String va_pucode) {
-        this.va_pucode = va_pucode;
-    }
-
-    public int getPu_id() {
-        return pu_id;
-    }
-
-    public void setPu_id(int pu_id) {
-        this.pu_id = pu_id;
-    }
-
-    public int getVa_id() {
-        return va_id;
-    }
-
-    public void setVa_id(int va_id) {
-        this.va_id = va_id;
-    }
-
-    public String getVa_mescode() {
-        return va_mescode;
-    }
-
-    public void setVa_mescode(String va_mescode) {
-        this.va_mescode = va_mescode;
-    }
-
-    public String getVa_code() {
-        return va_code;
-    }
-
-    public void setVa_code(String va_code) {
-        this.va_code = va_code;
-    }
-
-    public String getVa_date() {
-        return va_date;
-    }
-
-    public void setVa_date(String va_date) {
-        this.va_date = va_date;
-    }
-
-    public String getVa_vendcode() {
-        return va_vendcode;
-    }
-
-    public void setVa_vendcode(String va_vendcode) {
-        this.va_vendcode = va_vendcode;
-    }
-
-    public String getVa_vendname() {
-        return va_vendname;
-    }
-
-    public void setVa_vendname(String va_vendname) {
-        this.va_vendname = va_vendname;
-    }
-
-    public String getVa_currency() {
-        return va_currency;
-    }
-
-    public void setVa_currency(String va_currency) {
-        this.va_currency = va_currency;
-    }
-
-    public Float getVa_rate() {
-        return va_rate;
-    }
-
-    public void setVa_rate(Float va_rate) {
-        this.va_rate = va_rate;
-    }
-
-    public String getVa_paymentscode() {
-        return va_paymentscode;
-    }
-
-    public void setVa_paymentscode(String va_paymentscode) {
-        this.va_paymentscode = va_paymentscode;
-    }
-
-    public String getVa_payments() {
-        return va_payments;
-    }
-
-    public void setVa_payments(String va_payments) {
-        this.va_payments = va_payments;
-    }
-
-    public String getVa_transport() {
-        return va_transport;
-    }
-
-    public void setVa_transport(String va_transport) {
-        this.va_transport = va_transport;
-    }
-
-    public String getVa_sendcode() {
-        return va_sendcode;
-    }
-
-    public void setVa_sendcode(String va_sendcode) {
-        this.va_sendcode = va_sendcode;
-    }
-
-    public String getVa_emcode() {
-        return va_emcode;
-    }
-
-    public void setVa_emcode(String va_emcode) {
-        this.va_emcode = va_emcode;
-    }
-
-    public String getVa_emname() {
-        return va_emname;
-    }
-
-    public void setVa_emname(String va_emname) {
-        this.va_emname = va_emname;
-    }
-
-    public String getVa_whcode() {
-        return va_whcode;
-    }
-
-    public void setVa_whcode(String va_whcode) {
-        this.va_whcode = va_whcode;
-    }
-
-    public String getVa_whname() {
-        return va_whname;
-    }
-
-    public void setVa_whname(String va_whname) {
-        this.va_whname = va_whname;
-    }
-
-    public String getVa_departmentcode() {
-        return va_departmentcode;
-    }
-
-    public void setVa_departmentcode(String va_departmentcode) {
-        this.va_departmentcode = va_departmentcode;
-    }
-
-    public String getVa_department() {
-        return va_department;
-    }
-
-    public void setVa_department(String va_department) {
-        this.va_department = va_department;
-    }
-
-    public String getVa_recorder() {
-        return va_recorder;
-    }
-
-    public void setVa_recorder(String va_recorder) {
-        this.va_recorder = va_recorder;
-    }
-
-    public String getVa_cop() {
-        return va_cop;
-    }
-
-    public void setVa_cop(String va_cop) {
-        this.va_cop = va_cop;
-    }
-
-    public String getVa_remark() {
-        return va_remark;
-    }
-
-    public void setVa_remark(String va_remark) {
-        this.va_remark = va_remark;
-    }
-
-    public String getVa_ancode() {
-        return va_ancode;
-    }
-
-    public void setVa_ancode(String va_ancode) {
-        this.va_ancode = va_ancode;
-    }
-
-    public String getVa_factory() {
-        return va_factory;
-    }
-
-    public void setVa_factory(String va_factory) {
-        this.va_factory = va_factory;
-    }
-
-    public List<VerifyApplyDetail> getDetail() {
-        return detail;
-    }
-
-    public void setDetail(List<VerifyApplyDetail> detail) {
-        this.detail = detail;
-    }
+    Integer va_id; //id
+    String va_code; //收料单号
+    String va_class; //单据类型
+    Date va_date; //收料日期
+    String va_status; //单据状态
+    String va_vendcode; //供应商
+    String va_vendname; //供应商名
+    String va_receivecode; //应付供应商
+    String va_receivename; //应付供应商
+    String va_currency; //币别
+    Integer va_rate; //汇率
+    String va_paymentscode; //付款方式
+    String va_payments; //付款方式
+    String va_transport; //运输方式
+    String va_sendcode; //送货单号
+    String va_emcode; //采购员
+    String va_emname; //采购员名称
+    String va_cggdy; //采购开发
+    String va_whcode; //仓库
+    String va_whname; //仓库名
+    String va_whmancode; //仓管员
+    String va_whman; //仓管员
+    String va_departmentcode; //部门
+    String va_department; //部门编号
+    String va_paydate; //付款日期
+    Double va_total; //金额
+    String va_billcode; //发票号
+    String va_recorder; //录入人
+    Date va_indate; //录入时间
+    String va_cop; //所属公司
+    String va_turnstatus; //入库状态
+    String va_remark; //备注
+    String va_turnstatuscode; //入库状态码
+    String va_statuscode; //状态码
+
+    Integer va_whmanid; //仓管员id
+    String va_ancode; //收料通知单号
+    String va_factory; //收货工厂
+
+    private List<VerifyApplyDetail> details;
 }

+ 40 - 127
src/main/java/com/uas/eis/entity/VerifyApplyDetail.java

@@ -1,132 +1,45 @@
 package com.uas.eis.entity;
 
-import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
 
-/**
- * @author koul
- * @email koul@usoftchina.com
- * @date 2021-12-08 9:54
- */
-public class VerifyApplyDetail {
-
-    @JSONField(name = "journalNo")
-    private String vad_code;
-    @JSONField(name = "itemNo")
-    private String vad_prodcode;
-    @JSONField(name = "itemName")
-    private String pr_detail;
-    @JSONField(name = "description")
-    private String pr_spec;
-    @JSONField(name = "unitNo")
-    private String pr_unit;
-    @JSONField(name = "qty")
-    private Float vad_qty;
-    @JSONField(name = "createdUser")
-    private String va_recorder;
-    @JSONField(name = "createdDateTime")
-    private String va_date;
-    @JSONField(name = "flag")
-    private int flag;
-    @JSONField(name = "custNo")
-    private String pr_kh_user;
-    @JSONField(name="custName")
-    private String cu_name;
-    @JSONField(name="purNo")
-    private String vad_salecode;
-
-    public String getVad_salecode() {
-        return vad_salecode;
-    }
-
-    public void setVad_salecode(String vad_salecode) {
-        this.vad_salecode = vad_salecode;
-    }
-
-    public String getVa_recorder() {
-        return va_recorder;
-    }
-
-    public void setVa_recorder(String va_recorder) {
-        this.va_recorder = va_recorder;
-    }
-
-    public String getVa_date() {
-        return va_date;
-    }
-
-    public void setVa_date(String va_date) {
-        this.va_date = va_date;
-    }
-
-    public int getFlag() {
-        return flag;
-    }
-
-    public void setFlag(int flag) {
-        this.flag = flag;
-    }
-
-    public String getPr_kh_user() {
-        return pr_kh_user;
-    }
-
-    public void setPr_kh_user(String pr_kh_user) {
-        this.pr_kh_user = pr_kh_user;
-    }
-
-    public String getCu_name() {
-        return cu_name;
-    }
+import java.util.Date;
 
-    public void setCu_name(String cu_name) {
-        this.cu_name = cu_name;
-    }
-
-    public String getVad_code() {
-        return vad_code;
-    }
-
-    public void setVad_code(String vad_code) {
-        this.vad_code = vad_code;
-    }
-
-    public String getVad_prodcode() {
-        return vad_prodcode;
-    }
-
-    public void setVad_prodcode(String vad_prodcode) {
-        this.vad_prodcode = vad_prodcode;
-    }
-
-    public String getPr_detail() {
-        return pr_detail;
-    }
-
-    public void setPr_detail(String pr_detail) {
-        this.pr_detail = pr_detail;
-    }
-
-    public String getPr_spec() {
-        return pr_spec;
-    }
-
-    public void setPr_spec(String pr_spec) {
-        this.pr_spec = pr_spec;
-    }
-
-    public String getPr_unit() {
-        return pr_unit;
-    }
-
-    public void setPr_unit(String pr_unit) {
-        this.pr_unit = pr_unit;
-    }
-
-    public Float getVad_qty() {
-        return vad_qty;
-    }
-
-    public void setVad_qty(Float vad_qty) {
-        this.vad_qty = vad_qty;
-    }
+@Data
+public class VerifyApplyDetail {
+    Integer vad_id; //ID
+    Integer vad_vaid; //通知单id
+    Integer vad_detno; //序号
+    String vad_code;
+    String vad_pucode; //采购单号
+    Integer vad_pudetno; //采购序号
+    String vad_prodcode; //物料编号
+    Double vad_qty; //数量
+    Double vad_purcqty; //采购单位收料数量
+    Date vad_madedate; //生产日期
+    String vad_vendbatch; //供应商批次
+    String vad_location; //仓库位置
+    String vad_whcode; //仓库编号
+    String vad_whname; //仓库名称
+    String vad_batchcode; //批号
+    Double vad_orderprice; //采购单价
+    Double vad_ordertotal; //采购金额(原币)
+    Double vad_plancode; //采购金额(本币)
+    String vad_barcode; //差异数
+    Double vad_taxrate; //税率%
+    Double vad_taxtotal; //税额
+    Double vad_price; //成本单价
+    Double vad_total; //成本金额
+    Double vad_gsxs_user; //关税系数
+    Double vad_customprice; //报关价
+    String vad_sellercode; //业务员编号
+    String vad_seller; //业务员姓名
+    String vad_description; //描述
+    String vad_remark; //备注
+    Double vad_yqty; //已转数量
+    String vad_custcode; //客户编号
+    String vad_custname; //客户名称
+    String vad_salecode; //订单编号
+    String vad_remark2; //备注2
+    String vad_remark3; //备注3
+    Integer vad_andid; //收料通知单明细ID
 }

+ 15 - 4
src/main/java/com/uas/eis/listener/UasMakeListener.java

@@ -1,20 +1,31 @@
 package com.uas.eis.listener;
 
 import com.uas.eis.aspect.UasEventListener;
+import com.uas.eis.core.config.SpObserver;
 import com.uas.eis.dto.UasEvent;
+import com.uas.eis.entity.Make;
+import com.uas.eis.service.MakeServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-;
 
 @Component
 public class UasMakeListener {
-//    @Autowired
-//    private MakeService makeService;
+    @Autowired
+    private MakeServiceImpl makeService;
     /**
      * 工单取消投料
      */
     @UasEventListener(caller = "Make!Base", operation = "CANCELMAKE")
     public void onMakeCancel(UasEvent event) {
-//        Make make = makeService.findById(Integer.parseInt(event.getKey().toString()));
+        String toSp = event.getMaster();//触发账套
+        String fromSp = SpObserver.getSp();//默认账套
+        if(!fromSp.equals(toSp)){
+            SpObserver.putSp(toSp);//切换账套
+        }
+        System.out.println("Make!Base");
+        Make make = makeService.findById(Integer.parseInt(event.getKey().toString()));
+        System.out.println(make.toString());
+        SpObserver.putSp(fromSp);//切换回默认账套
     }
 }

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

@@ -6,5 +6,5 @@ import com.uas.eis.sdk.entity.ApiResult;
 import java.util.Map;
 
 public interface EAPIDataService {
-    ApiResult<Map<String, Object>> queryList(ApiReq apiReq);
+    ApiResult<Map<String, Object>> doApiAction(ApiReq apiReq);
 }

+ 0 - 11
src/main/java/com/uas/eis/service/GoodsService.java

@@ -1,11 +0,0 @@
-package com.uas.eis.service;
-
-import com.uas.eis.entity.ApiReq;
-import com.uas.eis.entity.Goods;
-import com.uas.eis.sdk.entity.ApiResult;
-
-import java.util.List;
-
-public interface GoodsService {
-    ApiResult<List<Goods>> queryGoodsList(ApiReq apiReq);
-}

+ 37 - 0
src/main/java/com/uas/eis/service/GoodsServiceImpl.java

@@ -0,0 +1,37 @@
+package com.uas.eis.service;
+
+import com.uas.eis.dao.BaseDao;
+import com.uas.eis.dao.GoodDao;
+import com.uas.eis.entity.*;
+import com.uas.eis.sdk.entity.ApiResult;
+import com.uas.eis.sdk.resp.ApiResponse;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
+
+@Service("GoodsServiceImpl")
+public class GoodsServiceImpl {
+
+    @Autowired
+    private GoodDao goodDao;
+    //查询物料资料列表
+    public ApiResult<List<Goods>> queryGoodsList(ApiReq apiReq){
+        ObjectMapper objectMapper = new ObjectMapper();
+        ApiQueryListReq qListReq  = objectMapper.convertValue(apiReq.getData(), ApiQueryListReq.class);
+        if(qListReq == null){
+            return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId(),"请求参数为空!");
+        }
+        return ApiResponse.successRsp("1", "查询成功",apiReq.getRequestId(), goodDao.getGoodsList(qListReq));
+    }
+    //查询物料资料
+    public ApiResult<Goods> queryGood(ApiReq apiReq){
+        Integer id = Integer.valueOf(String.valueOf(apiReq.getData()));
+        return ApiResponse.successRsp("1", "查询成功",apiReq.getRequestId(), goodDao.getGood(id));
+    }
+
+
+}

+ 3 - 2
src/main/java/com/uas/eis/service/Impl/EAPIDataServiceImpl.java

@@ -25,7 +25,7 @@ public class EAPIDataServiceImpl implements EAPIDataService {
 	private ApiLog apiLog;
 
 	@Override
-	public ApiResult<Map<String, Object>> queryList(ApiReq apiReq) {
+	public ApiResult<Map<String, Object>> doApiAction(ApiReq apiReq) {
 		ApiResult<Map<String,Object>> apiRes = new ApiResult<>();
 		apiLog = eAPICommonService.log(apiReq); //保存对接记录
 		if(StringUtil.hasText(apiLog.getL_errmsg())){
@@ -36,7 +36,8 @@ public class EAPIDataServiceImpl implements EAPIDataService {
 			BusinessType bus = apiReq.getBusinessType();
 			Object object = null;
 			if(StringUtil.hasText(bus.getBusissClass())){
-				object = ContextUtil.getBean(apiReq.getBusinessType().getBusissClass().substring(apiReq.getBusinessType().getBusissClass().lastIndexOf(".") + 1));
+				String className = bus.getBusissClass().substring(bus.getBusissClass().lastIndexOf(".") + 1);
+				object = ContextUtil.getBean(className);
 				if(object == null){
 					object = this;
 				}

+ 0 - 53
src/main/java/com/uas/eis/service/Impl/GoodsServiceImpl.java

@@ -1,53 +0,0 @@
-package com.uas.eis.service.Impl;
-
-import com.uas.eis.dao.BaseDao;
-import com.uas.eis.entity.ApiQueryListReq;
-import com.uas.eis.entity.ApiReq;
-import com.uas.eis.entity.ErrorMessage;
-import com.uas.eis.entity.Goods;
-import com.uas.eis.sdk.entity.ApiResult;
-import com.uas.eis.sdk.resp.ApiResponse;
-import com.uas.eis.service.GoodsService;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.util.StringUtils;
-
-import java.util.List;
-
-@Service
-public class GoodsServiceImpl implements GoodsService {
-
-    @Autowired
-    private BaseDao baseDao;
-    //查询物料资料列表
-    public ApiResult<List<Goods>> queryGoodsList(ApiReq apiReq){
-        ObjectMapper objectMapper = new ObjectMapper();
-        ApiQueryListReq qListReq  = objectMapper.convertValue(apiReq.getData(), ApiQueryListReq.class);
-        if(qListReq == null){
-            return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId(),"请求参数为空!");
-        }
-        return ApiResponse.successRsp("1", "查询成功",apiReq.getRequestId(), getGoodsList(qListReq));
-    }
-
-    public List<Goods> getGoodsList(ApiQueryListReq queryListReq) {
-        Integer page = queryListReq.getStartRow(); //起始行数(分页显示用) 0 默认从第一行记录
-        Integer pageSize = queryListReq.getLimit(); //最多行数 默认2000
-        page = (page == 0) ? 1 : page;
-        pageSize = (pageSize == 0) ? 2000 : pageSize;
-        int start = ((page - 1) * pageSize + 1);
-        int end = page * pageSize;
-        String cond_ = StringUtils.hasText(queryListReq.getFilterString()) ? queryListReq.getFilterString():" 1=1 ";
-        String orderBy = StringUtils.hasText(queryListReq.getOrderString()) ? queryListReq.getOrderString():" order by pr_id ";
-        StringBuffer querySql = new StringBuffer("select * from (select TT.*, ROWNUM rn from ( ");
-        querySql.append("select pr_custcode,cu_name,cu_shortname,pr_xbzbn_user,pr_xbzb,pr_style,pr_factorycode,pr_usetype,pr_usetypen,pr_usekind,pr_usekindn,pr_serial,pr_serialn,pr_nospec,pr_nospecn,pr_tsn_user,pr_ts_user,pr_layer,pr_code,pr_custprodspec,pr_custprodcode,pr_xhsx_user,pr_outerboxlength,pr_outerboxwidth,pr_length,pr_width,pr_combinetype_1,pr_combinetype_2,pr_unit,pr_cxkind,pr_zlly,pr_envreq,pr_bctp,pr_tg,pr_cpthick,pr_bottomcu,pr_wcdth_user,pr_tbthick,pr_mktmbno,pr_halogen,pr_id,pr_updatedate,pr_pacode,pr_ssttounit,pr_premakelevel,pr_ifcraft,pr_craftsize,pr_recordman,pr_pkid,pr_statuscode,pr_outver,pr_inver,pr_groupcode,pr_status,pr_isvalid,pr_sqr,pr_engremark,pr_docdate,pr_attach,pr_spec,pr_salearea,pr_unitarea,pr_ifab,pr_remark,pr_nodieceng,pr_nokailiao,pr_zkcolor,pr_holedeal,pr_zfcolor,pr_kthd,pr_goldthick,pr_nh_user,pr_sfht_user,pr_fjbj,pr_description,pr_x_type,pr_x_qty,pr_xbbl,pr_testmode,pr_bzfs,pr_extend3,pr_delreq,pr_vendcode,pr_llno,pr_tsyq,pr_samepdctno,pr_ifx,pr_testtype,pr_mmkb,pr_board_l,pr_board_w,pr_jhfs,pr_prodremark,pr_jhzc,pr_sy_user,pr_pzjb,pr_ifxbbdy,pr_aaa,pr_topnl,pr_pnltosst,pr_topcs,pr_utilization,pr_assignboard,pr_boardinfo,pr_miimg,pr_pnlalength,pr_pnlawidth,pr_flagsend_user,pr_flagplan_user,pr_manutype,pr_dhzc,pr_supplytype,pr_precision,pr_wccode,pr_wcname,pr_gdtqq,pr_plzl,pr_safetystock,pr_minstock,pr_planercode,pr_planner,pr_istracbefore,pr_whcode,pr_whname,pr_precheckdate,pr_recentchangedate,pr_recentpurcdate,pr_recentindate,pr_recentoutdate,pr_bzdays,pr_jkgsl,pr_finishoverrate,pr_purcoverrate,pr_mazeroqty,pr_maxstock,pr_qtyperplace,pr_acceptmethod,pr_qualmethod,pr_aql,pr_validdays,pr_ismsd,pr_msdlevel,pr_inspector,pr_ltqc,pr_stockcatecode,pr_stockcatename,pr_costcatecode,pr_costcatename,pr_incomecatecode,pr_incomecatename,pr_costlevel,pr_standtime,pr_materialcost,pr_humancost,pr_makecost,pr_salecost,pr_cost,pr_sourcecode_user,pr_pdmid_user" +
-                " from product left join customer on pr_Code = pr_custcode  " +
-                " where nvl(pr_groupcode,' ')='成品' and nvl(pr_remark,' ') not like '共享抬头%' and ");
-        querySql.append(cond_).append(orderBy);
-        querySql.append(" )TT where ROWNUM <= ");
-        querySql.append(end);
-        querySql.append(") where rn >= ");
-        querySql.append(start);
-        return baseDao.query(querySql.toString(),Goods.class);
-    }
-}

+ 18 - 0
src/main/java/com/uas/eis/service/MakeServiceImpl.java

@@ -0,0 +1,18 @@
+package com.uas.eis.service;
+
+import com.uas.eis.dao.MakeDao;
+import com.uas.eis.entity.Make;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+@Service("MakeServiceImpl")
+public class MakeServiceImpl {
+
+    @Autowired
+    private MakeDao makeDao;
+
+    public Make findById(Integer id){
+        return makeDao.getMake(id);
+    }
+}

+ 54 - 0
src/main/java/com/uas/eis/service/VerifyApplyServiceImpl.java

@@ -0,0 +1,54 @@
+package com.uas.eis.service;
+
+import com.uas.eis.dao.BaseDao;
+import com.uas.eis.dao.VerifyApplyDao;
+import com.uas.eis.entity.*;
+import com.uas.eis.sdk.entity.ApiResult;
+import com.uas.eis.sdk.resp.ApiResponse;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service("VerifyApplyServiceImpl")
+public class VerifyApplyServiceImpl {
+    @Autowired
+    private VerifyApplyDao verifyApplyDao;
+    //查询收料单
+    public ApiResult<VerifyApply> queryVerifyApply(ApiReq apiReq){
+        Integer id = Integer.valueOf(String.valueOf(apiReq.getData()));
+        return ApiResponse.successRsp("1", "查询成功",apiReq.getRequestId(), verifyApplyDao.findById(id));
+    }
+
+    public ApiResult<ApiBill> createVerifyApply(ApiReq apiReq){
+        ObjectMapper objectMapper = new ObjectMapper();
+        VerifyApply verifyApply  = objectMapper.convertValue(apiReq.getData(), VerifyApply.class);
+        if(verifyApply == null){
+            return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId(),"请求参数为空!");
+        }
+        //业务数据校验
+        //实现收料单写入
+        ApiBill apiBill = verifyApplyDao.insert(verifyApply);
+        //更新关联采购单已转数
+        verifyApplyDao.updateYqty(verifyApply);
+        //记录操作日志
+        verifyApplyDao.saveLog(apiReq.getBusinessType().getCaller(), "va_id", apiBill.getId());
+        return ApiResponse.successRsp("1", "创建成功",apiReq.getRequestId(), apiBill);
+    }
+
+    public ApiResult<ApiBill> updateVerifyApply(ApiReq apiReq){
+        ObjectMapper objectMapper = new ObjectMapper();
+        VerifyApply vNew  = objectMapper.convertValue(apiReq.getData(), VerifyApply.class);
+        if(vNew == null){
+            return ApiResponse.failRsp(ErrorMessage.BUSINESS_ILLEGAL.getCode(),apiReq.getRequestId(),"请求参数为空!");
+        }
+        //业务数据校验
+        //实现收料单写入
+        VerifyApply vOld = verifyApplyDao.findById(vNew.getVa_id());
+        ApiBill apiBill = verifyApplyDao.update(vNew);
+        //更新关联采购单已转数
+        verifyApplyDao.updateYqty(vOld,vNew);
+        //记录操作日志
+        verifyApplyDao.updateLog(apiReq.getBusinessType().getCaller(), "va_id", apiBill.getId());
+        return ApiResponse.successRsp("1", "更新成功",apiReq.getRequestId(), apiBill);
+    }
+}

+ 0 - 22
src/main/java/com/uas/eis/serviceImpl/Test.java

@@ -1,22 +0,0 @@
-package com.uas.eis.serviceImpl;
-
-import java.io.*;
-
-/**
- * @author: zhouy
- * @date: 2021/11/26 16:10
- * @desc:
- */
-public class Test {
-    public static void main(String[] args) throws Exception {
-        InputStream is=new FileInputStream("C:\\Picture\\a.txt");
-        InputStreamReader isr = new InputStreamReader(is);
-        BufferedReader br = new BufferedReader(isr);
-        String str = null;
-        StringBuilder sb = new StringBuilder();
-        while ((str = br.readLine()) != null) {
-            System.out.println(str);
-            sb.append(str);
-        }
-    }
-}

+ 55 - 5
src/main/java/com/uas/eis/utils/SqlUtil.java

@@ -1,18 +1,16 @@
 package com.uas.eis.utils;
 
 import java.io.Writer;
+import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.sql.Clob;
 import java.sql.Connection;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 
 import com.uas.eis.dao.SqlMap;
 
 import oracle.jdbc.OracleConnection;
+import org.springframework.cglib.beans.BeanMap;
 
 
 /**
@@ -240,6 +238,9 @@ public class SqlUtil {
 			sb1.append(field);
 			sb1.append(",");
 			if (value != null) {
+				if(value instanceof Date){
+					value = DateUtil.format((Date)value,Constant.YMD_HMS);
+				}
 				String val = value.toString();
 				if (val.matches(REG_D)) {// 判断是否是形如yyyy-mm-dd格式的日期类型数据
 					sb2.append(DateUtil.parseDateToOracleString(Constant.YMD, val));
@@ -860,4 +861,53 @@ public class SqlUtil {
 		return null;
 	}
 
+	// 实体转Map方法
+	public static Map<String, Object> entityToMap(Object entity) {
+		Map<String, Object> map = new HashMap<>();
+		Field[] fields = entity.getClass().getDeclaredFields();
+		for (Field field : fields) {
+			if(!field.getName().equals("details")){
+				field.setAccessible(true);
+				try {
+					Object value = field.get(entity);
+					if (value != null) {
+						map.put(field.getName(), value);
+					}
+				} catch (IllegalAccessException e) {
+					throw new RuntimeException("转换失败", e);
+				}
+			}
+		}
+		return map;
+	}
+	/**
+	 * 使用BeanMap转换(推荐)
+	 */
+	public static <T> List<Map<String, Object>> convertToMapList(List<T> entityList) {
+		if (entityList == null || entityList.isEmpty()) {
+			return new ArrayList<>();
+		}
+
+		List<Map<String, Object>> resultList = new ArrayList<>();
+		for (T entity : entityList) {
+			// BeanMap.create(entity) 返回 Map<String, Object>
+			Map<String, Object> map = BeanMap.create(entity);
+			resultList.add(map);
+		}
+		return resultList;
+	}
+	public static <T> List<Map<Object, Object>> convertToObjectMapList(List<T> entityList) {
+		if (entityList == null || entityList.isEmpty()) {
+			return new ArrayList<>();
+		}
+
+		List<Map<Object, Object>> resultList = new ArrayList<>();
+		for (T entity : entityList) {
+			Map<String, Object> beanMap = BeanMap.create(entity);
+			Map<Object, Object> map = new HashMap<>(beanMap);
+			resultList.add(map);
+		}
+		return resultList;
+	}
 }
+

+ 2 - 2
src/main/java/com/uas/eis/utils/TransferRepository.java

@@ -39,7 +39,7 @@ public class TransferRepository {
 			int id = baseDao.getSeqId(transfer.getTr_totable() + "_SEQ");
 			String code = null;
 			if (StringUtil.hasText(transfer.getTr_tocodekey()) && StringUtil.hasText(transfer.getTr_tocodecaller()))
-				code = baseDao.sGetMaxNumber(transfer.getTr_tocodecaller(), 2);
+				code = baseDao.getOrderCode(transfer.getTr_tocodecaller());
 			Key key = new Key(id, code);
 			baseDao.execute(getTransferSql(transfer, params, key,employee));
 			return key;
@@ -67,7 +67,7 @@ public class TransferRepository {
 			int id = baseDao.getSeqId(transfer.getTr_totable() + "_SEQ");
 			String code = null;
 			if (StringUtil.hasText(transfer.getTr_tocodekey()) && StringUtil.hasText(transfer.getTr_tocodecaller()))
-				code = baseDao.sGetMaxNumber(transfer.getTr_tocodecaller(), 2);
+				code = baseDao.getOrderCode(transfer.getTr_tocodecaller());
 			Key key = new Key(id, code);
 			baseDao.execute(getTransferSql(transfer, params, key,employee));
 			return key;

+ 13 - 13
src/main/resources/README/业务代码说明/型号列表查询.md

@@ -1,6 +1,6 @@
 ##### 简要描述
 
-- 物料资料查询
+- 型号资料列表查询
   1.根据传过来的数据查询物型号资料信息
 
 ##### 请求URL
@@ -21,7 +21,7 @@
 
 ```json
 {
-    "code": "QUERYGOODSLIST",
+    "code": "QUERY_GOODSLIST",
     "data": {
 		"startRow": "1",
 		"limit": "20",
@@ -33,14 +33,14 @@
 
 ##### 参数说明
 
-|参数名|必选|  说明 |  类型 |
-|:-|:----- |---|---|
-| code | 是      | 业务标识,SCRAP 表示新增报废记录  | String  |
-| data|是 | 业务数据 | String|
-| startRow|是 | 起始行数(分页显示用) 0 默认从第一行记录  | Int|
-| limit|是 | 最多行数 默认2000 可以不用设置  | Int|
-| filterString|否 | 过滤条件,如“pr_code='abc'” | String|
-| orderString|否 | 排序条件  | String|
+|参数名|必选| 说明                           |  类型 |
+|:-|:----- |------------------------------|---|
+| code | 是      | 业务标识,QUERYGOODSLIST 表示型号列表查询 | String  |
+| data|是 | 业务数据                         | String|
+| startRow|是 | 起始行数(分页显示用) 0 默认从第一行记录       | Int|
+| limit|是 | 最多行数 默认2000 可以不用设置           | Int|
+| filterString|否 | 过滤条件,如“pr_code='abc'”        | String|
+| orderString|否 | 排序条件                         | String|
 
 ##### 返回示例
 ``` 
@@ -220,10 +220,10 @@ data
 }
 失败示例:
 {
-    "code": "1",
-    "message": "查询成功",
+    "code": "1006",
+    "message": "接口不存在",
     "requestId": "741fef41-ffc5-445f-b427-d79278954b7c",
-    "data":null
+    "data": null
 }
 ```
 

+ 222 - 0
src/main/resources/README/业务代码说明/型号资料查询.md

@@ -0,0 +1,222 @@
+##### 简要描述
+
+- 物料资料查询
+  1.根据传过来的数据查询物型号资料信息
+
+##### 请求URL
+
+内网调用地址: `http地址/ERPAPI/api/queryDetail`
+
+##### 请求方式
+- POST
+##### Header
+
+|参数|参数值|
+|:-|:----- |
+| AccessKey|N_KX_JXKX|
+| Timestamp|1702953290104|
+| RequestId|741fef41-ffc5-445f-b427-d79278954b7c|
+
+##### 请求包体
+
+```json
+{
+  "code": "QUERY_GOOD",
+  "data": 109989874
+}
+```
+
+##### 参数说明
+
+|参数名|必选| 说明                                       | 类型     |
+|:-|:----- |------------------------------------------|--------|
+| code | 是      | 业务标识,QUERYGOOD 表示查询型号资料| String |
+| data|是 | 单据ID                                     | Int    |
+
+##### 返回示例
+``` 
+code 
+	值为1 表示单据写入成功,
+	值不为1 ,message 里面会有写入异常原因
+data 
+	code为1时返回具体下载信息,size表示写入报废记录的条数
+成功示例:
+{
+    "code": "1",
+    "message": "查询成功",
+    "requestId": "741fef41-ffc5-445f-b427-d79278954b7c",
+    "data": {
+        "pr_custcode": "LJ051-4",
+        "cu_name": null,
+        "cu_shortname": null,
+        "pr_xbzbn_user": "L",
+        "pr_xbzb": "内销",
+        "pr_style": "样品转量产",
+        "pr_factorycode": "J",
+        "pr_usetype": "I",
+        "pr_usetypen": "普通板",
+        "pr_usekind": "5",
+        "pr_usekindn": "五阶HDI",
+        "pr_serial": "Q",
+        "pr_serialn": "无卤素板",
+        "pr_nospec": "C",
+        "pr_nospecn": "化金",
+        "pr_tsn_user": null,
+        "pr_ts_user": null,
+        "pr_layer": 10.0,
+        "pr_code": "LJIC5Q1037627A0",
+        "pr_custprodspec": "EM_AHP_315B_to_496B_Right_V1.2",
+        "pr_custprodcode": "01.EP0.AHP3151R21A",
+        "pr_xhsx_user": "全制程",
+        "pr_outerboxlength": 182.42,
+        "pr_outerboxwidth": 118.53,
+        "pr_length": 32.88,
+        "pr_width": 23.63,
+        "pr_combinetype_1": 1.0,
+        "pr_combinetype_2": 20.0,
+        "pr_unit": "Unit",
+        "pr_cxkind": "锣板",
+        "pr_zlly": "E-mail",
+        "pr_envreq": "Rohs",
+        "pr_bctp": "FR-4",
+        "pr_tg": 170.0,
+        "pr_cpthick": 0.6,
+        "pr_bottomcu": "1/1",
+        "pr_wcdth_user": "H/H",
+        "pr_tbthick": "1/1",
+        "pr_mktmbno": null,
+        "pr_halogen": null,
+        "pr_id": 1.09989874E8,
+        "pr_updatedate": "2026-03-17 10:43:28",
+        "pr_pacode": null,
+        "pr_ssttounit": 20.0,
+        "pr_premakelevel": null,
+        "pr_ifcraft": null,
+        "pr_craftsize": null,
+        "pr_recordman": "彭丹丹",
+        "pr_pkid": null,
+        "pr_statuscode": "AUDITED",
+        "pr_outver": "A",
+        "pr_inver": "0",
+        "pr_groupcode": "成品",
+        "pr_status": "已审核",
+        "pr_isvalid": -1.0,
+        "pr_sqr": "彭丹丹",
+        "pr_engremark": null,
+        "pr_docdate": "2026-06-26 11:42:21",
+        "pr_attach": null,
+        "pr_spec": null,
+        "pr_salearea": 0.01163709,
+        "pr_unitarea": 0.0,
+        "pr_ifab": 0.0,
+        "pr_remark": null,
+        "pr_nodieceng": 0.0,
+        "pr_nokailiao": null,
+        "pr_zkcolor": "哑黑色(C/S,S/S)",
+        "pr_holedeal": "塞孔",
+        "pr_zfcolor": "白色",
+        "pr_kthd": null,
+        "pr_goldthick": ".",
+        "pr_nh_user": ".",
+        "pr_sfht_user": 1.0,
+        "pr_fjbj": "按文件-eq确认",
+        "pr_description": null,
+        "pr_x_type": "双叉",
+        "pr_x_qty": 2.0,
+        "pr_xbbl": "3",
+        "pr_testmode": "新开测试架",
+        "pr_bzfs": "真空+防潮珠",
+        "pr_extend3": "国内纸箱",
+        "pr_delreq": "出货报告+阻抗报告",
+        "pr_vendcode": null,
+        "pr_llno": "37627",
+        "pr_tsyq": null,
+        "pr_samepdctno": null,
+        "pr_ifx": null,
+        "pr_testtype": null,
+        "pr_mmkb": null,
+        "pr_board_l": 49.0,
+        "pr_board_w": 41.0,
+        "pr_jhfs": "Set",
+        "pr_prodremark": null,
+        "pr_jhzc": null,
+        "pr_sy_user": null,
+        "pr_pzjb": "A",
+        "pr_ifxbbdy": 0.0,
+        "pr_aaa": null,
+        "pr_topnl": 4.0,
+        "pr_pnltosst": 12.0,
+        "pr_topcs": 240.0,
+        "pr_utilization": 76.34,
+        "pr_assignboard": null,
+        "pr_boardinfo": null,
+        "pr_miimg": null,
+        "pr_pnlalength": 620.0,
+        "pr_pnlawidth": 544.0,
+        "pr_flagsend_user": null,
+        "pr_flagplan_user": null,
+        "pr_manutype": "MAKE",
+        "pr_dhzc": "MPS",
+        "pr_supplytype": "PUSH",
+        "pr_precision": 0.0,
+        "pr_wccode": null,
+        "pr_wcname": null,
+        "pr_gdtqq": null,
+        "pr_plzl": null,
+        "pr_safetystock": 0.0,
+        "pr_minstock": 0.0,
+        "pr_planercode": null,
+        "pr_planner": null,
+        "pr_istracbefore": 0.0,
+        "pr_whcode": "24",
+        "pr_whname": "成品仓",
+        "pr_precheckdate": null,
+        "pr_recentchangedate": "2026-05-31 23:59:59",
+        "pr_recentpurcdate": null,
+        "pr_recentindate": "2026-05-31 23:59:59",
+        "pr_recentoutdate": "2026-04-22 23:18:50",
+        "pr_bzdays": 0.0,
+        "pr_jkgsl": 0.0,
+        "pr_finishoverrate": null,
+        "pr_purcoverrate": 0.0,
+        "pr_mazeroqty": null,
+        "pr_maxstock": 0.0,
+        "pr_qtyperplace": 0.0,
+        "pr_acceptmethod": null,
+        "pr_qualmethod": null,
+        "pr_aql": null,
+        "pr_validdays": 0.0,
+        "pr_ismsd": null,
+        "pr_msdlevel": null,
+        "pr_inspector": null,
+        "pr_ltqc": 0.0,
+        "pr_stockcatecode": "1405.01",
+        "pr_stockcatename": null,
+        "pr_costcatecode": null,
+        "pr_costcatename": null,
+        "pr_incomecatecode": null,
+        "pr_incomecatename": null,
+        "pr_costlevel": 20.0,
+        "pr_standtime": 0.0,
+        "pr_materialcost": 0.0,
+        "pr_humancost": 0.0,
+        "pr_makecost": 0.0,
+        "pr_salecost": 0.0,
+        "pr_cost": 0.0,
+        "pr_sourcecode_user": "PDM",
+        "pr_pdmid_user": null
+    }
+}
+失败示例:
+{
+    "code": "1006",
+    "message": "接口不存在",
+    "requestId": "741fef41-ffc5-445f-b427-d79278954b7c",
+    "data": null
+}
+```
+
+##### 备注
+
+```
+

+ 1 - 2
src/main/resources/README/代码结构及数据结构说明.md

@@ -67,8 +67,7 @@
 | MA_ENABLE | NUMBER | 否 | 0  |  是否启用账套(0/1对应:否/是) |
 
 - 接口调用记录表:  APILOG
-
-  工厂配置:OPENALL 为0是调用校验
+- 主张套记录(资料中心)
 
 | 字段 | 字段类型 | 必填 |  说明 |
 |:--- |:--- |:---  |:---  |

+ 5 - 5
src/main/resources/README/公共参数.md

@@ -26,10 +26,10 @@
 
 ##### 请求包体
 
-|参数名|必选|说明|
-|:----    |:---|:----- |
-|code |是  |接口类型 |
-|data |是  |请求业务数据,具体内容以实际业务为准。  |
+|参数名|必选| 说明                    |
+|:----    |:---|:----------------------|
+|code |是  | 接口类型,BusinessType中定义 |
+|data |是  | 请求业务数据,具体内容以实际业务为准。   |
 
 
 
@@ -37,7 +37,7 @@
 
 ``` 
  {
-    "code": "ReciveIn",
+    "code": "RECIVEIN",
 	"data":{
 		...
 	}

+ 5 - 5
src/test/java/com/uas/eis/UasEisApplicationTests.java

@@ -6,7 +6,7 @@ import com.uas.eis.entity.ApiQueryListReq;
 import com.uas.eis.entity.ApiReq;
 import com.uas.eis.entity.Goods;
 import com.uas.eis.sdk.entity.ApiResult;
-import com.uas.eis.service.GoodsService;
+import com.uas.eis.service.GoodsServiceImpl;
 import com.uas.eis.utils.BaseUtil;
 import com.uas.eis.utils.ContextUtil;
 import org.junit.Test;
@@ -22,11 +22,11 @@ import java.util.List;
 @SpringBootTest(classes = {UasEisApplication.class})
 public class UasEisApplicationTests {
 	@Autowired
-	private GoodsService goodsService;
+	private GoodsServiceImpl goodsService;
 	@Test
 	public void invoke() {
-		String className = "com.uas.eis.service.Impl.EAPIQueryBusiness";
-		String methodName = "testInvoke";
+		String className = "com.uas.eis.service.GoodsServiceImpl";
+		String methodName = "queryGoods";
 		try {
 			Class cls = Class.forName(className);
 			Class[] argsClass = new Class[1];
@@ -57,7 +57,7 @@ public void testBusinessType() {
 		apiQueryListReq.setLimit(20);
 		apiQueryListReq.setOrderString("order by pr_code desc");
 		apiQueryListReq.setFilterString("rownum <= 20");
-		apiReq.setCode("QueryGoodsList");
+		apiReq.setCode("QUERYGOODSLIST");
 		apiReq.setAccessKey("N_KX_JXKX");
 		apiReq.setData(apiQueryListReq);
 		ApiResult<List<Goods>> g =  goodsService.queryGoodsList(apiReq);