Explorar el Código

硬度模块,短信新增模版,订单优化,工序优化

sunxianglong hace 3 meses
padre
commit
b828c40a2c

+ 12 - 0
src/main/java/com/jeesite/modules/erp/entity/MesProductOrder.java

@@ -23,6 +23,7 @@ import com.jeesite.modules.mes.entity.MesMaterialBl;
 @Table(name="mes_product_order", alias="a", label="生产订单信息", columns={
 		@Column(name="id", attrName="id", label="id", isPK=true),
 		@Column(name="sn", attrName="sn", label="订单编号"),
+		@Column(name="lot_code", attrName="lotCode", label="入库批号"),
 		@Column(name="line_sn", attrName="lineSn", label="产线编号"),
 //		@Column(name="doc_line_no", attrName="docLineNo", label="行号"),
 		@Column(name="nums", attrName="nums", label="生产数量", isUpdateForce=true),
@@ -41,6 +42,8 @@ public class MesProductOrder extends DataEntity<MesProductOrder> {
 
 	private static final long serialVersionUID = 1L;
 	private String sn;		// 订单编号
+
+	private String lotCode;  //入库批号
 	private String lineSn;		// 产线编号
 //	private String docLineNo;   //行号
 	private Integer nums;		// 生产数量
@@ -51,6 +54,15 @@ public class MesProductOrder extends DataEntity<MesProductOrder> {
 
 	private List<MesMaterialBl> list; //备料列表
 
+	@Size(min=0, max=64, message="入库批号长度不能超过 64 个字符")
+	public String getLotCode() {
+		return lotCode;
+	}
+
+	public void setLotCode(String lotCode) {
+		this.lotCode = lotCode;
+	}
+
 	public List<MesMaterialBl> getList() {
 		return list;
 	}

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

@@ -35,7 +35,7 @@ import com.jeesite.common.utils.excel.annotation.ExcelFields;
 		@Column(name="spare_part_name", attrName="sparePartName", label="备件名称"),
 		@Column(name="quantity", attrName="quantity", label="数量"),
 		@Column(name="repair_user", attrName="repairUser", label="维修人", isQuery=true),
-		@Column(name="acceptance_result", attrName="acceptanceResult", label="验收结果"),
+		@Column(name="acceptance_result", attrName="acceptanceResult", label="验收结果", isQuery=true),
 		@Column(name="remarks", attrName="remarks", 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),

+ 12 - 0
src/main/java/com/jeesite/modules/mes/entity/MesHardness.java

@@ -1,5 +1,7 @@
 package com.jeesite.modules.mes.entity;
 
+import com.jeesite.common.collect.ListUtils;
+import com.jeesite.common.collect.MapUtils;
 import com.jeesite.common.entity.DataEntity;
 import com.jeesite.common.mybatis.annotation.Column;
 import com.jeesite.common.mybatis.annotation.Table;
@@ -10,6 +12,7 @@ import com.jeesite.common.utils.excel.annotation.ExcelFields;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.Size;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 硬度检测Entity
@@ -49,6 +52,7 @@ public class MesHardness extends DataEntity<MesHardness> {
 	private String unit;			// 测量单位
 	private Date measureDate;		// 测量日期
 	private String remark;			// 备注
+	private List imgList = ListUtils.newArrayList(); // 图片
 
 	@ExcelFields({
 			@ExcelField(title="工件码", attrName="sn", align= ExcelField.Align.CENTER, sort=10),
@@ -163,6 +167,14 @@ public class MesHardness extends DataEntity<MesHardness> {
 		this.remark = remark;
 	}
 
+	public List getImgList() {
+		return imgList;
+	}
+
+	public void setImgList(List imgList) {
+		this.imgList = imgList;
+	}
+
 	public Date getMeasureDate_gte() {
 		return sqlMap.getWhere().getValue("measure_date", QueryType.GTE);
 	}

+ 23 - 24
src/main/java/com/jeesite/modules/mes/service/MesHardnessService.java

@@ -41,14 +41,15 @@ public class MesHardnessService extends CrudService<MesHardnessDao, MesHardness>
 
 	/**
 	 * PDA端新增硬度检测记录
-	 * @param sn       工件码(必填)
-	 * @param value1   实测值1(必填)
-	 * @param value2   实测值2(必填)
-	 * @param value3   实测值3(必填)
-	 * @param remark   备注(可空)
 	 */
 	@Transactional
-	public MesHardness saveFromPda(String sn, Integer value1, Integer value2, Integer value3, String remark) {
+	public MesHardness saveFromPda(MesHardness mesHardness) {
+		String sn = mesHardness.getSn().trim();
+		Integer value1 = mesHardness.getActualValue1();
+		Integer value2 = mesHardness.getActualValue2();
+		Integer value3 = mesHardness.getActualValue3();
+		String remark = mesHardness.getRemark();
+
 		// 获取标准值配置
 		MesHardnessConfig config = mesHardnessConfigService.getConfig();
 		String standardOp = config != null ? config.getStandardOp() : null;
@@ -63,7 +64,7 @@ public class MesHardnessService extends CrudService<MesHardnessDao, MesHardness>
 		}
 
 		// 计算平均值(取整)
-		int avg = Math.round((value1 + value2 + value3) / 3.0f);
+		int avg =  Math.round((value1 + value2 + value3) / 3.0f);
 
 		// 逐一比较三个实测值与标准值,全部合格才为"合格"
 		boolean allPass = true;
@@ -74,23 +75,21 @@ public class MesHardnessService extends CrudService<MesHardnessDao, MesHardness>
 		}
 		String result = allPass ? "合格" : "不合格";
 
-		// 构建实体
-		MesHardness hardness = new MesHardness();
-		hardness.setIsNewRecord(true);
-		hardness.setSn(sn);
-		hardness.setStandardValue(standardValueStr);
-		hardness.setActualValue1(value1);
-		hardness.setActualValue2(value2);
-		hardness.setActualValue3(value3);
-		hardness.setAvgValue(avg);
-		hardness.setResult(result);
-		hardness.setType("T5后硬度检测");
-		hardness.setUnit("HB");
-		hardness.setMeasureDate(new Date());
-		hardness.setRemark(remark);
-
-		super.save(hardness);
-		return hardness;
+		mesHardness.setIsNewRecord(true);
+		mesHardness.setSn(sn);
+		mesHardness.setStandardValue(standardValueStr);
+		mesHardness.setActualValue1(value1);
+		mesHardness.setActualValue2(value2);
+		mesHardness.setActualValue3(value3);
+		mesHardness.setAvgValue(avg);
+		mesHardness.setResult(result);
+		mesHardness.setType("T5后硬度检测");
+		mesHardness.setUnit("HB");
+		mesHardness.setMeasureDate(new Date());
+		mesHardness.setRemark(remark);
+
+		super.save(mesHardness);
+		return mesHardness;
 	}
 
 	/**

+ 45 - 0
src/main/java/com/jeesite/modules/mes/service/MesProductRecordService.java

@@ -729,6 +729,11 @@ public class MesProductRecordService extends CrudService<MesProductRecordDao, Me
 			}
 		}
 
+		// OP090 工位结果提交 OK 时,同步将 OP100 工位结果改为 OK
+		if ("OP090".equals(oprno) && "OK".equals(content) && "100000".equals(craft)) {
+			syncOp100ResultOk(sn, lineSn, userCode);
+		}
+
 		// 是否更新工位时间
 		if(optime){
 			String sns = sn;
@@ -831,6 +836,46 @@ public class MesProductRecordService extends CrudService<MesProductRecordDao, Me
 
 	}
 
+	/**
+	 * OP090 提交 OK 后,将同工件 OP100(含 OP100A/B/C)工位结果改为 OK
+	 */
+	private void syncOp100ResultOk(String sn, String lineSn, String userCode) {
+		MesProductRecord query = new MesProductRecord();
+		query.setSn(sn);
+		query.setLineSn(lineSn);
+		query.setCraft("100000");
+		query.getSqlMap().getWhere().and("a.oprno", QueryType.RIGHT_LIKE, "OP100");
+		List<MesProductRecord> op100List = findList(query);
+		if (ListUtils.isEmpty(op100List)) {
+			return;
+		}
+		for (MesProductRecord record : op100List) {
+			String oldContent = record.getContent();
+			if ("OK".equals(oldContent)) {
+				continue;
+			}
+			record.setContent("OK");
+			record.setSource("0");
+			if (!StringUtils.isEmpty(userCode)) {
+				record.setUpdateBy(userCode);
+			}
+			super.update(record);
+
+			MesProductModifyRecord modifyRecord = new MesProductModifyRecord();
+			modifyRecord.setOprno(record.getOprno());
+			modifyRecord.setSn(record.getSn());
+			modifyRecord.setCraft(record.getCraft());
+			modifyRecord.setLineSn(record.getLineSn());
+			modifyRecord.setContent("OK");
+			modifyRecord.setContentOld(oldContent);
+			modifyRecord.setSource("0");
+			modifyRecord.setMaterielSn(record.getMaterielSn());
+			modifyRecord.setCreateBy(userCode);
+			modifyRecord.setUpdateBy(userCode);
+			mesProductModifyRecordService.save(modifyRecord);
+		}
+	}
+
 	// 获取模板的ID
 	public String getTemplateItemId(String cateSn,String oldoprno,String craft){
 		String tid = "";

+ 24 - 0
src/main/java/com/jeesite/modules/mes/util/TencentSmsUtil.java

@@ -26,6 +26,10 @@ public class TencentSmsUtil {
 	private static final String DEFAULT_SECRET_KEY = "oNgjW5P7dtuhEVWHm21kCOK9j37xc2EB";
 	private static final String DEFAULT_SMS_SDK_APP_ID = "1401151057";
 	private static final String DEFAULT_TEMPLATE_ID = "2680295";
+	/** 模板 ID:2683304 */
+	private static final String TEMPLATE_ID_2683304 = "2683304";
+	/** 模板 ID:2683305 */
+	private static final String TEMPLATE_ID_2683305 = "2683305";
 	private static final String DEFAULT_SIGN_NAME = "山东鲁匠人新能源科技";
 
 	private TencentSmsUtil() {
@@ -42,6 +46,26 @@ public class TencentSmsUtil {
 	}
 
 	/**
+	 * 发送短信(模板 2683304,无模板参数)
+	 *
+	 * @param phoneNumber 手机号
+	 * @return 发送响应
+	 */
+	public static SendSmsResponse sendSmsByTemplate2683304(String phoneNumber) throws TencentCloudSDKException {
+		return sendSms(new String[]{phoneNumber}, null, DEFAULT_SMS_SDK_APP_ID, TEMPLATE_ID_2683304, DEFAULT_SIGN_NAME);
+	}
+
+	/**
+	 * 发送短信(模板 2683305,无模板参数)
+	 *
+	 * @param phoneNumber 手机号
+	 * @return 发送响应
+	 */
+	public static SendSmsResponse sendSmsByTemplate2683305(String phoneNumber) throws TencentCloudSDKException {
+		return sendSms(new String[]{phoneNumber}, null, DEFAULT_SMS_SDK_APP_ID, TEMPLATE_ID_2683305, DEFAULT_SIGN_NAME);
+	}
+
+	/**
 	 * 发送短信(使用默认 AppId、模板、签名)
 	 *
 	 * @param phoneNumbers    手机号数组

+ 79 - 24
src/main/java/com/jeesite/modules/mes/web/MesFlawRecordController.java

@@ -85,44 +85,40 @@ public class MesFlawRecordController extends BaseController {
 	}
 
 	/**
-	 * 查询列表数据
+	 * 查询列表数据(仅返回磁盘上存在探伤图片的记录)
 	 */
 	@RequiresPermissions("mes:mesProductRecord:view")
 	@RequestMapping(value = "listData")
 	@ResponseBody
 	public Page<MesProductRecord> listData(MesProductRecord mesProductRecord, HttpServletRequest request, HttpServletResponse response) {
-		Page page1 = new Page<>(request, response);
-		mesProductRecord.setPage(page1);
-		mesProductRecord.getSqlMap().getOrder().setOrderBy("a.id DESC");
-		// 固定过滤OP070工位
-		mesProductRecord.getSqlMap().getWhere().and("oprno", QueryType.EQ, "OP070");
-		// 如果查询状态的值为 1, 表示用户选择查询 已加工
-		if("1".equals(mesProductRecord.getProcessState()) && "".equals(mesProductRecord.getContent()))
-			mesProductRecord.getSqlMap().getWhere().and("content", QueryType.NE, "UDF");
-		// 如果查询状态的值为 0, 表示用户选择查询 未加工
-		else if ("0".equals(mesProductRecord.getProcessState()) && "".equals(mesProductRecord.getContent()))
-			mesProductRecord.getSqlMap().getWhere().and("content", QueryType.EQ, "UDF");
-		Page<MesProductRecord> page = mesProductRecordService.findPage(mesProductRecord);
-		for (int i = 0; i < page.getList().size(); i++) {
-			MesTemplateItems mesTemplateItems = new MesTemplateItems();
-			mesTemplateItems.setId(page.getList().get(i).getTid());
-			MesTemplateItems mt = mesTemplateItemsService.get(mesTemplateItems);
-			if (!ObjectUtils.isEmpty(mt)) {
-				page.getList().get(i).setMessageType(mt.getCate());
-				page.getList().get(i).setTitle(mt.getTitle());
-			}
+		Page<MesProductRecord> page = new Page<>(request, response);
+		applyListQuery(mesProductRecord);
+		// 图片在磁盘上,需先查出再过滤,再手动分页
+		mesProductRecord.setPage(null);
+		List<MesProductRecord> withImages = filterRecordsWithImages(mesProductRecordService.findList(mesProductRecord));
+		int pageNo = page.getPageNo() < 1 ? 1 : page.getPageNo();
+		int pageSize = page.getPageSize() < 1 ? 20 : page.getPageSize();
+		int fromIndex = (pageNo - 1) * pageSize;
+		List<MesProductRecord> pageList = fromIndex >= withImages.size()
+				? new ArrayList<>()
+				: new ArrayList<>(withImages.subList(fromIndex, Math.min(fromIndex + pageSize, withImages.size())));
+		for (MesProductRecord record : pageList) {
+			fillTemplateInfo(record);
 		}
+		page.setCount(withImages.size());
+		page.setList(pageList);
 		return page;
 	}
 
 	/**
-	 * 导出数据
+	 * 导出数据(仅导出有探伤图片的记录)
 	 */
 	@RequiresPermissions("mes:mesProductRecord:view")
 	@RequestMapping(value = "exportData")
 	public void exportData(MesProductRecord mesProductRecord, HttpServletResponse response) {
-		mesProductRecord.getSqlMap().getWhere().and("oprno", QueryType.EQ, "OP070");
-		java.util.List<MesProductRecord> list = mesProductRecordService.findList(mesProductRecord);
+		applyListQuery(mesProductRecord);
+		mesProductRecord.setPage(null);
+		List<MesProductRecord> list = filterRecordsWithImages(mesProductRecordService.findList(mesProductRecord));
 		String fileName = "探伤记录" + com.jeesite.common.lang.DateUtils.getDate("yyyyMMddHHmmss") + ".xlsx";
 		try (com.jeesite.common.utils.excel.ExcelExport ee = new com.jeesite.common.utils.excel.ExcelExport("探伤记录", MesProductRecord.class)) {
 			ee.setDataList(list).write(response, fileName);
@@ -130,6 +126,65 @@ public class MesFlawRecordController extends BaseController {
 	}
 
 	/**
+	 * 列表/导出公共查询条件
+	 */
+	private void applyListQuery(MesProductRecord mesProductRecord) {
+		mesProductRecord.getSqlMap().getOrder().setOrderBy("a.id DESC");
+		mesProductRecord.getSqlMap().getWhere().and("oprno", QueryType.EQ, "OP070");
+		if ("1".equals(mesProductRecord.getProcessState()) && "".equals(mesProductRecord.getContent())) {
+			mesProductRecord.getSqlMap().getWhere().and("content", QueryType.NE, "UDF");
+		} else if ("0".equals(mesProductRecord.getProcessState()) && "".equals(mesProductRecord.getContent())) {
+			mesProductRecord.getSqlMap().getWhere().and("content", QueryType.EQ, "UDF");
+		}
+	}
+
+	/**
+	 * 过滤出磁盘上存在 jpg/jpeg 探伤图片的记录
+	 */
+	private List<MesProductRecord> filterRecordsWithImages(List<MesProductRecord> records) {
+		List<MesProductRecord> result = new ArrayList<>();
+		if (records == null) {
+			return result;
+		}
+		for (MesProductRecord record : records) {
+			if (hasPhotoImages(record.getSn(), record.getUpdateDate())) {
+				result.add(record);
+			}
+		}
+		return result;
+	}
+
+	private void fillTemplateInfo(MesProductRecord record) {
+		if (record == null || record.getTid() == null) {
+			return;
+		}
+		MesTemplateItems mesTemplateItems = new MesTemplateItems();
+		mesTemplateItems.setId(record.getTid());
+		MesTemplateItems mt = mesTemplateItemsService.get(mesTemplateItems);
+		if (!ObjectUtils.isEmpty(mt)) {
+			record.setMessageType(mt.getCate());
+			record.setTitle(mt.getTitle());
+		}
+	}
+
+	/**
+	 * 判断工件码在对应日期范围内是否存在探伤图片
+	 */
+	private boolean hasPhotoImages(String sn, Date updateDate) {
+		List<File> dirs = findPhotoDirs(sn, updateDate);
+		for (File dir : dirs) {
+			File[] files = dir.listFiles((d, name) -> {
+				String lower = name.toLowerCase();
+				return lower.endsWith(".jpg") || lower.endsWith(".jpeg");
+			});
+			if (files != null && files.length > 0) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
 	 * 查看详情
 	 */
 	@RequiresPermissions("mes:mesProductRecord:view")

+ 81 - 11
src/main/java/com/jeesite/modules/mes/web/MesHardnessController.java

@@ -1,12 +1,19 @@
 package com.jeesite.modules.mes.web;
 
 import com.jeesite.common.config.Global;
+import com.jeesite.common.collect.ListUtils;
+import com.jeesite.common.collect.MapUtils;
 import com.jeesite.common.entity.Page;
 import com.jeesite.common.lang.DateUtils;
+import com.jeesite.common.lang.StringUtils;
 import com.jeesite.common.utils.excel.ExcelExport;
 import com.jeesite.common.web.BaseController;
+import com.jeesite.modules.file.entity.FileUpload;
+import com.jeesite.modules.file.service.FileUploadService;
+import com.jeesite.modules.file.utils.FileUploadUtils;
 import com.jeesite.modules.mes.entity.MesHardness;
 import com.jeesite.modules.mes.entity.MesHardnessConfig;
+import com.jeesite.modules.mes.resp.CommonResp;
 import com.jeesite.modules.mes.service.MesHardnessConfigService;
 import com.jeesite.modules.mes.service.MesHardnessService;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -21,6 +28,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 硬度检测Controller
@@ -37,6 +45,9 @@ public class MesHardnessController extends BaseController {
 	@Autowired
 	private MesHardnessConfigService mesHardnessConfigService;
 
+	@Autowired
+	private FileUploadService fileUploadService;
+
 	@ModelAttribute
 	public MesHardness get(String id, boolean isNewRecord) {
 		return mesHardnessService.get(id, isNewRecord);
@@ -91,23 +102,82 @@ public class MesHardnessController extends BaseController {
 
 	/**
 	 * PDA端新增硬度检测记录
-	 * @param sn     工件码(必填)
-	 * @param value1 实测值1(必填)
-	 * @param value2 实测值2(必填)
-	 * @param value3 实测值3(必填)
-	 * @param remark 备注(可空)
 	 */
-	@RequestMapping(value = "pdaSave")
+	@PostMapping(value = "pdaSave")
 	@ResponseBody
-	public String pdaSave(String sn, Integer value1, Integer value2, Integer value3, String remark) {
-		if (sn == null || sn.trim().isEmpty()) {
+	public String pdaSave(MesHardness mesHardness, HttpServletRequest request) {
+		if (mesHardness == null || mesHardness.getSn() == null || mesHardness.getSn().trim().isEmpty()) {
 			return renderResult(Global.FALSE, "工件码不能为空");
 		}
-		if (value1 == null || value2 == null || value3 == null) {
+		MesHardness mesHardness1 = new MesHardness();
+		mesHardness1.setSn(mesHardness.getSn());
+		List<MesHardness> list = mesHardnessService.findList(mesHardness1);
+		if(!list.isEmpty()){
+			return renderResult(Global.FALSE, "该工件已经进行硬度检测");
+		}
+		if (mesHardness.getActualValue1() == null || mesHardness.getActualValue2() == null || mesHardness.getActualValue3() == null) {
 			return renderResult(Global.FALSE, "三个实测值均不能为空");
 		}
-		MesHardness hardness = mesHardnessService.saveFromPda(sn.trim(), value1, value2, value3, remark);
-		return renderResult(Global.TRUE, "保存成功", hardness);
+		String mesHardness_image = request.getParameter("mesHardness_image");
+
+		try {
+			MesHardness hardness = mesHardnessService.saveFromPda(mesHardness);
+			FileUploadUtils.saveFileUpload(hardness, hardness.getId(), "mesHardness_image");
+			return renderResult(Global.TRUE, "保存成功", hardness);
+		} catch (Exception e) {
+			logger.error("PDA硬度检测保存失败", e);
+			return renderResult(Global.FALSE, text("操作失败!"));
+		}
+	}
+
+	/**
+	 * PDA硬度检测列表
+	 */
+	@RequestMapping(value = "hardnessList")
+	@ResponseBody
+	public CommonResp hardnessList(MesHardness mesHardness) {
+		CommonResp<List<MesHardness>> resp = new CommonResp<>();
+		List<MesHardness> list = mesHardnessService.findList(mesHardness);
+		resp.setData(list);
+		resp.setResult(Global.TRUE);
+		resp.setMessage("操作成功!");
+		return resp;
+	}
+
+	/**
+	 * PDA硬度检测详情
+	 */
+	@RequestMapping(value = "hardnessInfo")
+	@ResponseBody
+	public CommonResp hardnessInfo(MesHardness mesHardness, HttpServletRequest request) {
+		CommonResp<MesHardness> resp = new CommonResp<>();
+		List<MesHardness> list = mesHardnessService.findList(mesHardness);
+
+		MesHardness info = list.get(0);
+		if (info == null) {
+			resp.setResult(Global.FALSE);
+			resp.setMessage("没有该硬度检测记录!");
+			return resp;
+		}
+		String host = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "/js";
+		FileUpload fu = new FileUpload();
+		fu.setBizKey(info.getId());
+		fu.setBizType("mesHardness_image");
+		List<FileUpload> finfo = fileUploadService.findList(fu);
+		List imgList = ListUtils.newArrayList();
+		for (FileUpload fi : finfo) {
+			Map<String, Object> map = MapUtils.newHashMap();
+			map.put("id", fi.getFileEntity().getFileId());
+			map.put("url", host + fi.getFileUrl());
+			map.put("name", fi.getFileName());
+			map.put("size", fi.getFileEntity().getFileSize());
+			imgList.add(map);
+		}
+		info.setImgList(imgList);
+		resp.setData(info);
+		resp.setResult(Global.TRUE);
+		resp.setMessage("操作成功!");
+		return resp;
 	}
 
 	// ==================== 标准值配置接口 ====================

+ 2 - 1
src/main/java/com/jeesite/modules/scheduling/MesMoldMaintenancePlanScheduling.java

@@ -55,7 +55,8 @@ public class MesMoldMaintenancePlanScheduling {
 	/**
 	 * 每5秒执行一次:计算剩余批次生产数并更新数据库
 	 */
-	@Scheduled(fixedRate = 5000)
+//	@Scheduled(fixedRate = 5000)
+	@Scheduled(fixedRate = 500000)
 	public void calculateRemainBatchProductionNum() {
 		try {
 			// 查询所有维保计划

+ 9 - 0
src/main/resources/views/modules/erp/mesProductOrderForm.html

@@ -26,6 +26,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="lotCode" maxlength="64" 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="lineSn" maxlength="64" class="form-control"/>

+ 7 - 0
src/main/resources/views/modules/erp/mesProductOrderList.html

@@ -23,6 +23,12 @@
 					</div>
 				</div>
 				<div class="form-group">
+					<label class="control-label">${text('入库批号')}:</label>
+					<div class="control-inline">
+						<#form:input path="lotCode" maxlength="64" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
 					<label class="control-label">${text('产线编号')}:</label>
 					<div class="control-inline">
 						<#form:input path="lineSn" maxlength="64" class="form-control width-120"/>
@@ -79,6 +85,7 @@ $('#dataGrid').dataGrid({
 		// 	return '<a href="${ctx}/erp/mesProductOrder/form?id='+row.id+'" class="btnList" data-title="${text("编辑生产订单")}">'+(val||row.id)+'</a>';
 		// }},
 		{header:'${text("订单编号")}', name:'sn', index:'a.sn', width:150, align:"center"},
+		{header:'${text("入库批号")}', name:'lotCode', index:'a.lot_code', width:150, align:"center"},
 		{header:'${text("产线编号")}', name:'lineSn', index:'a.line_sn', width:120, align:"center"},
 		// {header:'${text("行号")}', name:'docLineNo', index:'a.doc_line_no', width:100, align:"center"},
 		{header:'${text("生产数量")}', name:'nums', index:'a.nums', width:150, align:"center"},

+ 9 - 0
src/main/resources/views/modules/mes/mesDeviceMaintenanceForm.html

@@ -152,6 +152,15 @@
 							</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:select path="acceptanceResult" dictType="mes_repair_result" blankOption="true" class="form-control"/>
+							</div>
+						</div>
+					</div>
 				</div>
 				<div class="row">
 					<div class="col-xs-12">

+ 4 - 0
src/main/resources/views/modules/mes/mesDeviceMaintenanceInfo.html

@@ -73,6 +73,10 @@
 					<td>${mesDeviceMaintenance.quantity}</td>
 				</tr>
 				<tr>
+					<th class="mpc-header">${text('验收结果')}</th>
+					<td>${@DictUtils.getDictLabel('mes_repair_result', mesDeviceMaintenance.acceptanceResult, '')}</td>
+				</tr>
+				<tr>
 					<th class="mpc-header">${text('故障现象')}</th>
 					<td>${mesDeviceMaintenance.faultPhenomenon}</td>
 				</tr>

+ 9 - 0
src/main/resources/views/modules/mes/mesDeviceMaintenanceList.html

@@ -49,6 +49,12 @@
 					</div>
 				</div>
 				<div class="form-group">
+					<label class="control-label">${text('验收结果')}:</label>
+					<div class="control-inline">
+						<#form:select path="acceptanceResult" dictType="mes_repair_result" blankOption="true" class="form-control width-120"/>
+					</div>
+				</div>
+				<div class="form-group">
 					<button type="submit" class="btn btn-primary btn-sm">${text('查询')}</button>
 					<button type="reset" class="btn btn-default btn-sm">${text('重置')}</button>
 				</div>
@@ -84,6 +90,9 @@ $('#dataGrid').dataGrid({
 		{header:'${text("备件名称")}', name:'sparePartName', index:'a.spare_part_name', width:120, align:"center"},
 		{header:'${text("数量")}', name:'quantity', index:'a.quantity', width:60, align:"center"},
 		{header:'${text("维修人")}', name:'repairUser', index:'a.repair_user', width:100, align:"center"},
+		{header:'${text("验收结果")}', name:'acceptanceResult', index:'a.acceptance_result', width:90, align:"center", formatter: function(val){
+			return js.getDictLabel(${@DictUtils.getDictListJson('mes_repair_result')}, val, '', true);
+		}},
 		{header:'${text("操作")}', name:'actions', width:120, fixed:true, formatter: function(val, obj, row, act){
 			var actions = [];
 			//<% if(hasPermi('mes:mesDeviceMaintenance:edit')){ %>

+ 2 - 2
src/test/java/com/jeesite/test/TencentSmsUtilTest.java

@@ -26,10 +26,10 @@ public class TencentSmsUtilTest extends BaseSpringContextTests {
 	public void testSendSms() throws TencentCloudSDKException {
 		String phone = System.getenv("TENCENT_SMS_TEST_PHONE");
 		if (StringUtils.isBlank(phone)) {
-			phone = "17203891886";
+			phone = "19863431582";
 		}
 
-		SendSmsResponse resp = TencentSmsUtil.sendSms(phone);
+		SendSmsResponse resp = TencentSmsUtil.sendSmsByTemplate2683305(phone);
 		System.out.println(AbstractModel.toJsonString(resp));
 
 		SendStatus[] statusSet = resp.getSendStatusSet();