Преглед изворни кода

【微浦MES-EIS 增加工单镭雕获取条码号和确认镭雕写入绑定表】

xiaost пре 3 недеља
родитељ
комит
3aedf20424

+ 23 - 0
src/main/java/com/uas/eis/controller/MESHelperController.java

@@ -1,6 +1,7 @@
 package com.uas.eis.controller;
 
 import com.uas.eis.sdk.entity.ApiResult;
+import com.uas.eis.sdk.entity.Result;
 import com.uas.eis.sdk.resp.ApiResponse;
 import com.uas.eis.service.MESHelperService;
 import org.dom4j.Document;
@@ -243,4 +244,26 @@ public class MESHelperController {
     public Map<Object,Object> countQTY(HttpServletRequest request,  @RequestBody String json){
         return mesHelperService.countQTY(json);
     }
+
+    /**
+     * 微浦MES获取镭雕序列号
+     * @param macode 工单号
+     * @param  combineqty 拼版数
+     * @return
+     */
+    @RequestMapping(value="/getRadiumSN",method = RequestMethod.GET)
+    public Result<Map<String,Object>> getRadiumSN(String macode , int combineqty){
+        return mesHelperService.getRadiumSN(macode,combineqty);
+    }
+
+    /**
+     * 微浦MES确认镭雕序列号
+     *
+     * @param json
+     * @return
+     */
+    @RequestMapping(value="/confirmRadiumSN",method = RequestMethod.POST)
+    public Result<Map<String,Object>> confirmRadiumSN(@RequestBody String json){
+        return mesHelperService.confirmRadiumSN(json);
+    }
 }

+ 6 - 0
src/main/java/com/uas/eis/dao/BaseDao.java

@@ -549,6 +549,12 @@ public class BaseDao{
 		return rs;
 	}
 
+	public SqlRowList queryForRowSet(String sql, Object... args) {
+		SqlRowList rs = new SqlRowList();
+		rs.setResultList(getJdbcTemplate().queryForList(sql, args));
+		return rs;
+	}
+
 	/**
 	 * @param tableName
 	 *            对应要查询的表

+ 30 - 0
src/main/java/com/uas/eis/sdk/entity/Result.java

@@ -1,7 +1,9 @@
 package com.uas.eis.sdk.entity;
 
 import lombok.Data;
+import lombok.Getter;
 import lombok.NoArgsConstructor;
+import lombok.Setter;
 
 @Data
 @NoArgsConstructor
@@ -22,6 +24,34 @@ public class Result<T> {
      */
     private T data;
 
+
+    public String getCode() {
+        return code;
+    }
+
+    public Result<T> setCode(String code) {
+        this.code = code;
+        return this;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public Result<T> setMsg(String msg) {
+        this.msg = msg;
+        return this;
+    }
+
+    public T getData() {
+        return data;
+    }
+
+    public Result<T> setData(T data) {
+        this.data = data;
+        return this;
+    }
+
     @Override
     public String toString() {
         return "Result{" +

+ 9 - 0
src/main/java/com/uas/eis/sdk/resp/ApiResponse.java

@@ -1,6 +1,7 @@
 package com.uas.eis.sdk.resp;
 
 import com.uas.eis.sdk.entity.ApiResult;
+import com.uas.eis.sdk.entity.Result;
 
 
 /**
@@ -58,4 +59,12 @@ public class ApiResponse {
     public static <T> ApiResult<T> failRsp(String code, String msg,String requestId,T data) {
         return new ApiResult<T>().setCode(code).setMessage(msg).setRequestId(requestId).setData(data);
     }
+
+    public static <T> Result<T> failRspResult(String msg) {
+        return new Result<T>().setCode("-1").setMsg(msg);
+    }
+
+    public static <T> Result<T> successRspResult(String msg,T data) {
+        return new Result<T>().setCode("0").setMsg(msg).setData(data);
+    }
 }

+ 4 - 0
src/main/java/com/uas/eis/service/MESHelperService.java

@@ -1,5 +1,6 @@
 package com.uas.eis.service;
 
+import com.uas.eis.sdk.entity.Result;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
@@ -40,4 +41,7 @@ public interface MESHelperService {
 
 	Map<Object, Object> countQTY(String data);
 
+	Result<Map<String,Object>> getRadiumSN(String macode , int combineqty);
+
+	Result<Map<String,Object>> confirmRadiumSN(String json);
 }

+ 127 - 0
src/main/java/com/uas/eis/serviceImpl/MESHelperServiceImpl.java

@@ -7,6 +7,8 @@ import com.uas.eis.entity.ErrorMessage;
 import com.uas.eis.entity.HelperType;
 import com.uas.eis.exception.ApiSystemException;
 import com.uas.eis.sdk.entity.ApiResult;
+import com.uas.eis.sdk.entity.Result;
+import com.uas.eis.sdk.resp.ApiResponse;
 import com.uas.eis.service.MESDataService;
 import com.uas.eis.service.MESHelperService;
 import com.uas.eis.utils.*;
@@ -2023,6 +2025,131 @@ public class MESHelperServiceImpl implements MESHelperService {
 		}
 		return map;
 	}
+	/**
+	 * 微浦MES获取镭雕序列号
+	 * @param
+	 *   macode  工单号
+	 *   combineqty  拼版数
+	 * @return
+	 */
+	@Override
+	public Result<Map<String,Object>> getRadiumSN(String macode ,int combineqty) {
+		Map<String,Object> remap = new HashMap<>();
+		if(!StringUtil.hasText(macode)){
+			return ApiResponse.failRspResult("输入参数macode(工单号)不能为空!");
+		}
+		if(combineqty<=0){
+			return ApiResponse.failRspResult("输入参数combineqty(拼版数):"+combineqty+"不能小于等于0!");
+		}
+		/*if(combineqty>20){
+			return ApiResponse.failRspResult("输入参数combineqty(拼版数):"+combineqty+"值不合理!");
+		}*/
+		//判断工单号是否存在
+		SqlRowList rs = baseDao.queryForRowSet("select * from make where ma_code=?",macode);
+		if(rs.next()){
+			int cn = baseDao.getJdbcTemplate().queryForObject("select count(1) from MAKESNRULEDETAIL where msd_makecode=? and msd_type='before'",Integer.class,macode);
+			if(cn == 0){
+				return ApiResponse.failRspResult("工单号:"+macode+",未生成镭雕条码!");
+			}
+			List<String> sqls = new ArrayList<>();
+			rs = baseDao.queryForRowSet("select * from (select MSD_SNCODE sncode from MAKESNRULEDETAIL where nvl(msd_isget,0)=0 " +
+					" and msd_makecode=? and msd_type='before' order by msd_id) where rownum<=?",macode,combineqty);
+			if(rs.next()){
+               if(rs.getResultList().size()<combineqty){
+				   return ApiResponse.failRspResult("工单号:"+macode+",剩余可获取镭雕条码数为:"+rs.getResultList().size()+",不足拼版数:"+combineqty+"!");
+			   }
+				remap.put("macode",macode);
+				remap.put("combineqty",combineqty);
+				List<Map<String, Object>> list = new ArrayList<>();
+				for(Map<String, Object> m : rs.getResultList()){
+					Map<String, Object> mm = new HashMap<>();
+					mm.put("sncode",m.get("sncode"));
+					list.add(mm);
+					sqls.add("update MAKESNRULEDETAIL set msd_isget=-1,msd_getdate=sysdate where msd_makecode='" + macode + "' and msd_sncode='"+m.get("sncode")+"'  and msd_type='before'");
+				}
+				baseDao.execute(sqls);
+				remap.put("detail",list);
+				return ApiResponse.successRspResult("获取成功",remap);
+			}else {
+				return ApiResponse.failRspResult("工单号:"+macode+",镭雕条码无剩余可获取数据!");
+			}
+		}else{
+			return ApiResponse.failRspResult("工单号:"+macode+",不存在!");
+		}
+	}
+
+	/**
+	 * 微浦MES确认镭雕序列号
+	 * @param json
+	 * {
+	 *       macode:
+	 *       combineqty:
+	 *       detail:[
+	 *        {sncode:},
+	 *        {sncode:},
+	 *        {sncode:},
+	 *        {sncode:}
+	 *       ]
+	 *    }
+	 * @return
+	 */
+	@Override
+	public Result<Map<String,Object>> confirmRadiumSN(String json) {
+		Map<Object, Object> map = BaseUtil.parseFormStoreToMap(json);
+		Object macode = map.get("macode");
+		Object combineqty = map.get("combineqty");
+		if(!StringUtil.hasText(macode)){
+			return ApiResponse.failRspResult("输入参数macode(工单号)不能为空!");
+		}
+		if(!StringUtil.hasText(combineqty) ){
+			return ApiResponse.failRspResult("输入参数combineqty(拼版数)不能为空");
+		}
+		if(!(combineqty instanceof Integer) || (Integer) combineqty<=0){
+			return ApiResponse.failRspResult("输入参数combineqty(拼版数):"+combineqty+",必须是正整数!");
+		}
+		if(!StringUtil.hasText(map.get("detail")) ){
+			return ApiResponse.failRspResult("输入参数detail(镭雕条码后)不能为空");
+		}
+		List<Map<Object, Object>> list = BaseUtil.parseGridStoreToMaps(map.get("detail").toString());
+		if(list.size() != (Integer) combineqty){
+			return ApiResponse.failRspResult("条码数量:"+list.size()+"与拼版数:"+combineqty+",不一致!");
+		}
+		//判断工单号是否存在
+		SqlRowList rs = baseDao.queryForRowSet("select ma_id,ma_code,ma_prodcode from make where ma_code=?",macode);
+		if(rs.next()) {
+			String codes = CollectionUtil.pluckSqlString(list, "sncode");
+			String err = baseDao.getJdbcTemplate().queryForObject("select wm_concat('序列号:'||sb_barcode||',已经绑定工单:'||SB_MAKECODE) " +
+					" from (select SB_MAKECODE,wm_concat(sb_barcode)sb_barcode" +
+					"  from smtbind where SB_BARCODE in (" + codes + ") group by SB_MAKECODE)", String.class);
+			if (null != err) {
+				return ApiResponse.failRspResult(err);
+			}
+			err = null;
+			//条码不在维护范围内
+			List<String> sqls = new ArrayList<>();
+			Object maincode = list.get(0).get("sncode");
+			for (Map<Object, Object> m : list) {
+				SqlRowList rs1 = baseDao.queryForRowSet("select * from MAKESNRULEDETAIL where msd_makecode=? and msd_sncode=? and msd_type='before'", macode, m.get("sncode"));
+				if (!rs1.next()) {
+					err += m.get("sncode") + ",";
+				}
+				if(null == err) {
+					sqls.add("insert into smtbind(SB_ID, SB_MAINCODE, SB_BARCODE, SB_PRODCODE, SB_INMAN, SB_INDATE, SB_STATUS, SB_MAKECODE)" +
+							" values (smtbind_seq.nextval,'" + maincode + "','" + m.get("sncode") + "','" + rs.getString("ma_prodcode") + "','接口',sysdate,0,'" + macode + "')");
+					sqls.add("update MAKESNRULEDETAIL set msd_isget=-1,msd_getdate=sysdate where msd_makecode='" + macode + "' and msd_sncode='"+m.get("sncode")+"' and nvl(msd_isget,0)=0 and msd_type='before'");
+					sqls.add("update MAKESNRULEDETAIL set msd_isconfirm=-1,msd_confirmdate=sysdate where msd_makecode='" + macode + "' and msd_sncode='"+m.get("sncode")+"' and msd_type='before' ");;
+				}
+			}
+			if (null != err) {
+				return ApiResponse.failRspResult("条码:"+err.substring(0, err.length() - 1)+",不在工单维护的镭雕条码范围内!");
+			}else{
+				baseDao.execute(sqls);
+			}
+			return ApiResponse.successRspResult("确认成功", null);
+		}else{
+			return ApiResponse.failRspResult("工单号:"+macode+",不存在!");
+		}
+	}
 
 
 	private Map<Object,Object> SetBpMaterial(JSONObject map)