|
|
@@ -4,6 +4,8 @@ import java.text.ParseException;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.regex.Matcher;
|
|
|
+import java.util.regex.Pattern;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
@@ -158,53 +160,128 @@ public class MesMaterialReportController extends BaseController {
|
|
|
@ResponseBody
|
|
|
public CommonResp getMaterialInfo( HttpServletRequest req) {
|
|
|
|
|
|
+// 40100000843A.1G44010026060100001
|
|
|
+// 料号+版本号+供应商码+流水号
|
|
|
+// 40100000843 + A.1 + G440100 + 26060100001
|
|
|
+
|
|
|
+// String materialCode = req.getParameter("materialCode");
|
|
|
+// CommonResp<Map<String, Object>> resp = new CommonResp<>();
|
|
|
+//
|
|
|
+// if (StringUtils.isEmpty(materialCode)){
|
|
|
+// resp.setResult(Global.FALSE);
|
|
|
+// resp.setMessage("来料码不能为空!");
|
|
|
+// return resp;
|
|
|
+//
|
|
|
+// }
|
|
|
+// String[] parts = materialCode.split("_",-1);
|
|
|
+// if(parts.length < 3){
|
|
|
+// resp.setResult(Global.FALSE);
|
|
|
+// resp.setMessage("二维码规则不正确!");
|
|
|
+// return resp;
|
|
|
+// }
|
|
|
+// String materialId = parts[0];
|
|
|
+// String faDate = parts[1];
|
|
|
+// String nums = parts[2];
|
|
|
+// if (parts.length!= 3||StringUtils.isEmpty(materialId)||StringUtils.isEmpty(faDate)||StringUtils.isEmpty(nums)){
|
|
|
+// resp.setResult(Global.FALSE);
|
|
|
+// resp.setMessage("二维码规则不正确!");
|
|
|
+// return resp;
|
|
|
+// }
|
|
|
+// String faDate1=null;
|
|
|
+// try {
|
|
|
+// faDate1 = DateLocalUtils.getCurrentDate2(faDate);
|
|
|
+// } catch (ParseException e) {
|
|
|
+// resp.setResult(Global.FALSE);
|
|
|
+// resp.setMessage("二维码规则不正确!");
|
|
|
+// return resp;
|
|
|
+// }
|
|
|
+// MesMaterial mesMaterial = new MesMaterial();
|
|
|
+// mesMaterial.setErpSn(materialId);
|
|
|
+// MesMaterial material = mesMaterialService.findInfo(mesMaterial);
|
|
|
+// if(material==null){
|
|
|
+// resp.setResult(Global.FALSE);
|
|
|
+// resp.setMessage("物料不存在!");
|
|
|
+// return resp;
|
|
|
+// }
|
|
|
+// HashMap<String, Object> hashMap = new HashMap<>();
|
|
|
+// hashMap.put("title", material.getTitle());//物料
|
|
|
+// hashMap.put("faDate", faDate1);//发货日期
|
|
|
+// hashMap.put("nums", nums);//数量
|
|
|
+//
|
|
|
+// resp.setData(hashMap);
|
|
|
+// resp.setResult(Global.TRUE);
|
|
|
+// return resp;
|
|
|
+
|
|
|
String materialCode = req.getParameter("materialCode");
|
|
|
CommonResp<Map<String, Object>> resp = new CommonResp<>();
|
|
|
|
|
|
- if (StringUtils.isEmpty(materialCode)){
|
|
|
+ if (StringUtils.isEmpty(materialCode)) {
|
|
|
resp.setResult(Global.FALSE);
|
|
|
resp.setMessage("来料码不能为空!");
|
|
|
return resp;
|
|
|
+ }
|
|
|
|
|
|
+ // 1. 长度校验:至少11位日期流水号 + 料号等
|
|
|
+ if (materialCode.length() < 12) {
|
|
|
+ resp.setResult(Global.FALSE);
|
|
|
+ resp.setMessage("二维码规则不正确!");
|
|
|
+ return resp;
|
|
|
}
|
|
|
- String[] parts = materialCode.split("_",-1);
|
|
|
- if(parts.length < 3){
|
|
|
+
|
|
|
+ // 2. 提取最后11位日期流水号
|
|
|
+ String dateSerial = materialCode.substring(materialCode.length() - 11);
|
|
|
+ // 校验是否为纯数字
|
|
|
+ if (!dateSerial.matches("\\d{11}")) {
|
|
|
resp.setResult(Global.FALSE);
|
|
|
resp.setMessage("二维码规则不正确!");
|
|
|
return resp;
|
|
|
}
|
|
|
- String materialId = parts[0];
|
|
|
- String faDate = parts[1];
|
|
|
- String nums = parts[2];
|
|
|
- if (parts.length!= 3||StringUtils.isEmpty(materialId)||StringUtils.isEmpty(faDate)||StringUtils.isEmpty(nums)){
|
|
|
+
|
|
|
+ // 3. 剩余部分格式:数字料号 + 版本号(字母.数字) + 供应商码(字母+数字)
|
|
|
+ String remaining = materialCode.substring(0, materialCode.length() - 11);
|
|
|
+ Pattern pattern = Pattern.compile("^(\\d+)([A-Z]\\.[\\d]+)([A-Z]\\d+)$");
|
|
|
+ Matcher matcher = pattern.matcher(remaining);
|
|
|
+ if (!matcher.matches()) {
|
|
|
resp.setResult(Global.FALSE);
|
|
|
resp.setMessage("二维码规则不正确!");
|
|
|
return resp;
|
|
|
}
|
|
|
- String faDate1=null;
|
|
|
+
|
|
|
+ String materialId = matcher.group(1); // 料号
|
|
|
+
|
|
|
+ // 4. 日期转换(沿用原有工具)
|
|
|
+ String yyMMdd = dateSerial.substring(0, 6); // 260601
|
|
|
+ String faDateStr = "20" + yyMMdd.substring(0, 2) + "-"
|
|
|
+ + yyMMdd.substring(2, 4) + "-"
|
|
|
+ + yyMMdd.substring(4, 6); // 2026-06-01
|
|
|
+ String faDate1;
|
|
|
try {
|
|
|
- faDate1 = DateLocalUtils.getCurrentDate2(faDate);
|
|
|
- } catch (ParseException e) {
|
|
|
+ faDate1 = faDateStr;
|
|
|
+ } catch (Exception e) {
|
|
|
resp.setResult(Global.FALSE);
|
|
|
- resp.setMessage("二维码规则不正确!");
|
|
|
+ resp.setMessage("二维码日期解析失败!");
|
|
|
return resp;
|
|
|
}
|
|
|
+
|
|
|
+ // 5. 查询物料
|
|
|
MesMaterial mesMaterial = new MesMaterial();
|
|
|
mesMaterial.setErpSn(materialId);
|
|
|
MesMaterial material = mesMaterialService.findInfo(mesMaterial);
|
|
|
- if(material==null){
|
|
|
+ if (material == null) {
|
|
|
resp.setResult(Global.FALSE);
|
|
|
resp.setMessage("物料不存在!");
|
|
|
return resp;
|
|
|
}
|
|
|
+
|
|
|
HashMap<String, Object> hashMap = new HashMap<>();
|
|
|
- hashMap.put("title", material.getTitle());//物料
|
|
|
- hashMap.put("faDate", faDate1);//发货日期
|
|
|
- hashMap.put("nums", nums);//数量
|
|
|
+ hashMap.put("title", material.getTitle());
|
|
|
+ hashMap.put("faDate", faDate1);
|
|
|
+ hashMap.put("nums", 0); // 数量固定为0
|
|
|
|
|
|
resp.setData(hashMap);
|
|
|
resp.setResult(Global.TRUE);
|
|
|
return resp;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -216,65 +293,148 @@ public class MesMaterialReportController extends BaseController {
|
|
|
@RequestMapping(value = "submit")
|
|
|
@ResponseBody
|
|
|
public CommonResp submit(HttpServletRequest req) {
|
|
|
+// CommonResp<Map<String, Object>> resp = new CommonResp<>();
|
|
|
+// String materialCode = req.getParameter("materialCode").trim();
|
|
|
+// String nums = req.getParameter("nums");
|
|
|
+// String remark = req.getParameter("remark");
|
|
|
+// String[] parts = materialCode.split("_",-1);
|
|
|
+// if(parts.length < 3){
|
|
|
+// resp.setResult(Global.FALSE);
|
|
|
+// resp.setMessage("二维码规则不正确!");
|
|
|
+// return resp;
|
|
|
+// }
|
|
|
+// String materialId = parts[0];
|
|
|
+// String faDate = parts[1];
|
|
|
+// String faNums = parts[2];
|
|
|
+// if (parts.length!= 3||StringUtils.isEmpty(materialId)||StringUtils.isEmpty(faDate)||StringUtils.isEmpty(nums)){
|
|
|
+// resp.setResult(Global.FALSE);
|
|
|
+// resp.setMessage("二维码规则不正确!");
|
|
|
+// return resp;
|
|
|
+// }
|
|
|
+// String faDate1=null;
|
|
|
+// try {
|
|
|
+// faDate1 = DateLocalUtils.getCurrentDate2(faDate);
|
|
|
+// } catch (ParseException e) {
|
|
|
+// resp.setResult(Global.FALSE);
|
|
|
+// resp.setMessage("二维码规则不正确!");
|
|
|
+// return resp;
|
|
|
+//
|
|
|
+// }
|
|
|
+// MesMaterial mesMaterial = new MesMaterial();
|
|
|
+// mesMaterial.setErpSn(materialId);
|
|
|
+// MesMaterial material = mesMaterialService.findInfo(mesMaterial);
|
|
|
+// if(material==null){
|
|
|
+// resp.setResult(Global.FALSE);
|
|
|
+// resp.setMessage("物料不存在!");
|
|
|
+// return resp;
|
|
|
+// }
|
|
|
+//
|
|
|
+// //检查物料码是否已报检
|
|
|
+// MesMaterialReport mesMaterialReport = new MesMaterialReport();
|
|
|
+// mesMaterialReport.setSn(materialCode);
|
|
|
+// mesMaterialReport.setStatus("0");
|
|
|
+// MesMaterialReport mesMaterialReport12 = mesMaterialReportService.findInfo(mesMaterialReport);
|
|
|
+// if(!ObjectUtils.isEmpty(mesMaterialReport12)){
|
|
|
+// resp.setResult(Global.FALSE);
|
|
|
+// resp.setMessage("该批物料已报检,勿重复操作!");
|
|
|
+// return resp;
|
|
|
+// }
|
|
|
+//
|
|
|
+// MesMaterialReport mesMaterialReport1 = new MesMaterialReport();
|
|
|
+// mesMaterialReport1.setSn(materialCode);
|
|
|
+// mesMaterialReport1.setMaterialId(material.getId());
|
|
|
+// mesMaterialReport1.setFaDate(faDate1);
|
|
|
+// mesMaterialReport1.setFaNums(Long.valueOf(faNums));
|
|
|
+// mesMaterialReport1.setState("0");
|
|
|
+// mesMaterialReport1.setStatus("0");
|
|
|
+// mesMaterialReport1.setRemark(remark);
|
|
|
+// mesMaterialReport1.setNums(Long.valueOf(nums));
|
|
|
+// mesMaterialReportService.save(mesMaterialReport1);
|
|
|
+// resp.setResult(Global.TRUE);
|
|
|
+// return resp;
|
|
|
+
|
|
|
CommonResp<Map<String, Object>> resp = new CommonResp<>();
|
|
|
String materialCode = req.getParameter("materialCode").trim();
|
|
|
String nums = req.getParameter("nums");
|
|
|
String remark = req.getParameter("remark");
|
|
|
- String[] parts = materialCode.split("_",-1);
|
|
|
- if(parts.length < 3){
|
|
|
+
|
|
|
+ // 1. 解析新规则条码
|
|
|
+ if (StringUtils.isEmpty(materialCode) || materialCode.length() < 12) {
|
|
|
resp.setResult(Global.FALSE);
|
|
|
resp.setMessage("二维码规则不正确!");
|
|
|
return resp;
|
|
|
}
|
|
|
- String materialId = parts[0];
|
|
|
- String faDate = parts[1];
|
|
|
- String faNums = parts[2];
|
|
|
- if (parts.length!= 3||StringUtils.isEmpty(materialId)||StringUtils.isEmpty(faDate)||StringUtils.isEmpty(nums)){
|
|
|
+
|
|
|
+ // 取出最后11位日期流水号
|
|
|
+ String dateSerial = materialCode.substring(materialCode.length() - 11);
|
|
|
+ if (!dateSerial.matches("\\d{11}")) {
|
|
|
resp.setResult(Global.FALSE);
|
|
|
resp.setMessage("二维码规则不正确!");
|
|
|
return resp;
|
|
|
}
|
|
|
- String faDate1=null;
|
|
|
- try {
|
|
|
- faDate1 = DateLocalUtils.getCurrentDate2(faDate);
|
|
|
- } catch (ParseException e) {
|
|
|
+
|
|
|
+ // 剩余部分:料号 + 版本号 + 供应商码
|
|
|
+ String remaining = materialCode.substring(0, materialCode.length() - 11);
|
|
|
+ Pattern pattern = Pattern.compile("^(\\d+)([A-Z]\\.[\\d]+)([A-Z]\\d+)$");
|
|
|
+ Matcher matcher = pattern.matcher(remaining);
|
|
|
+ if (!matcher.matches()) {
|
|
|
resp.setResult(Global.FALSE);
|
|
|
resp.setMessage("二维码规则不正确!");
|
|
|
return resp;
|
|
|
+ }
|
|
|
+
|
|
|
+ String materialId = matcher.group(1); // 料号
|
|
|
+ String yyMMdd = dateSerial.substring(0, 6); // 日期部分 260601
|
|
|
+ String faDateStr = "20" + yyMMdd.substring(0, 2) + "-"
|
|
|
+ + yyMMdd.substring(2, 4) + "-"
|
|
|
+ + yyMMdd.substring(4, 6); // 转换为 yyyy-MM-dd
|
|
|
|
|
|
- }
|
|
|
- MesMaterial mesMaterial = new MesMaterial();
|
|
|
+ // 2. 日期格式转换(沿用原有工具)
|
|
|
+ String faDate1;
|
|
|
+ try {
|
|
|
+ faDate1 = DateLocalUtils.getCurrentDate2(faDateStr);
|
|
|
+ } catch (ParseException e) {
|
|
|
+ resp.setResult(Global.FALSE);
|
|
|
+ resp.setMessage("二维码日期解析失败!");
|
|
|
+ return resp;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. 检查物料是否存在
|
|
|
+ MesMaterial mesMaterial = new MesMaterial();
|
|
|
mesMaterial.setErpSn(materialId);
|
|
|
MesMaterial material = mesMaterialService.findInfo(mesMaterial);
|
|
|
- if(material==null){
|
|
|
+ if (material == null) {
|
|
|
resp.setResult(Global.FALSE);
|
|
|
resp.setMessage("物料不存在!");
|
|
|
return resp;
|
|
|
}
|
|
|
|
|
|
- //检查物料码是否已报检
|
|
|
+ // 4. 检查物料码是否已报检
|
|
|
MesMaterialReport mesMaterialReport = new MesMaterialReport();
|
|
|
mesMaterialReport.setSn(materialCode);
|
|
|
mesMaterialReport.setStatus("0");
|
|
|
MesMaterialReport mesMaterialReport12 = mesMaterialReportService.findInfo(mesMaterialReport);
|
|
|
- if(!ObjectUtils.isEmpty(mesMaterialReport12)){
|
|
|
+ if (!ObjectUtils.isEmpty(mesMaterialReport12)) {
|
|
|
resp.setResult(Global.FALSE);
|
|
|
resp.setMessage("该批物料已报检,勿重复操作!");
|
|
|
return resp;
|
|
|
}
|
|
|
|
|
|
+ // 5. 保存报检记录
|
|
|
MesMaterialReport mesMaterialReport1 = new MesMaterialReport();
|
|
|
mesMaterialReport1.setSn(materialCode);
|
|
|
mesMaterialReport1.setMaterialId(material.getId());
|
|
|
mesMaterialReport1.setFaDate(faDate1);
|
|
|
- mesMaterialReport1.setFaNums(Long.valueOf(faNums));
|
|
|
+ mesMaterialReport1.setFaNums(0L); // 新规则无来料数量,固定为0
|
|
|
mesMaterialReport1.setState("0");
|
|
|
mesMaterialReport1.setStatus("0");
|
|
|
mesMaterialReport1.setRemark(remark);
|
|
|
- mesMaterialReport1.setNums(Long.valueOf(nums));
|
|
|
+ mesMaterialReport1.setNums(Long.valueOf(nums)); // 实际收料数量从前端获取
|
|
|
+
|
|
|
mesMaterialReportService.save(mesMaterialReport1);
|
|
|
resp.setResult(Global.TRUE);
|
|
|
return resp;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@RequiresPermissions("mes:mesMaterialReport:api")
|