瀏覽代碼

pda接口优化

liuwei 2 月之前
父節點
當前提交
22dcf8bb35

+ 52 - 0
src/main/java/com/jeesite/modules/erp/web/MesProductOrderController.java

@@ -1,13 +1,20 @@
 package com.jeesite.modules.erp.web;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.jeesite.modules.mes.entity.MesProductReport;
 import com.jeesite.modules.mes.resp.CommonResp;
+import com.jeesite.modules.mes.service.MesProductReportService;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -24,6 +31,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.jeesite.common.config.Global;
 import com.jeesite.common.entity.Page;
 import com.jeesite.common.lang.StringUtils;
+import com.jeesite.common.mybatis.mapper.query.QueryType;
 import com.jeesite.common.service.ServiceException;
 import com.jeesite.common.web.BaseController;
 import com.jeesite.modules.erp.entity.MesProductOrder;
@@ -41,6 +49,9 @@ public class MesProductOrderController extends BaseController {
 	@Autowired
 	private MesProductOrderService mesProductOrderService;
 
+	@Autowired
+	private MesProductReportService mesProductReportService;
+
 	/**
 	 * 获取数据
 	 */
@@ -114,11 +125,52 @@ public class MesProductOrderController extends BaseController {
 		//展示所有未结束的订单
 		mesProductOrder.setState("1");//0=草稿 1=下发 2=完成
 		List<MesProductOrder> list = mesProductOrderService.findList(mesProductOrder);
+		fillNowNumsFromProductReport(list);
 		resp.setData(list);
 		resp.setResult(Global.TRUE);
 		resp.setMessage("操作成功!");
 		return resp;
 	}
+
+	/**
+	 * nowNums = 同生产订单号(sn = moDocNo)下完工报告入库数量 completeQty 之和
+	 */
+	private void fillNowNumsFromProductReport(List<MesProductOrder> orders) {
+		if (orders == null || orders.isEmpty()) {
+			return;
+		}
+		List<String> sns = new ArrayList<>();
+		for (MesProductOrder order : orders) {
+			if (StringUtils.isNotBlank(order.getSn())) {
+				sns.add(order.getSn());
+			}
+			order.setNowNums(0);
+		}
+		if (sns.isEmpty()) {
+			return;
+		}
+		MesProductReport query = new MesProductReport();
+		query.getSqlMap().getWhere().and("mo_doc_no", QueryType.IN, sns);
+		List<MesProductReport> reports = mesProductReportService.findList(query);
+		Map<String, BigDecimal> sumMap = new HashMap<>();
+		for (MesProductReport report : reports) {
+			if (StringUtils.isBlank(report.getMoDocNo()) || StringUtils.isBlank(report.getCompleteQty())) {
+				continue;
+			}
+			try {
+				BigDecimal qty = new BigDecimal(report.getCompleteQty().trim());
+				sumMap.merge(report.getMoDocNo(), qty, BigDecimal::add);
+			} catch (NumberFormatException ignored) {
+				// 非法数量跳过
+			}
+		}
+		for (MesProductOrder order : orders) {
+			BigDecimal sum = sumMap.get(order.getSn());
+			if (sum != null) {
+				order.setNowNums(sum.setScale(0, RoundingMode.HALF_UP).intValue());
+			}
+		}
+	}
 	/**
 	 * pda生产订单详情
 	 */

+ 15 - 2
src/main/java/com/jeesite/modules/mes/service/MesMaterialLlService.java

@@ -1,6 +1,7 @@
 package com.jeesite.modules.mes.service;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -130,7 +131,7 @@ public class MesMaterialLlService extends CrudService<MesMaterialLlDao, MesMater
 		// 按生产订单号+料号从备料表带回已领取/领取数量,仅供 PDA 展示(不覆盖手填 issuedQty)
 		Map<String, Object> data = new HashMap<>();
 		data.put("numsYl", StringUtils.defaultIfBlank(mesMaterialBl.getNumsYl(), "")); // 已领取数量
-		data.put("numsQr", StringUtils.defaultIfBlank(mesMaterialBl.getNumsQr(), "")); // 领取数量(备料确认数量)
+		data.put("numsQr", formatOneDecimal(mesMaterialBl.getNumsQr())); // 领取数量(备料确认数量,保留1位小数)
 		return data;
 	}
 
@@ -165,7 +166,19 @@ public class MesMaterialLlService extends CrudService<MesMaterialLlDao, MesMater
 			return;
 		}
 		mesMaterialLl.setNumsYl(StringUtils.defaultIfBlank(bl.getNumsYl(), "")); // 已领取数量
-		mesMaterialLl.setNumsQr(StringUtils.defaultIfBlank(bl.getNumsQr(), "")); // 领取数量(备料确认数量)
+		mesMaterialLl.setNumsQr(formatOneDecimal(bl.getNumsQr())); // 领取数量(备料确认数量,保留1位小数)
+	}
+
+	/** 数量保留一位小数(截断,不四舍五入),无法解析则原样返回(空串保持空) */
+	private String formatOneDecimal(String value) {
+		if (StringUtils.isBlank(value)) {
+			return "";
+		}
+		try {
+			return new BigDecimal(value.trim()).setScale(1, RoundingMode.DOWN).toPlainString();
+		} catch (NumberFormatException e) {
+			return value.trim();
+		}
 	}
 
 	private String buildCreateIssueDocJson(MesMaterialLl mesMaterialLl) {