|
|
@@ -65,29 +65,27 @@ public class MesProductPreService extends CrudService<MesProductPreDao, MesProdu
|
|
|
return mesProductPreDao.findInfo(mesProductPre);
|
|
|
}
|
|
|
|
|
|
- public String getNewSn(String lineSn,String cate){
|
|
|
- return getNewSn(lineSn,cate,"");
|
|
|
- }
|
|
|
-
|
|
|
- // pn:CZ060 产品PN号(195/196/198),为空或不合法时默认195
|
|
|
+ // pn:CZ060 产品PN号(195/196/198),长码必传;前工序码为空或不合法时默认195
|
|
|
public String getNewSn(String lineSn,String cate,String pn){
|
|
|
//500104004355C230001 cate=1
|
|
|
//0050010400435E6348245C120001 cate=2
|
|
|
- String pre = "CZ060195";
|
|
|
- if("195".equals(pn) || "196".equals(pn) || "198".equals(pn)){
|
|
|
- pre = "CZ060" + pn;
|
|
|
+ // pn 为空或非法时按195(长码的必填校验在 getContent 接口层)
|
|
|
+ if(!"195".equals(pn) && !"196".equals(pn) && !"198".equals(pn)){
|
|
|
+ pn = "195";
|
|
|
}
|
|
|
- String pre2 = "F956210325195AI2";
|
|
|
- if(lineSn.equals("CZ061")){
|
|
|
+ String pre = "CZ060" + pn;
|
|
|
+ // 长码前缀:物料代码最后一位随产品号变化(195->5、196->6、198->8),AI2 为原有固定位
|
|
|
+ String pre2 = "F95621032519" + pn.substring(2) + "AI2";
|
|
|
+ if("CZ061".equals(lineSn)){
|
|
|
|
|
|
}
|
|
|
|
|
|
String todayStr = CommonUitl.getYearLastChar()+CommonUitl.getMonthChar()+CommonUitl.getDayChar();
|
|
|
String sn = "";
|
|
|
String newSn = "";
|
|
|
- // 检查当前是否配置规则
|
|
|
+ // 检查当前是否配置规则;长码(cate=2)固定按产品拼装,不受规则配置影响
|
|
|
MesProductPreConfig mesProductPreConfig = mesProductPreConfigService.checkRuleCate(lineSn,cate);
|
|
|
- if(!ObjectUtils.isEmpty(mesProductPreConfig)){
|
|
|
+ if(!ObjectUtils.isEmpty(mesProductPreConfig) && !cate.equals("2")){
|
|
|
Integer isAuto = 0;
|
|
|
List<RuleResp> rules = JSON.parseArray(mesProductPreConfig.getContent(), RuleResp.class);
|
|
|
if(!ListUtils.isEmpty(rules)){
|
|
|
@@ -193,6 +191,10 @@ public class MesProductPreService extends CrudService<MesProductPreDao, MesProdu
|
|
|
mesProductPre.setCate(cate);
|
|
|
mesProductPre.setLineSn(lineSn);
|
|
|
mesProductPre.getSqlMap().getWhere().and("a.sn", QueryType.RIGHT_LIKE,sn);
|
|
|
+ if(cate.equals("2")){
|
|
|
+ // 取最大流水,避免重复试探
|
|
|
+ mesProductPre.getSqlMap().getOrder().setOrderBy("a.sn desc");
|
|
|
+ }
|
|
|
MesProductPre mesProductPre1 = this.findInfo(mesProductPre);
|
|
|
if(!ObjectUtils.isEmpty(mesProductPre1)){
|
|
|
if(cate.equals("1")){
|
|
|
@@ -203,9 +205,10 @@ public class MesProductPreService extends CrudService<MesProductPreDao, MesProdu
|
|
|
number = no + 1 + i;
|
|
|
}
|
|
|
}else{
|
|
|
- String snDate = mesProductPre1.getSn().substring(20,24);
|
|
|
+ // 24位码:前缀(16)+年月日(4)+流水号(4),流水号取第20位之后
|
|
|
+ String snDate = mesProductPre1.getSn().substring(16,20);
|
|
|
if(snDate.equals(todayStr)){
|
|
|
- int no = Integer.valueOf(mesProductPre1.getSn().substring(24,28));
|
|
|
+ int no = Integer.valueOf(mesProductPre1.getSn().substring(20,24));
|
|
|
number = no + 1 + i;
|
|
|
}
|
|
|
}
|