|
|
@@ -0,0 +1,471 @@
|
|
|
+package com.jeesite.modules.mes.erp;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.jeesite.common.lang.StringUtils;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.HashSet;
|
|
|
+import java.util.LinkedHashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class ErpProductionOrderService {
|
|
|
+
|
|
|
+ private static final Logger logger = LoggerFactory.getLogger(ErpProductionOrderService.class);
|
|
|
+ private static final String FORM_ID = "PRD_MO";
|
|
|
+ private static final Set<String> ALLOWED_INVENTORY_CATEGORIES =
|
|
|
+ new HashSet<>(Arrays.asList("HEV", "\u6b23\u65fa\u8fbe115", "115"));
|
|
|
+ private static final String HEADER_FIELD_KEYS = String.join(",",
|
|
|
+ "FID",
|
|
|
+ "FBILLNO",
|
|
|
+ "FDocumentStatus",
|
|
|
+ "FDate",
|
|
|
+ "FPrdOrgId.FNAME",
|
|
|
+ "FWorkShopID0.FNAME",
|
|
|
+ "FPlannerID.FNAME",
|
|
|
+ "FDescription");
|
|
|
+ private static final String DETAIL_FIELD_KEYS = String.join(",",
|
|
|
+ "FID",
|
|
|
+ "FBILLNO",
|
|
|
+ "FDocumentStatus",
|
|
|
+ "FDate",
|
|
|
+ "FPrdOrgId.FNAME",
|
|
|
+ "FWorkShopID0.FNAME",
|
|
|
+ "FPlannerID.FNAME",
|
|
|
+ "FTreeEntity_FEntryId",
|
|
|
+ "FTreeEntity_FSeq",
|
|
|
+ "FMATERIALID.FNUMBER",
|
|
|
+ "FMATERIALID.FNAME",
|
|
|
+ "FSpecification",
|
|
|
+ "FQTY",
|
|
|
+ "FUnitId.FNAME",
|
|
|
+ "FPlanStartDate",
|
|
|
+ "FPlanFinishDate",
|
|
|
+ "FStatus",
|
|
|
+ "FStockId.FNAME",
|
|
|
+ "FBomId.FNUMBER",
|
|
|
+ "FRoutingId.FNUMBER",
|
|
|
+ "FProjectNo",
|
|
|
+ "FMTONO");
|
|
|
+
|
|
|
+ private final KingdeeErpClient erpClient;
|
|
|
+ private final KingdeeErpProperties erpProperties;
|
|
|
+
|
|
|
+ public ErpProductionOrderService(KingdeeErpClient erpClient, KingdeeErpProperties erpProperties) {
|
|
|
+ this.erpClient = erpClient;
|
|
|
+ this.erpProperties = erpProperties;
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<ErpProductionOrder> findPageList(String billNo, int startRow, int limit) {
|
|
|
+ List<ErpProductionOrder> headers = findFilteredHeaderPageList(billNo, startRow, limit);
|
|
|
+ if (headers.isEmpty()) {
|
|
|
+ return headers;
|
|
|
+ }
|
|
|
+ Map<String, ErpProductionOrder> orderMap = new LinkedHashMap<>();
|
|
|
+ List<String> billNos = new ArrayList<>();
|
|
|
+ for (ErpProductionOrder header : headers) {
|
|
|
+ header.setEntryCount(0);
|
|
|
+ header.setTotalQty(BigDecimal.ZERO);
|
|
|
+ orderMap.put(header.getBillNo(), header);
|
|
|
+ billNos.add(header.getBillNo());
|
|
|
+ }
|
|
|
+ for (ErpProductionOrder detail : findDetailListByBillNos(billNos)) {
|
|
|
+ ErpProductionOrder order = orderMap.get(detail.getBillNo());
|
|
|
+ if (order == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(order.getInventoryCategory())) {
|
|
|
+ order.setInventoryCategory(detail.getInventoryCategory());
|
|
|
+ }
|
|
|
+ order.setEntryCount(order.getEntryCount() + 1);
|
|
|
+ if (detail.getQty() != null) {
|
|
|
+ order.setTotalQty(order.getTotalQty().add(detail.getQty()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return new ArrayList<>(orderMap.values());
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<ErpProductionOrder> findFilteredHeaderPageList(String billNo, int startRow, int limit) {
|
|
|
+ if (!erpProperties.isInventoryCategoryFilterEnabled()) {
|
|
|
+ return findHeaderPageList(billNo, startRow, limit);
|
|
|
+ }
|
|
|
+ int targetSize = startRow + limit;
|
|
|
+ int fetchStart = 0;
|
|
|
+ int fetchLimit = Math.max(limit * 5, 50);
|
|
|
+ int maxFetchRows = Math.max(targetSize * 30, 500);
|
|
|
+ List<ErpProductionOrder> matchedHeaders = new ArrayList<>();
|
|
|
+
|
|
|
+ while (matchedHeaders.size() < targetSize && fetchStart < maxFetchRows) {
|
|
|
+ List<ErpProductionOrder> candidates = findHeaderPageList(billNo, fetchStart, fetchLimit);
|
|
|
+ if (candidates.isEmpty()) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ for (ErpProductionOrder header : candidates) {
|
|
|
+ String category = findAllowedInventoryCategoryByView(header.getBillNo());
|
|
|
+ if (StringUtils.isBlank(category)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ header.setInventoryCategory(category);
|
|
|
+ matchedHeaders.add(header);
|
|
|
+ if (matchedHeaders.size() >= targetSize) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (candidates.size() < fetchLimit) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ fetchStart += fetchLimit;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (startRow >= matchedHeaders.size()) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ return new ArrayList<>(matchedHeaders.subList(startRow, Math.min(startRow + limit, matchedHeaders.size())));
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<ErpProductionOrder> findHeaderPageList(String billNo, int startRow, int limit) {
|
|
|
+ int targetSize = startRow + limit;
|
|
|
+ int fetchStart = 0;
|
|
|
+ int fetchLimit = Math.max(limit * 5, 100);
|
|
|
+ int maxFetchRows = Math.max(targetSize * 10, 500);
|
|
|
+ Map<String, ErpProductionOrder> uniqueHeaders = new LinkedHashMap<>();
|
|
|
+
|
|
|
+ while (uniqueHeaders.size() < targetSize && fetchStart < maxFetchRows) {
|
|
|
+ List<ErpProductionOrder> chunk = findDetailCandidateList(billNo, fetchStart, fetchLimit);
|
|
|
+ if (chunk.isEmpty()) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ for (ErpProductionOrder detail : chunk) {
|
|
|
+ uniqueHeaders.putIfAbsent(detail.getBillNo(), toHeaderFromDetail(detail));
|
|
|
+ }
|
|
|
+ if (chunk.size() < fetchLimit) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ fetchStart += fetchLimit;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ErpProductionOrder> allHeaders = new ArrayList<>(uniqueHeaders.values());
|
|
|
+ if (startRow >= allHeaders.size()) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ return new ArrayList<>(allHeaders.subList(startRow, Math.min(startRow + limit, allHeaders.size())));
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<ErpProductionOrder> findDetailCandidateList(String billNo, int startRow, int limit) {
|
|
|
+ JSONObject data = new JSONObject();
|
|
|
+ data.put("FormId", FORM_ID);
|
|
|
+ data.put("FieldKeys", buildDetailFieldKeys());
|
|
|
+ data.put("FilterString", buildFilterString(billNo));
|
|
|
+ data.put("OrderString", "FDate DESC,FBILLNO DESC,FTreeEntity_FSeq");
|
|
|
+ data.put("StartRow", Math.max(startRow, 0));
|
|
|
+ data.put("Limit", Math.max(limit, 1));
|
|
|
+ logger.info("ERP production order candidate query: {}", data.toJSONString());
|
|
|
+
|
|
|
+ JSONArray rows = erpClient.billQuery(data);
|
|
|
+ List<ErpProductionOrder> list = new ArrayList<>();
|
|
|
+ for (int i = 0; i < rows.size(); i++) {
|
|
|
+ list.add(toDetail(rows.getJSONObject(i), i));
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<ErpProductionOrder> findDetailList(String billNo) {
|
|
|
+ if (StringUtils.isBlank(billNo)) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ return findDetailListByBillNos(singletonList(billNo));
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<ErpProductionOrder> findHeaderList(String billNo, int startRow, int limit) {
|
|
|
+ JSONObject data = new JSONObject();
|
|
|
+ data.put("FormId", FORM_ID);
|
|
|
+ data.put("FieldKeys", HEADER_FIELD_KEYS);
|
|
|
+ data.put("FilterString", buildFilterString(billNo));
|
|
|
+ data.put("OrderString", "FDate DESC,FBILLNO DESC");
|
|
|
+ data.put("StartRow", Math.max(startRow, 0));
|
|
|
+ data.put("Limit", Math.max(limit, 1));
|
|
|
+ logger.info("ERP production order header query: {}", data.toJSONString());
|
|
|
+
|
|
|
+ JSONArray rows = erpClient.billQuery(data);
|
|
|
+ List<ErpProductionOrder> list = new ArrayList<>();
|
|
|
+ for (int i = 0; i < rows.size(); i++) {
|
|
|
+ list.add(toHeader(rows.getJSONObject(i)));
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<ErpProductionOrder> findDetailListByBillNos(List<String> billNos) {
|
|
|
+ JSONObject data = new JSONObject();
|
|
|
+ data.put("FormId", FORM_ID);
|
|
|
+ data.put("FieldKeys", buildDetailFieldKeys());
|
|
|
+ data.put("FilterString", buildInFilterString(billNos));
|
|
|
+ data.put("OrderString", "FBILLNO DESC,FTreeEntity_FSeq");
|
|
|
+ data.put("Limit", 2000);
|
|
|
+ logger.info("ERP production order detail query: {}", data.toJSONString());
|
|
|
+
|
|
|
+ JSONArray rows = erpClient.billQuery(data);
|
|
|
+ List<ErpProductionOrder> list = new ArrayList<>();
|
|
|
+ Map<String, Map<String, String>> categoryCache = new LinkedHashMap<>();
|
|
|
+ for (int i = 0; i < rows.size(); i++) {
|
|
|
+ ErpProductionOrder detail = toDetail(rows.getJSONObject(i), i);
|
|
|
+ Map<String, String> categories = categoryCache.computeIfAbsent(detail.getBillNo(),
|
|
|
+ this::findAllowedInventoryCategoriesByView);
|
|
|
+ detail.setInventoryCategory(categories.get(detail.getEntryId()));
|
|
|
+ if (!erpProperties.isInventoryCategoryFilterEnabled()
|
|
|
+ || StringUtils.isNotBlank(detail.getInventoryCategory())) {
|
|
|
+ list.add(detail);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ private ErpProductionOrder toHeader(JSONObject row) {
|
|
|
+ ErpProductionOrder order = new ErpProductionOrder();
|
|
|
+ order.setId(row.getString("FBILLNO"));
|
|
|
+ order.setFid(row.getString("FID"));
|
|
|
+ order.setBillNo(row.getString("FBILLNO"));
|
|
|
+ order.setDocumentStatus(row.getString("FDocumentStatus"));
|
|
|
+ order.setDocumentStatusName(documentStatusName(order.getDocumentStatus()));
|
|
|
+ order.setDate(row.getString("FDate"));
|
|
|
+ order.setPrdOrgName(row.getString("FPrdOrgId.FNAME"));
|
|
|
+ order.setWorkshopName(row.getString("FWorkShopID0.FNAME"));
|
|
|
+ order.setPlannerName(row.getString("FPlannerID.FNAME"));
|
|
|
+ return order;
|
|
|
+ }
|
|
|
+
|
|
|
+ private ErpProductionOrder toHeaderFromDetail(ErpProductionOrder detail) {
|
|
|
+ ErpProductionOrder order = new ErpProductionOrder();
|
|
|
+ order.setId(detail.getBillNo());
|
|
|
+ order.setFid(detail.getFid());
|
|
|
+ order.setBillNo(detail.getBillNo());
|
|
|
+ order.setDocumentStatus(detail.getDocumentStatus());
|
|
|
+ order.setDocumentStatusName(detail.getDocumentStatusName());
|
|
|
+ order.setDate(detail.getDate());
|
|
|
+ order.setPrdOrgName(detail.getPrdOrgName());
|
|
|
+ order.setWorkshopName(detail.getWorkshopName());
|
|
|
+ order.setPlannerName(detail.getPlannerName());
|
|
|
+ order.setInventoryCategory(detail.getInventoryCategory());
|
|
|
+ return order;
|
|
|
+ }
|
|
|
+
|
|
|
+ private ErpProductionOrder toDetail(JSONObject row, int index) {
|
|
|
+ ErpProductionOrder order = new ErpProductionOrder();
|
|
|
+ order.setFid(row.getString("FID"));
|
|
|
+ order.setBillNo(row.getString("FBILLNO"));
|
|
|
+ order.setEntryId(row.getString("FTreeEntity_FEntryId"));
|
|
|
+ order.setSeq(row.getString("FTreeEntity_FSeq"));
|
|
|
+ order.setId(order.getBillNo() + "-" + (StringUtils.isBlank(order.getEntryId()) ? index : order.getEntryId()));
|
|
|
+ order.setDocumentStatus(row.getString("FDocumentStatus"));
|
|
|
+ order.setDocumentStatusName(documentStatusName(order.getDocumentStatus()));
|
|
|
+ order.setDate(row.getString("FDate"));
|
|
|
+ order.setPrdOrgName(row.getString("FPrdOrgId.FNAME"));
|
|
|
+ order.setWorkshopName(row.getString("FWorkShopID0.FNAME"));
|
|
|
+ order.setPlannerName(row.getString("FPlannerID.FNAME"));
|
|
|
+ order.setMaterialNumber(row.getString("FMATERIALID.FNUMBER"));
|
|
|
+ order.setMaterialName(row.getString("FMATERIALID.FNAME"));
|
|
|
+ order.setSpecification(row.getString("FSpecification"));
|
|
|
+ order.setQty(row.getBigDecimal("FQTY"));
|
|
|
+ order.setUnitName(row.getString("FUnitId.FNAME"));
|
|
|
+ order.setPlanStartDate(row.getString("FPlanStartDate"));
|
|
|
+ order.setPlanFinishDate(row.getString("FPlanFinishDate"));
|
|
|
+ order.setBusinessStatus(row.getString("FStatus"));
|
|
|
+ order.setBusinessStatusName(businessStatusName(order.getBusinessStatus()));
|
|
|
+ order.setStockName(row.getString("FStockId.FNAME"));
|
|
|
+ order.setBomNumber(row.getString("FBomId.FNUMBER"));
|
|
|
+ order.setRoutingNumber(row.getString("FRoutingId.FNUMBER"));
|
|
|
+ order.setProjectNo(row.getString("FProjectNo"));
|
|
|
+ order.setMtoNo(row.getString("FMTONO"));
|
|
|
+ return order;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String findAllowedInventoryCategoryByView(String billNo) {
|
|
|
+ Map<String, String> categories = findAllowedInventoryCategoriesByView(billNo);
|
|
|
+ if (categories.isEmpty()) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ return categories.values().iterator().next();
|
|
|
+ }
|
|
|
+
|
|
|
+ private Map<String, String> findAllowedInventoryCategoriesByView(String billNo) {
|
|
|
+ if (StringUtils.isBlank(billNo)) {
|
|
|
+ return Collections.emptyMap();
|
|
|
+ }
|
|
|
+ JSONObject data = new JSONObject();
|
|
|
+ data.put("CreateOrgId", 0);
|
|
|
+ data.put("Number", billNo);
|
|
|
+ data.put("Id", "");
|
|
|
+ data.put("IsSortBySeq", false);
|
|
|
+ JSONObject response = erpClient.view(FORM_ID, data);
|
|
|
+ JSONObject resultWrapper = response.getJSONObject("Result");
|
|
|
+ JSONObject status = resultWrapper == null ? null : resultWrapper.getJSONObject("ResponseStatus");
|
|
|
+ if (status == null || !Boolean.TRUE.equals(status.getBoolean("IsSuccess"))) {
|
|
|
+ logger.warn("ERP production order view failed, billNo={}, response={}", billNo, response.toJSONString());
|
|
|
+ return Collections.emptyMap();
|
|
|
+ }
|
|
|
+ JSONObject result = resultWrapper.getJSONObject("Result");
|
|
|
+ if (result == null) {
|
|
|
+ return Collections.emptyMap();
|
|
|
+ }
|
|
|
+ JSONArray treeEntity = result.getJSONArray("TreeEntity");
|
|
|
+ if (treeEntity == null) {
|
|
|
+ return Collections.emptyMap();
|
|
|
+ }
|
|
|
+ Map<String, String> categories = new LinkedHashMap<>();
|
|
|
+ for (int i = 0; i < treeEntity.size(); i++) {
|
|
|
+ JSONObject entry = treeEntity.getJSONObject(i);
|
|
|
+ String category = extractAllowedCategory(entry);
|
|
|
+ if (StringUtils.isNotBlank(category)) {
|
|
|
+ categories.put(entry.getString("Id"), category);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return categories;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String extractAllowedCategory(JSONObject entry) {
|
|
|
+ if (entry == null) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ JSONObject material = entry.getJSONObject("MaterialId");
|
|
|
+ JSONArray materialBase = material == null ? null : material.getJSONArray("MaterialBase");
|
|
|
+ if (materialBase == null) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ for (int i = 0; i < materialBase.size(); i++) {
|
|
|
+ JSONObject category = materialBase.getJSONObject(i).getJSONObject("CategoryID");
|
|
|
+ String number = category == null ? "" : category.getString("Number");
|
|
|
+ String name = getNameValue(category);
|
|
|
+ if (isAllowedCategory(number)) {
|
|
|
+ return number;
|
|
|
+ }
|
|
|
+ if (isAllowedCategory(name)) {
|
|
|
+ return name;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getNameValue(JSONObject object) {
|
|
|
+ if (object == null) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ JSONArray nameArray = object.getJSONArray("Name");
|
|
|
+ if (nameArray == null || nameArray.isEmpty()) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ return nameArray.getJSONObject(0).getString("Value");
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean isAllowedCategory(String value) {
|
|
|
+ if (StringUtils.isBlank(value)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return ALLOWED_INVENTORY_CATEGORIES.contains(value.trim());
|
|
|
+ }
|
|
|
+
|
|
|
+ private String buildFilterString(String billNo) {
|
|
|
+ String orgFilter = buildCurrentOrgFilter();
|
|
|
+ String baseFilter = orgFilter;
|
|
|
+ if (StringUtils.isBlank(billNo)) {
|
|
|
+ return baseFilter;
|
|
|
+ }
|
|
|
+ return appendAnd(baseFilter, "FBILLNO='" + billNo.trim().replace("'", "''") + "'");
|
|
|
+ }
|
|
|
+
|
|
|
+ private String buildInFilterString(List<String> billNos) {
|
|
|
+ String baseFilter = buildCurrentOrgFilter();
|
|
|
+ StringBuilder builder = new StringBuilder(baseFilter);
|
|
|
+ if (builder.length() > 0) {
|
|
|
+ builder.append(" AND ");
|
|
|
+ }
|
|
|
+ builder.append("FBILLNO IN(");
|
|
|
+ for (int i = 0; i < billNos.size(); i++) {
|
|
|
+ if (i > 0) {
|
|
|
+ builder.append(",");
|
|
|
+ }
|
|
|
+ builder.append("'").append(billNos.get(i).trim().replace("'", "''")).append("'");
|
|
|
+ }
|
|
|
+ builder.append(")");
|
|
|
+ return builder.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ private String appendAnd(String left, String right) {
|
|
|
+ if (StringUtils.isBlank(left)) {
|
|
|
+ return right;
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(right)) {
|
|
|
+ return left;
|
|
|
+ }
|
|
|
+ return left + " AND " + right;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<String> singletonList(String value) {
|
|
|
+ List<String> list = new ArrayList<>();
|
|
|
+ list.add(value);
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String buildCurrentOrgFilter() {
|
|
|
+ if (!erpProperties.isFilterCurrentOrg()) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(erpProperties.getOrgNumber())) {
|
|
|
+ return "FPrdOrgId.FNUMBER='" + erpProperties.getOrgNumber().trim().replace("'", "''") + "'";
|
|
|
+ }
|
|
|
+ Long currentOrganizationId = erpClient.getCurrentOrganizationId();
|
|
|
+ if (currentOrganizationId == null) {
|
|
|
+ return "1=1";
|
|
|
+ }
|
|
|
+ return "FPrdOrgId=" + currentOrganizationId;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String buildDetailFieldKeys() {
|
|
|
+ return DETAIL_FIELD_KEYS;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String documentStatusName(String status) {
|
|
|
+ if ("A".equals(status)) {
|
|
|
+ return "创建";
|
|
|
+ }
|
|
|
+ if ("B".equals(status)) {
|
|
|
+ return "审核中";
|
|
|
+ }
|
|
|
+ if ("C".equals(status)) {
|
|
|
+ return "已审核";
|
|
|
+ }
|
|
|
+ if ("D".equals(status)) {
|
|
|
+ return "重新审核";
|
|
|
+ }
|
|
|
+ return status;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String businessStatusName(String status) {
|
|
|
+ if ("1".equals(status)) {
|
|
|
+ return "计划";
|
|
|
+ }
|
|
|
+ if ("2".equals(status)) {
|
|
|
+ return "计划确认";
|
|
|
+ }
|
|
|
+ if ("3".equals(status)) {
|
|
|
+ return "下达";
|
|
|
+ }
|
|
|
+ if ("4".equals(status)) {
|
|
|
+ return "开工";
|
|
|
+ }
|
|
|
+ if ("5".equals(status)) {
|
|
|
+ return "完工";
|
|
|
+ }
|
|
|
+ if ("6".equals(status)) {
|
|
|
+ return "结案";
|
|
|
+ }
|
|
|
+ return status;
|
|
|
+ }
|
|
|
+}
|