hzd 2 weken geleden
bovenliggende
commit
8470e3e392

+ 10 - 1
src/main/java/com/jeesite/modules/mes/entity/MesProductHmb.java

@@ -22,6 +22,7 @@ import java.util.Date;
 		@Column(name="sn", attrName="sn", label="后面板码"),
 		@Column(name="qsn", attrName="qsn", label="前工序码"),
 		@Column(name="state", attrName="state", label="验证状态"),
+		@Column(name="line_sn", attrName="lineSn", label="产线编号"),
 		@Column(name="create_by", attrName="createBy", label="创建人", isUpdate=false),
 		@Column(name="create_date", attrName="createDate", label="创建日期", isUpdate=false, isUpdateForce=true),
 		@Column(name="update_by", attrName="updateBy", label="绑定人"),
@@ -34,6 +35,7 @@ public class MesProductHmb extends DataEntity<MesProductHmb> {
 	private String sn;		// 后面板码
 	private String qsn;		// 前工序码
 	private String state;		// 验证状态
+	private String lineSn;
 
 	@ExcelFields({
 		@ExcelField(title="后面板码", attrName="sn", align=Align.CENTER, sort=20),
@@ -110,5 +112,12 @@ public class MesProductHmb extends DataEntity<MesProductHmb> {
 	public void setUpdateDate_lte(Date updateDate) {
 		sqlMap.getWhere().and("update_date", QueryType.LTE, updateDate);
 	}
-	
+
+	public String getLineSn() {
+		return lineSn;
+	}
+
+	public void setLineSn(String lineSn) {
+		this.lineSn = lineSn;
+	}
 }

+ 19 - 0
src/main/java/com/jeesite/modules/mes/entity/MesProductModel.java

@@ -22,6 +22,7 @@ import com.jeesite.common.mybatis.mapper.query.QueryType;
 		@Column(name="nums", attrName="nums", label="入库数量", isUpdateForce=true),
 		@Column(name="status", attrName="status", label="状态", isUpdate=false, isQuery=true),
 //		@Column(name="state", attrName="state", label="状态"),
+		@Column(name="cate_sn", attrName="cateSn", label="工件类型"),
 		@Column(name="create_by", attrName="createBy", label="create_by", isUpdate=false, isQuery=false),
 		@Column(name="create_date", attrName="createDate", label="create_date", isUpdate=false, isQuery=false, isUpdateForce=true),
 		@Column(name="update_by", attrName="updateBy", label="update_by", isQuery=false),
@@ -38,6 +39,8 @@ public class MesProductModel extends DataEntity<MesProductModel> {
 	private Integer length;		// 条码长度
 	private Integer nums;		// 入库数量
 	private String state;
+	private String cateSn;
+	private String lineSn;
 
 	public MesProductModel() {
 		this(null);
@@ -105,4 +108,20 @@ public class MesProductModel extends DataEntity<MesProductModel> {
 	public void setState(String state) {
 		this.state = state;
 	}
+
+	public String getCateSn() {
+		return cateSn;
+	}
+
+	public void setCateSn(String cateSn) {
+		this.cateSn = cateSn;
+	}
+
+	public String getLineSn() {
+		return lineSn;
+	}
+
+	public void setLineSn(String lineSn) {
+		this.lineSn = lineSn;
+	}
 }

+ 10 - 0
src/main/java/com/jeesite/modules/mes/entity/MesProductPre.java

@@ -21,6 +21,7 @@ import java.util.Date;
 		@Column(name="id", attrName="id", label="id", isPK=true),
 		@Column(name="sn", attrName="sn", label="前工序码"),
 		@Column(name="cate", attrName="cate", label="类型"),
+		@Column(name="line_sn", attrName="lineSn", label="类型"),
 		@Column(name="status", attrName="status", label="状态", isUpdate=false),
 		@Column(name="create_by", attrName="createBy", label="创建人", isUpdate=false),
 		@Column(name="create_date", attrName="createDate", label="创建日期", isUpdate=false, isUpdateForce=true),
@@ -31,6 +32,7 @@ public class MesProductPre extends DataEntity<MesProductPre> {
 	private static final long serialVersionUID = 1L;
 	private String sn;		// 前工序码
 	private String cate;
+	private String lineSn;
 
 	@ExcelFields({
 		@ExcelField(title="前工序码", attrName="sn", align=Align.CENTER, sort=20),
@@ -78,4 +80,12 @@ public class MesProductPre extends DataEntity<MesProductPre> {
 	public void setCate(String cate) {
 		this.cate = cate;
 	}
+
+	public String getLineSn() {
+		return lineSn;
+	}
+
+	public void setLineSn(String lineSn) {
+		this.lineSn = lineSn;
+	}
 }

+ 10 - 1
src/main/java/com/jeesite/modules/mes/entity/MesProductPreConfig.java

@@ -20,6 +20,7 @@ import com.jeesite.common.mybatis.mapper.query.QueryType;
 		@Column(name="id", attrName="id", label="id", isPK=true),
 		@Column(name="title", attrName="title", label="标题", queryType=QueryType.LIKE),
 		@Column(name="cate", attrName="cate", label="类型"),
+		@Column(name="line_sn", attrName="lineSn", label="产线编号"),
 		@Column(name="start_date", attrName="startDate", label="开始时间", isUpdateForce=true),
 		@Column(name="end_date", attrName="endDate", label="结束时间", isUpdateForce=true),
 		@Column(name="content", attrName="content", label="规则"),
@@ -40,6 +41,7 @@ public class MesProductPreConfig extends DataEntity<MesProductPreConfig> {
 	private Date endDate;		// 结束时间
 	private String content;		// 规则
 	private String remark;		// 备注
+	private String lineSn;
 
 	public MesProductPreConfig() {
 		this(null);
@@ -101,5 +103,12 @@ public class MesProductPreConfig extends DataEntity<MesProductPreConfig> {
 	public void setRemark(String remark) {
 		this.remark = remark;
 	}
-	
+
+	public String getLineSn() {
+		return lineSn;
+	}
+
+	public void setLineSn(String lineSn) {
+		this.lineSn = lineSn;
+	}
 }

+ 32 - 1
src/main/java/com/jeesite/modules/mes/service/MesProductModelService.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.jeesite.common.collect.ListUtils;
 import com.jeesite.common.config.Global;
+import com.jeesite.modules.mes.entity.MesLine;
 import com.jeesite.modules.mes.entity.MesProductStorageRecord;
 import com.jeesite.modules.mes.resp.CommonResp;
 import com.jeesite.modules.mes.util.CommonUitl;
@@ -25,9 +26,11 @@ import org.springframework.util.ObjectUtils;
 public class MesProductModelService extends CrudService<MesProductModelDao, MesProductModel> {
 
 	private final MesProductStorageRecordService mesProductStorageRecordService;
+	private final MesLineService mesLineService;
 
-	public MesProductModelService(MesProductStorageRecordService mesProductStorageRecordService) {
+	public MesProductModelService(MesProductStorageRecordService mesProductStorageRecordService, MesLineService mesLineService) {
 		this.mesProductStorageRecordService = mesProductStorageRecordService;
+		this.mesLineService = mesLineService;
 	}
 
 	/**
@@ -110,6 +113,34 @@ public class MesProductModelService extends CrudService<MesProductModelDao, MesP
 		return false;
 	}
 
+	// 检查工件码的正确性
+	public MesProductModel checkSnObj(String sn){
+		MesProductModel mesProductModel = new MesProductModel();
+		mesProductModel.setStatus("0");
+		List<MesProductModel> lists = findList(mesProductModel);
+		if(ListUtils.isEmpty(lists)){
+			return null;
+		}
+
+		for(MesProductModel mesProductModel2 : lists){
+			Boolean ret = CommonUitl.checkSnByModel(sn,mesProductModel2.getSpec(),mesProductModel2.getSpecStart(),mesProductModel2.getLength());
+			if(ret){
+				MesLine mesLine = new MesLine();
+				mesLine.setStatus("0");
+				mesLine.setProductCate(mesProductModel2.getCateSn());
+				MesLine mesLine1 = mesLineService.findInfo(mesLine);
+				if(ObjectUtils.isEmpty(mesLine1)){
+					mesProductModel2.setLineSn("");
+				}else{
+					mesProductModel2.setLineSn(mesLine1.getSn());
+				}
+				return mesProductModel2;
+			}
+		}
+
+		return null;
+	}
+
 	// 检查工件码是否同一类型
 	public boolean checkSnBySn(String sn){
 		MesProductModel mesProductModel = new MesProductModel();

+ 2 - 1
src/main/java/com/jeesite/modules/mes/service/MesProductPreConfigService.java

@@ -94,13 +94,14 @@ public class MesProductPreConfigService extends CrudService<MesProductPreConfigD
 	}
 
 
-	public MesProductPreConfig checkRuleCate(String Cate) {
+	public MesProductPreConfig checkRuleCate(String lineSn,String Cate) {
 		Date now = new Date();
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 		String currentTime = sdf.format(now);
 
 		MesProductPreConfig mesProductPreConfig = new MesProductPreConfig();
 		mesProductPreConfig.setCate(Cate);
+		mesProductPreConfig.setLineSn(lineSn);
 		mesProductPreConfig.setStatus("0");
 		mesProductPreConfig.getSqlMap().getWhere().and("a.start_date", QueryType.LTE,currentTime)
 						.and("a.end_date", QueryType.GTE,currentTime);

+ 16 - 6
src/main/java/com/jeesite/modules/mes/service/MesProductPreService.java

@@ -65,14 +65,20 @@ public class MesProductPreService extends CrudService<MesProductPreDao, MesProdu
 		return mesProductPreDao.findInfo(mesProductPre);
 	}
 
-	public String getNewSn(String cate){
+	public String getNewSn(String lineSn,String cate){
 		//500104004355C230001  cate=1
 		//0050010400435E6348245C120001   cate=2
+		String pre = "CZ060195";
+		String pre2 = "F956210325195AI2";
+		if(lineSn.equals("CZ061")){
+
+		}
+
 		String todayStr = CommonUitl.getYearLastChar()+CommonUitl.getMonthChar()+CommonUitl.getDayChar();
 		String sn = "";
 		String newSn = "";
 		// 检查当前是否配置规则
-		MesProductPreConfig mesProductPreConfig = mesProductPreConfigService.checkRuleCate(cate);
+		MesProductPreConfig mesProductPreConfig = mesProductPreConfigService.checkRuleCate(lineSn,cate);
 		if(!ObjectUtils.isEmpty(mesProductPreConfig)){
 			Integer isAuto = 0;
 			List<RuleResp> rules = JSON.parseArray(mesProductPreConfig.getContent(), RuleResp.class);
@@ -166,9 +172,9 @@ public class MesProductPreService extends CrudService<MesProductPreDao, MesProdu
 			}
 		}else{
 			if(cate.equals("1")){
-				sn = "50010400435" + todayStr;
+				sn = pre + todayStr;
 			}else if(cate.equals("2")){
-				sn = "0050010400435E634824" + todayStr;
+				sn = pre2 + todayStr;
 			}
 
 			int i = 0;
@@ -177,13 +183,14 @@ public class MesProductPreService extends CrudService<MesProductPreDao, MesProdu
 				MesProductPre mesProductPre = new MesProductPre();
 				mesProductPre.setStatus("0");
 				mesProductPre.setCate(cate);
+				mesProductPre.setLineSn(lineSn);
 				mesProductPre.getSqlMap().getWhere().and("a.sn", QueryType.RIGHT_LIKE,sn);
 				MesProductPre mesProductPre1 = this.findInfo(mesProductPre);
 				if(!ObjectUtils.isEmpty(mesProductPre1)){
 					if(cate.equals("1")){
-						String snDate = mesProductPre1.getSn().substring(11,15);
+						String snDate = mesProductPre1.getSn().substring(8,12);
 						if(snDate.equals(todayStr)){
-							int no = Integer.valueOf(mesProductPre1.getSn().substring(15,19));
+							int no = Integer.valueOf(mesProductPre1.getSn().substring(12,19));
 							number = no + 1 + i;
 						}
 					}else{
@@ -206,17 +213,20 @@ public class MesProductPreService extends CrudService<MesProductPreDao, MesProdu
 						mesProductPre2.setStatus("0");
 						mesProductPre2.setSn(newSn);
 						mesProductPre2.setCate(cate);
+						mesProductPre2.setLineSn(lineSn);
 						this.save(mesProductPre2);
 						break;
 					}
 				}else{
 					MesProductHmb mesProductHmb = new MesProductHmb();
 					mesProductHmb.setSn(newSn);
+					mesProductHmb.setLineSn(lineSn);
 					MesProductHmb mesProductHmb1 = mesProductHmbService.findInfo(mesProductHmb);
 					if(ObjectUtils.isEmpty(mesProductHmb1)){ // 不存在
 						MesProductPre mesProductPre2 = new MesProductPre();
 						mesProductPre2.setStatus("0");
 						mesProductPre2.setSn(newSn);
+						mesProductPre2.setLineSn(lineSn);
 						mesProductPre2.setCate(cate);
 						this.save(mesProductPre2);
 						break;

+ 67 - 45
src/main/java/com/jeesite/modules/mes/web/MesProductRecordController.java

@@ -538,18 +538,23 @@ public class MesProductRecordController extends BaseController {
 	@PostMapping(value = "save")
 	@ResponseBody
 	public String save(@Validated MesProductRecord mesProductRecord,HttpServletRequest request) {
-		if(mesProductRecord.getIsNewRecord() && mesProductRecord.getLineSn().isEmpty()){ // 新增
-			return renderResult(Global.FALSE, text("产线编号不能为空!"));
+//		if(mesProductRecord.getIsNewRecord() && mesProductRecord.getLineSn().isEmpty()){ // 新增
+//			return renderResult(Global.FALSE, text("产线编号不能为空!"));
+//		}
+
+		if(mesProductRecord.getIsNewRecord() && mesProductRecord.getSn().isEmpty()){ // 新增
+			return renderResult(Global.FALSE, text("工件码不能为空!"));
 		}
 
-		List<ParamsResp> params = new ArrayList<>();
-		if(mesProductRecord.getLineSn().equals("XT")){
-			if(mesProductRecord.getIsNewRecord() && mesProductRecord.getSn().isEmpty()){ // 新增
-				return renderResult(Global.FALSE, text("工件码不能为空!"));
-			}
-		}else{
+		MesProductModel mesProductModel = mesProductModelService.checkSnObj(mesProductRecord.getSn());
+		if(mesProductModel == null){
+			return renderResult(Global.FALSE, text("工件码格式错误!"));
 		}
 
+		mesProductRecord.setLineSn(mesProductModel.getLineSn());
+
+		List<ParamsResp> params = new ArrayList<>();
+
 		MesLine ml = new MesLine();
 		ml.setSn(mesProductRecord.getLineSn());
 		ml.setStatus("0");
@@ -563,16 +568,16 @@ public class MesProductRecordController extends BaseController {
 			return renderResult(Global.FALSE, text("产品编号重复!"));
 		}
 
-		// 检验工件码
-		String checkProductSn = Global.getConfig("mes.check.productSn");
-		if(checkProductSn.equals("1")){
-			if(!CommonUitl.checkProductSnQgx(mesProductRecord.getSn())){
-				return renderResult(Global.FALSE, text("工件码格式不正确!"));
-			}
-		}
+//		// 检验工件码
+//		String checkProductSn = Global.getConfig("mes.check.productSn");
+//		if(checkProductSn.equals("1")){
+//			if(!CommonUitl.checkProductSnQgx(mesProductRecord.getSn())){
+//				return renderResult(Global.FALSE, text("工件码格式不正确!"));
+//			}
+//		}
 
 		try{
-			mesProductRecord.setOprno("OP010");
+			mesProductRecord.setOprno("OP035");
 			mesProductRecord.setContent("OK");
 			mesProductRecord.setCateSn(cateSn);
 			List<MesLaserMaterial> mlists = new ArrayList<>();
@@ -2921,7 +2926,7 @@ public class MesProductRecordController extends BaseController {
 		}
 
 		// 生成镭雕码
-		String sn = mesProductPreService.getNewSn("1");
+		String sn = mesProductPreService.getNewSn(lineSn,"1");
 		if(sn.isEmpty()){
 			resp.setMessage("没有符合要求的镭雕码可生成");
 			return resp;
@@ -3119,13 +3124,19 @@ public class MesProductRecordController extends BaseController {
 		sn = mesProductHmbService.formatHmbSn(sn,oprno,lineSn);
 
 		try{
-			if(CommonUitl.formatOprno(oldOprno).equals("OP125")){ // 弧焊二序,检查后面板码是否已被绑定
+			if(CommonUitl.formatOprno(oldOprno).equals("OP115")){ // 弧焊二序,检查后面板码是否已被绑定
 				// 检验工件码
 				String checkProductSn = Global.getConfig("mes.check.productSn");
 				if(checkProductSn.equals("1")){
-					if(!CommonUitl.checkProductSnHmb(wsn)){
-						return renderResult(Global.FALSE, text("后面板码式不正确"));
+//					if(!CommonUitl.checkProductSnHmb(wsn)){
+//						return renderResult(Global.FALSE, text("后面板码式不正确"));
+//					}
+
+					MesProductModel mesProductModel = mesProductModelService.checkSnObj(wsn);
+					if(mesProductModel == null){
+						return renderResult(Global.FALSE, text("工件码格式错误!"));
 					}
+
 				}
 
 				// 检查前工件码是否已绑定后面板码
@@ -3152,6 +3163,7 @@ public class MesProductRecordController extends BaseController {
 				}
 
 				mesProductHmb1.setQsn(sn);
+				mesProductHmb1.setLineSn(lineSn);
 				mesProductHmbService.save(mesProductHmb1);
 			}
 			mesProductRecordService.updateRecord(sn,oldOprno,craft,wsn,"OK",userCode,lineSn);
@@ -3188,7 +3200,7 @@ public class MesProductRecordController extends BaseController {
 		sn = mesProductHmbService.formatHmbSn(sn,oprno,lineSn);
 
 		try{
-			if(CommonUitl.formatOprno(oldOprno).equals("OP125")){ // 弧焊二序,检查后面板码是否已被绑定
+			if(CommonUitl.formatOprno(oldOprno).equals("OP115")){ // 弧焊二序,检查后面板码是否已被绑定
 				MesProductHmb mesProductHmb = new MesProductHmb();
 				mesProductHmb.setSn(wsn);
 				mesProductHmb.setQsn(sn);
@@ -3293,8 +3305,8 @@ public class MesProductRecordController extends BaseController {
 		String checkret = ret.substring(3,5);
 		if(checkret.equals("UD")){
 			String newRet = "UD";
-			if(CommonUitl.formatOprno(oprno).equals("OP190")){
-				String check = Global.getConfig("mes.check.op190");
+			if(CommonUitl.formatOprno(oprno).equals("OP170")){
+				String check = Global.getConfig("mes.check.op170");
 				if(check.equals("1")){
 					MesProductOprno mesProductOprno = new MesProductOprno();
 					mesProductOprno.setSn(hmbSn);
@@ -3302,18 +3314,18 @@ public class MesProductRecordController extends BaseController {
 					mesProductOprno.setOprno(CommonUitl.formatOprno(oprno));
 					MesProductOprno mesProductOprno1 = mesProductOprnoService.findInfo(mesProductOprno);
 					if(ObjectUtils.isEmpty(mesProductOprno1)){
-						if(!oldOprno.equals("OP190A") && !oldOprno.equals("OP190B")){
+						if(!oldOprno.equals("OP170A") && !oldOprno.equals("OP170B")){
 							newRet = "QQ"; // 本工位前工序未加工或加工NG
 						}
 					}else{
-						if(oldOprno.equals("OP190C") || oldOprno.equals("OP190D")){
+						if(oldOprno.equals("OP170C") || oldOprno.equals("OP170D")){
 							if(StringUtils.isEmpty(mesProductOprno1.getResult1()) || !mesProductOprno1.getResult1().equals("OK")){
 								newRet = "QQ"; // 本工位前工序未加工或加工NG
 							}
 							if(StringUtils.isEmpty(mesProductOprno1.getResult2()) || !mesProductOprno1.getResult2().equals("OK")){
 								newRet = "QQ"; // 本工位前工序未加工或加工NG
 							}
-						} else if(oldOprno.equals("OP190E") || oldOprno.equals("OP190F")){
+						} else if(oldOprno.equals("OP170E") || oldOprno.equals("OP170F")){
 							if(StringUtils.isEmpty(mesProductOprno1.getResult1()) || !mesProductOprno1.getResult1().equals("OK")){
 								newRet = "QQ"; // 本工位前工序未加工或加工NG
 							}
@@ -3731,7 +3743,7 @@ public class MesProductRecordController extends BaseController {
 		User user = UserUtils.getUser();
 		String userCode = user.getUserCode();
 
-		if(CommonUitl.formatOprno(oldOprno).equals("OP210")){ // 半成品包装
+		if(CommonUitl.formatOprno(oldOprno).equals("OP195")){ // 半成品包装
 			// 检查追溯记录
 			MesProductRecord mesProductRecord = new MesProductRecord();
 			mesProductRecord.getSqlMap().getWhere().and("a.sn",QueryType.EQ,sn);
@@ -3843,7 +3855,7 @@ public class MesProductRecordController extends BaseController {
 		String userCode = user.getUserCode();
 
 		try{
-			if(CommonUitl.formatOprno(oldOprno).equals("OP210")){ // 半成品打包
+			if(CommonUitl.formatOprno(oldOprno).equals("OP195")){ // 半成品打包
 				String batchSn = request.getParameter("batchSn");  //批次码
 				String batchCount = Global.getConfig("mes.bcbatch.count");   //全局半成数量
 				if(batchCount.isEmpty()){
@@ -3892,7 +3904,7 @@ public class MesProductRecordController extends BaseController {
 
 				//打包:工件码与批次码绑定
 				List<String> dboprnos =  ListUtils.newArrayList();
-				dboprnos.add("OP280");
+				dboprnos.add("OP265");
 				if(dboprnos.contains(CommonUitl.formatOprno(oldOprno))){
 					String batchSn = request.getParameter("batchSn");  //批次码
 					//依据工件码查出对应mes_product
@@ -3942,7 +3954,7 @@ public class MesProductRecordController extends BaseController {
 //			String plcIp2 = "192.168.90.86"; // plc6 东侧
 //			String db = "DB7010.7.0";
 			// 西op055A
-			if (oldOprno.equals("OP055A")) {
+			if (oldOprno.equals("OP065A")) {
 //				S7PLC s7PLCWest = new S7PLC(EPlcType.S1500, plcIp1);
 //				s7PLCWest.writeBoolean(db, true);
 				Op55PlcSignal op55PlcSignal = op55PlcSignalService.get("123456");
@@ -4717,7 +4729,7 @@ public class MesProductRecordController extends BaseController {
 			return resp;
 		}
 		if("XT".equals(lineSn) && sn.length() == 28){
-			sn = mesProductHmbService.formatHmbSn(sn,"OP130",lineSn);
+			sn = mesProductHmbService.formatHmbSn(sn,"OP115",lineSn);
 		}
 
 		MesProductRecord mesProductRecord = mesProductRecordService.findBySnCate(sn,cate);
@@ -4736,16 +4748,26 @@ public class MesProductRecordController extends BaseController {
 	public CommonResp createProduct(HttpServletRequest request) {
 		CommonResp<String> resp = new CommonResp<>();
 		String sn = request.getParameter("sn");
-		String lineSn = request.getParameter("lineSn");
-		if(StringUtils.isEmpty(lineSn)){
-			lineSn = "XT"; // Compatibility with clients that only submit sn.
-		}
+
+
+//		String lineSn = request.getParameter("lineSn");
+//		if(StringUtils.isEmpty(lineSn)){
+//			lineSn = "XT"; // Compatibility with clients that only submit sn.
+//		}
 		if(StringUtils.isEmpty(sn)){
 			resp.setResult(Global.FALSE);
 			resp.setMessage("参数错误");
 			return resp;
 		}
 
+		MesProductModel mesProductModel = mesProductModelService.checkSnObj(sn);
+		if(mesProductModel == null){
+			resp.setResult(Global.FALSE);
+			resp.setMessage("工件码格式错误");
+			return resp;
+		}
+
+		String lineSn = mesProductModel.getLineSn();
 		String cate = mesLineService.findInfoCate(lineSn);
 		if(StringUtils.isEmpty(cate)){
 			resp.setResult(Global.FALSE);
@@ -4753,15 +4775,15 @@ public class MesProductRecordController extends BaseController {
 			return resp;
 		}
 
-		// 检验工件码
-		String checkProductSn = Global.getConfig("mes.check.productSn");
-		if(checkProductSn.equals("1")){
-			if(!CommonUitl.checkProductSnQgx(sn) && !CommonUitl.checkProductSnHmb(sn)){
-				resp.setResult(Global.FALSE);
-				resp.setMessage("工件码格式不正确");
-				return resp;
-			}
-		}
+//		// 检验工件码
+//		String checkProductSn = Global.getConfig("mes.check.productSn");
+//		if(checkProductSn.equals("1")){
+//			if(!CommonUitl.checkProductSnQgx(sn) && !CommonUitl.checkProductSnHmb(sn)){
+//				resp.setResult(Global.FALSE);
+//				resp.setMessage("工件码格式不正确");
+//				return resp;
+//			}
+//		}
 
 		MesProductRecord mesProductRecord2 = mesProductRecordService.findBySnCate(sn,cate);
 		if(!ObjectUtils.isEmpty(mesProductRecord2)){
@@ -4772,7 +4794,7 @@ public class MesProductRecordController extends BaseController {
 
 		MesProductRecord mesProductRecord = new MesProductRecord();
 		mesProductRecord.setSn(sn);
-		mesProductRecord.setOprno("OP010");
+		mesProductRecord.setOprno("OP035");
 		mesProductRecord.setLineSn(lineSn);
 		mesProductRecord.setContent("UDF");
 		mesProductRecord.setCateSn(cate);

+ 0 - 146
src/main/java/com/jeesite/modules/scheduling/ProductCcMid.java

@@ -1,146 +0,0 @@
-package com.jeesite.modules.scheduling;
-
-import com.jeesite.common.lang.DateUtils;
-import com.jeesite.common.lang.StringUtils;
-import com.jeesite.modules.mes.entity.MesProductCcdNxz;
-import com.jeesite.modules.mes.entity.MesProductCcdXz;
-import com.jeesite.modules.mes.service.MesProductCcdNxzService;
-import com.jeesite.modules.mes.service.MesProductCcdXzService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.scheduling.annotation.EnableScheduling;
-import org.springframework.scheduling.annotation.Scheduled;
-
-import java.io.File;
-import java.util.Date;
-
-/**
- * CCD检测记录定时采集任务
- */
-@Configuration
-@EnableScheduling
-public class ProductCcMid {
-
-    private final Logger logger = LoggerFactory.getLogger(this.getClass());
-
-    @Autowired
-    private MesProductCcdNxzService mesProductCcdNxzService;
-
-    private static final String ROOT_DIR = "D:\\mescloud\\userfiles\\ccdmid";
-
-    /**
-     * 定时任务:每 300 秒执行一次
-     */
-//    @Scheduled(fixedRate = 300000)
-    private void configureTasks() {
-        try {
-            // 1. 获取数据库中最新的测试时间作为基准
-            Date lastMaxTime = getLastMaxTestTime();
-
-            if (lastMaxTime == null) {
-                // 设置为当天的 00:00:00,确保当天的所有文件都能被扫描到
-                lastMaxTime = DateUtils.parseDate("2026-01-24 00:00:00", "yyyy-MM-dd HH:mm:ss");
-            }
-
-            File rootDir = new File(ROOT_DIR);
-            if (!rootDir.exists() || !rootDir.isDirectory()) {
-                logger.error("目标根目录不存在: {}", ROOT_DIR);
-                rootDir.mkdirs();
-                return;
-            }
-
-            File[] dateDirs = rootDir.listFiles();
-            if (dateDirs == null) return;
-
-            // 获取基准日期字符串 (yyyyMMdd)
-            String lastDateStr = DateUtils.formatDate(lastMaxTime, "yyyyMMdd");
-
-            for (File dateDir : dateDirs) {
-                // 简单校验文件夹名是否为8位数字日期
-                if (dateDir.isDirectory() && dateDir.getName().matches("\\d{8}")) {
-                    String dirDateStr = dateDir.getName();
-
-                    // 日期文件夹过滤
-                    // 如果文件夹日期 < 基准日期,直接跳过 (例如库里是26号,就不扫24号的文件夹了)
-                    if (dirDateStr.compareTo(lastDateStr) < 0) {
-                        continue;
-                    }
-
-                    processDateFolder(dateDir, lastMaxTime);
-                }
-            }
-
-        } catch (Exception e) {
-            logger.error("CCD采集任务异常", e);
-        }
-    }
-
-    /**
-     * 获取数据库中最新的时间
-     */
-    private Date getLastMaxTestTime() {
-        return mesProductCcdNxzService.findLastMaxTestTime("中间");
-    }
-
-    private void processDateFolder(File dateDir, Date lastMaxTime) {
-        File[] recordDirs = dateDir.listFiles();
-        if (recordDirs == null) return;
-
-        for (File subDir : recordDirs) {
-            if (!subDir.isDirectory()) continue;
-
-            try {
-                String folderName = subDir.getName();
-                // 格式: SN_yyyyMMddHHmmss
-                if (folderName.contains("_")) {
-                    String[] parts = folderName.split("_");
-                    if (parts.length >= 2) {
-                        String sn = parts[0];
-                        String timeStr = parts[1];
-
-                        // 解析时间
-                        Date currentRecordTime = DateUtils.parseDate(timeStr, "yyyyMMddHHmmss");
-                        if (currentRecordTime == null) continue;
-
-                        // 时间戳过滤
-                        // 这样如果时间等于 lastMaxTime,也会继续往下走去 saveToDb 进行精确查重,防止漏掉同一秒的数据
-                        if (lastMaxTime != null && currentRecordTime.before(lastMaxTime)) {
-                            continue;
-                        }
-
-                        saveToDb(sn, currentRecordTime);
-                    }
-                }
-            } catch (Exception e) {
-                logger.error("处理子文件夹出错: " + subDir.getName(), e);
-            }
-        }
-    }
-
-    /**
-     * 保存数据
-     */
-    private void saveToDb(String sn, Date testTime) {
-        if (StringUtils.isBlank(sn) || testTime == null) return;
-
-        // 查重逻辑必须包含时间!
-        // 只有当 SN 和 检测时间 都完全一致时,才认为是重复记录
-        MesProductCcdNxz query = new MesProductCcdNxz();
-        query.setSn(sn);
-        query.setTestTime(testTime); // 加上这一行
-        query.setCategory("中间");
-
-        long count = mesProductCcdNxzService.findCount(query);
-
-        if (count == 0) {
-            MesProductCcdNxz newRecord = new MesProductCcdNxz();
-            newRecord.setSn(sn);
-            newRecord.setTestTime(testTime);
-            newRecord.setCategory("中间");
-            mesProductCcdNxzService.save(newRecord);
-            // logger.info("入库: " + sn);
-        }
-    }
-}

+ 0 - 144
src/main/java/com/jeesite/modules/scheduling/ProductCcRights.java

@@ -1,144 +0,0 @@
-package com.jeesite.modules.scheduling;
-
-import com.jeesite.common.lang.DateUtils;
-import com.jeesite.common.lang.StringUtils;
-import com.jeesite.modules.mes.entity.MesProductCcdNxz;
-import com.jeesite.modules.mes.service.MesProductCcdNxzService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.scheduling.annotation.EnableScheduling;
-import org.springframework.scheduling.annotation.Scheduled;
-
-import java.io.File;
-import java.util.Date;
-
-/**
- * CCD检测记录定时采集任务
- */
-@Configuration
-@EnableScheduling
-public class ProductCcRights {
-
-    private final Logger logger = LoggerFactory.getLogger(this.getClass());
-
-    @Autowired
-    private MesProductCcdNxzService mesProductCcdNxzService;
-
-    private static final String ROOT_DIR = "D:\\mescloud\\userfiles\\ccdrights";
-
-    /**
-     * 定时任务:每 300 秒执行一次
-     */
-//    @Scheduled(fixedRate = 300000)
-    private void configureTasks() {
-        try {
-            // 1. 获取数据库中最新的测试时间作为基准
-            Date lastMaxTime = getLastMaxTestTime();
-
-            if (lastMaxTime == null) {
-                // 设置为当天的 00:00:00,确保当天的所有文件都能被扫描到
-                lastMaxTime = DateUtils.parseDate("2026-01-24 00:00:00", "yyyy-MM-dd HH:mm:ss");
-            }
-
-            File rootDir = new File(ROOT_DIR);
-            if (!rootDir.exists() || !rootDir.isDirectory()) {
-                logger.error("目标根目录不存在: {}", ROOT_DIR);
-                rootDir.mkdirs();
-                return;
-            }
-
-            File[] dateDirs = rootDir.listFiles();
-            if (dateDirs == null) return;
-
-            // 获取基准日期字符串 (yyyyMMdd)
-            String lastDateStr = DateUtils.formatDate(lastMaxTime, "yyyyMMdd");
-
-            for (File dateDir : dateDirs) {
-                // 简单校验文件夹名是否为8位数字日期
-                if (dateDir.isDirectory() && dateDir.getName().matches("\\d{8}")) {
-                    String dirDateStr = dateDir.getName();
-
-                    // 日期文件夹过滤
-                    // 如果文件夹日期 < 基准日期,直接跳过 (例如库里是26号,就不扫24号的文件夹了)
-                    if (dirDateStr.compareTo(lastDateStr) < 0) {
-                        continue;
-                    }
-
-                    processDateFolder(dateDir, lastMaxTime);
-                }
-            }
-
-        } catch (Exception e) {
-            logger.error("CCD采集任务异常", e);
-        }
-    }
-
-    /**
-     * 获取数据库中最新的时间
-     */
-    private Date getLastMaxTestTime() {
-        return mesProductCcdNxzService.findLastMaxTestTime("右上");
-    }
-
-    private void processDateFolder(File dateDir, Date lastMaxTime) {
-        File[] recordDirs = dateDir.listFiles();
-        if (recordDirs == null) return;
-
-        for (File subDir : recordDirs) {
-            if (!subDir.isDirectory()) continue;
-
-            try {
-                String folderName = subDir.getName();
-                // 格式: SN_yyyyMMddHHmmss
-                if (folderName.contains("_")) {
-                    String[] parts = folderName.split("_");
-                    if (parts.length >= 2) {
-                        String sn = parts[0];
-                        String timeStr = parts[1];
-
-                        // 解析时间
-                        Date currentRecordTime = DateUtils.parseDate(timeStr, "yyyyMMddHHmmss");
-                        if (currentRecordTime == null) continue;
-
-                        // 时间戳过滤
-                        // 这样如果时间等于 lastMaxTime,也会继续往下走去 saveToDb 进行精确查重,防止漏掉同一秒的数据
-                        if (lastMaxTime != null && currentRecordTime.before(lastMaxTime)) {
-                            continue;
-                        }
-
-                        saveToDb(sn, currentRecordTime);
-                    }
-                }
-            } catch (Exception e) {
-                logger.error("处理子文件夹出错: " + subDir.getName(), e);
-            }
-        }
-    }
-
-    /**
-     * 保存数据
-     */
-    private void saveToDb(String sn, Date testTime) {
-        if (StringUtils.isBlank(sn) || testTime == null) return;
-
-        // 查重逻辑必须包含时间!
-        // 只有当 SN 和 检测时间 都完全一致时,才认为是重复记录
-        MesProductCcdNxz query = new MesProductCcdNxz();
-        query.setSn(sn);
-        query.setTestTime(testTime); // 加上这一行
-        query.setCategory("右上");
-
-        long count = mesProductCcdNxzService.findCount(query);
-
-        if (count == 0) {
-            MesProductCcdNxz newRecord = new MesProductCcdNxz();
-            newRecord.setSn(sn);
-            newRecord.setTestTime(testTime);
-            newRecord.setCategory("右上");
-            mesProductCcdNxzService.save(newRecord);
-            // logger.info("入库: " + sn);
-        }
-    }
-}

+ 0 - 144
src/main/java/com/jeesite/modules/scheduling/ProductCcRightx.java

@@ -1,144 +0,0 @@
-package com.jeesite.modules.scheduling;
-
-import com.jeesite.common.lang.DateUtils;
-import com.jeesite.common.lang.StringUtils;
-import com.jeesite.modules.mes.entity.MesProductCcdNxz;
-import com.jeesite.modules.mes.service.MesProductCcdNxzService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.scheduling.annotation.EnableScheduling;
-import org.springframework.scheduling.annotation.Scheduled;
-
-import java.io.File;
-import java.util.Date;
-
-/**
- * CCD检测记录定时采集任务
- */
-@Configuration
-@EnableScheduling
-public class ProductCcRightx {
-
-    private final Logger logger = LoggerFactory.getLogger(this.getClass());
-
-    @Autowired
-    private MesProductCcdNxzService mesProductCcdNxzService;
-
-    private static final String ROOT_DIR = "D:\\mescloud\\userfiles\\ccdrightx";
-
-    /**
-     * 定时任务:每 300 秒执行一次
-     */
-//    @Scheduled(fixedRate = 300000)
-    private void configureTasks() {
-        try {
-            // 1. 获取数据库中最新的测试时间作为基准
-            Date lastMaxTime = getLastMaxTestTime();
-
-            if (lastMaxTime == null) {
-                // 设置为当天的 00:00:00,确保当天的所有文件都能被扫描到
-                lastMaxTime = DateUtils.parseDate("2026-01-24 00:00:00", "yyyy-MM-dd HH:mm:ss");
-            }
-
-            File rootDir = new File(ROOT_DIR);
-            if (!rootDir.exists() || !rootDir.isDirectory()) {
-                logger.error("目标根目录不存在: {}", ROOT_DIR);
-                rootDir.mkdirs();
-                return;
-            }
-
-            File[] dateDirs = rootDir.listFiles();
-            if (dateDirs == null) return;
-
-            // 获取基准日期字符串 (yyyyMMdd)
-            String lastDateStr = DateUtils.formatDate(lastMaxTime, "yyyyMMdd");
-
-            for (File dateDir : dateDirs) {
-                // 简单校验文件夹名是否为8位数字日期
-                if (dateDir.isDirectory() && dateDir.getName().matches("\\d{8}")) {
-                    String dirDateStr = dateDir.getName();
-
-                    // 日期文件夹过滤
-                    // 如果文件夹日期 < 基准日期,直接跳过 (例如库里是26号,就不扫24号的文件夹了)
-                    if (dirDateStr.compareTo(lastDateStr) < 0) {
-                        continue;
-                    }
-
-                    processDateFolder(dateDir, lastMaxTime);
-                }
-            }
-
-        } catch (Exception e) {
-            logger.error("CCD采集任务异常", e);
-        }
-    }
-
-    /**
-     * 获取数据库中最新的时间
-     */
-    private Date getLastMaxTestTime() {
-        return mesProductCcdNxzService.findLastMaxTestTime("右下");
-    }
-
-    private void processDateFolder(File dateDir, Date lastMaxTime) {
-        File[] recordDirs = dateDir.listFiles();
-        if (recordDirs == null) return;
-
-        for (File subDir : recordDirs) {
-            if (!subDir.isDirectory()) continue;
-
-            try {
-                String folderName = subDir.getName();
-                // 格式: SN_yyyyMMddHHmmss
-                if (folderName.contains("_")) {
-                    String[] parts = folderName.split("_");
-                    if (parts.length >= 2) {
-                        String sn = parts[0];
-                        String timeStr = parts[1];
-
-                        // 解析时间
-                        Date currentRecordTime = DateUtils.parseDate(timeStr, "yyyyMMddHHmmss");
-                        if (currentRecordTime == null) continue;
-
-                        // 时间戳过滤
-                        // 这样如果时间等于 lastMaxTime,也会继续往下走去 saveToDb 进行精确查重,防止漏掉同一秒的数据
-                        if (lastMaxTime != null && currentRecordTime.before(lastMaxTime)) {
-                            continue;
-                        }
-
-                        saveToDb(sn, currentRecordTime);
-                    }
-                }
-            } catch (Exception e) {
-                logger.error("处理子文件夹出错: " + subDir.getName(), e);
-            }
-        }
-    }
-
-    /**
-     * 保存数据
-     */
-    private void saveToDb(String sn, Date testTime) {
-        if (StringUtils.isBlank(sn) || testTime == null) return;
-
-        // 查重逻辑必须包含时间!
-        // 只有当 SN 和 检测时间 都完全一致时,才认为是重复记录
-        MesProductCcdNxz query = new MesProductCcdNxz();
-        query.setSn(sn);
-        query.setTestTime(testTime); // 加上这一行
-        query.setCategory("右下");
-
-        long count = mesProductCcdNxzService.findCount(query);
-
-        if (count == 0) {
-            MesProductCcdNxz newRecord = new MesProductCcdNxz();
-            newRecord.setSn(sn);
-            newRecord.setTestTime(testTime);
-            newRecord.setCategory("右下");
-            mesProductCcdNxzService.save(newRecord);
-            // logger.info("入库: " + sn);
-        }
-    }
-}

+ 2 - 2
src/main/resources/config/application.yml

@@ -56,9 +56,9 @@ jdbc:
   driver: com.mysql.cj.jdbc.Driver
 
 #  url: jdbc:mysql://39.106.12.131:3306/mes_cloud_xz?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
-#  url: jdbc:mysql://127.0.0.1:3306/mes_cloud_xz?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
+  url: jdbc:mysql://127.0.0.1:3306/mes_cloud_xz?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
 #  url: jdbc:mysql://192.168.17.170:3306/mes_cloud_xz?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
-  url: jdbc:mysql://192.168.100.128:3307/mes_cloud_xz?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
+#  url: jdbc:mysql://192.168.100.128:3307/mes_cloud_xz?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
 
 #  username: mes_cloud_xz
 #  password: 2hNY3YMe2BGbCXLS

+ 11 - 2
src/main/resources/views/modules/mes/mesProductModelForm.html

@@ -1,4 +1,4 @@
-<% layout('/layouts/default.html', {title: '产品型号表管理', libs: ['validate']}){ %>
+<% layout('/layouts/default.html', {title: '产品型号管理', libs: ['validate']}){ %>
 <div class="main-content">
 	<div class="box box-main">
 		<div class="box-header with-border">
@@ -17,6 +17,15 @@
 					<div class="col-xs-6">
 						<div class="form-group">
 							<label class="control-label col-sm-4" title="">
+								<span class="required hide">*</span> ${text('工件类型')}:<i class="fa icon-question hide"></i></label>
+							<div class="col-sm-8">
+								<#form:input path="cateSn" maxlength="255" class="form-control"/>
+							</div>
+						</div>
+					</div>
+					<div class="col-xs-6">
+						<div class="form-group">
+							<label class="control-label col-sm-4" title="">
 								<span class="required hide">*</span> ${text('名称')}:<i class="fa icon-question hide"></i></label>
 							<div class="col-sm-8">
 								<#form:input path="title" maxlength="255" class="form-control"/>
@@ -62,7 +71,7 @@
 					<div class="col-xs-6">
 						<div class="form-group">
 							<label class="control-label col-sm-4" title="">
-								<span class="required hide">*</span> ${text('入库数量')}:<i class="fa icon-question hide"></i></label>
+								<span class="required hide">*</span> ${text('打包数量')}:<i class="fa icon-question hide"></i></label>
 							<div class="col-sm-8">
 								<#form:input path="nums" maxlength="8" class="form-control digits"/>
 							</div>

+ 10 - 9
src/main/resources/views/modules/mes/mesProductModelList.html

@@ -1,9 +1,9 @@
-<% layout('/layouts/default.html', {title: '产品型号表管理', libs: ['dataGrid']}){ %>
+<% layout('/layouts/default.html', {title: '产品型号管理', libs: ['dataGrid']}){ %>
 <div class="main-content">
 	<div class="box box-main">
 		<div class="box-header">
 			<div class="box-title">
-				<i class="fa icon-notebook"></i> ${text('产品型号表管理')}
+				<i class="fa icon-notebook"></i> ${text('产品型号管理')}
 			</div>
 			<div class="box-tools pull-right">
 				<a href="#" class="btn btn-default" id="btnSearch" title="${text('查询')}"><i class="fa fa-filter"></i> ${text('查询')}</a>
@@ -29,9 +29,9 @@
 					</div>
 				</div>
 				<div class="form-group">
-					<label class="control-label">${text('规格')}:</label>
+					<label class="control-label">${text('工件类型')}:</label>
 					<div class="control-inline">
-						<#form:input path="spec" maxlength="255" class="form-control width-120"/>
+						<#form:input path="cateSn" maxlength="255" class="form-control width-120"/>
 					</div>
 				</div>
 				<div class="form-group">
@@ -50,12 +50,13 @@
 $('#dataGrid').dataGrid({
 	searchForm: $("#searchForm"),
 	columnModel: [
-		{header:'${text("名称")}', name:'title', index:'a.title', width:220, align:"center", frozen:true},
+		{header:'${text("工件类型")}', name:'cateSn', index:'a.cate_sn', width:120, align:"center", frozen:true},
+		{header:'${text("名称")}', name:'title', index:'a.title', width:220, align:"center"},
 		{header:'${text("型号")}', name:'model', index:'a.model', width:150, align:"center"},
-		{header:'${text("规格")}', name:'spec', index:'a.spec', width:150, align:"center"},
-		{header:'${text("规格起始位数")}', name:'specStart', index:'a.spec_start', width:150, align:"center"},
-		{header:'${text("条码长度")}', name:'length', index:'a.length', width:150, align:"center"},
-		{header:'${text("入库数量")}', name:'nums', index:'a.nums', width:150, align:"center"},
+		{header:'${text("规格")}', name:'spec', index:'a.spec', width:250, align:"center"},
+		{header:'${text("规格起始位数")}', name:'specStart', index:'a.spec_start', width:120, align:"center"},
+		{header:'${text("条码长度")}', name:'length', index:'a.length', width:120, align:"center"},
+		{header:'${text("打包数量")}', name:'nums', index:'a.nums', width:150, align:"center"},
 		{header:'${text("更新日期")}', name:'updateDate', index:'a.update_date', width:180, align:"center"},
 		{header:'${text("操作")}', name:'actions', width:120, formatter: function(val, obj, row, act){
 			var actions = [];

+ 10 - 10
src/main/resources/views/modules/mes/mesProductRecordForm.html

@@ -14,16 +14,16 @@
 				<div class="form-unit">${text('基本信息')}</div>
 				<#form:hidden path="id"/>
 				<div class="row">
-					<div class="col-xs-12">
-						<div class="form-group">
-							<label class="control-label col-sm-2" title="">
-								<span class="required hide">*</span> ${text('产线')}:<i class="fa icon-question hide"></i></label>
-							<div class="col-sm-8">
-								<label for="xtbox"> <input id="xtbox" type="radio" name="lineSn" value="XT" checked onclick="selectLineSn(1)"> 箱体 </label> &nbsp;&nbsp;
-<!--								<label for="lbbox"> <input id="lbbox" type="radio" name="lineSn" value="LB" onclick="selectLineSn(2)"> 液冷板 </label>-->
-							</div>
-						</div>
-					</div>
+<!--					<div class="col-xs-12">-->
+<!--						<div class="form-group">-->
+<!--							<label class="control-label col-sm-2" title="">-->
+<!--								<span class="required hide">*</span> ${text('产线')}:<i class="fa icon-question hide"></i></label>-->
+<!--							<div class="col-sm-8">-->
+<!--								<label for="xtbox"> <input id="xtbox" type="radio" name="lineSn" value="XT" checked onclick="selectLineSn(1)"> 箱体 </label> &nbsp;&nbsp;-->
+<!--&lt;!&ndash;								<label for="lbbox"> <input id="lbbox" type="radio" name="lineSn" value="LB" onclick="selectLineSn(2)"> 液冷板 </label>&ndash;&gt;-->
+<!--							</div>-->
+<!--						</div>-->
+<!--					</div>-->
 					<div id="xt" class="col-xs-12">
 						<div class="form-group">
 							<label class="control-label col-sm-2" title="">