From dad4c3efeedd1971235d7907d9066ea06dc30e11 Mon Sep 17 00:00:00 2001 From: YYC <1833023622@qq.com> Date: 星期二, 11 七月 2023 18:02:21 +0800 Subject: [PATCH] 倒仓和性质变更优化 --- igds-core/src/main/java/com/ld/igds/m/view/QualityManager.view.xml | 3 igds-inout/src/main/java/com/ld/igds/m/InoutManageUtil.java | 227 ++++++++++++++++--------------- igds-inout/src/main/java/com/ld/igds/m/service/HMAtockChangeService.java | 74 +++++++-- igds-inout/src/main/java/com/ld/igds/m/service/HVarietyChangeService.java | 81 +++++++++-- igds-inout/src/main/java/com/ld/igds/m/view/StockChange.view.xml | 3 5 files changed, 242 insertions(+), 146 deletions(-) diff --git a/igds-core/src/main/java/com/ld/igds/m/view/QualityManager.view.xml b/igds-core/src/main/java/com/ld/igds/m/view/QualityManager.view.xml index 0d05e7b..711df16 100644 --- a/igds-core/src/main/java/com/ld/igds/m/view/QualityManager.view.xml +++ b/igds-core/src/main/java/com/ld/igds/m/view/QualityManager.view.xml @@ -386,8 +386,7 @@ </Label> <Button layoutConstraint="left"> <ClientEvent name="onClick">view.get("#dsMain").insert();
 - view.get("#dialogMain").show(); - </ClientEvent> +view.get("#dialogMain").show(); </ClientEvent> <Property name="caption">鏂板</Property> <Property name="exClassName">btn-default</Property> <Property name="iconClass">fa fa-plus</Property> diff --git a/igds-inout/src/main/java/com/ld/igds/m/InoutManageUtil.java b/igds-inout/src/main/java/com/ld/igds/m/InoutManageUtil.java index 14259de..9f5bd25 100644 --- a/igds-inout/src/main/java/com/ld/igds/m/InoutManageUtil.java +++ b/igds-inout/src/main/java/com/ld/igds/m/InoutManageUtil.java @@ -2,128 +2,137 @@ import com.ld.igds.models.InoutPlan; import com.ld.igds.util.ContextUtil; + import java.util.List; /** * 鍑哄叆搴�--绠$悊鍔熻兘鐩稿叧甯搁噺 - * - * @author: * + * @author: */ public class InoutManageUtil { - /** - * 璁″垝绫诲瀷-閲囪喘璁″垝 - */ - public static final String PLAN_TYPE_1 = "1"; - /** - * 璁″垝绫诲瀷-閿�鍞鍒� - */ - public static final String PLAN_TYPE_2 = "2"; - /** - * 璁″垝绫诲瀷-杞崲璁″垝 - */ - public static final String PLAN_TYPE_3 = "3"; - - /** - * 璁″垝绫诲瀷-鍔犲伐璁″垝 - */ - public static final String PLAN_TYPE_4 = "4"; + /** + * 璁″垝绫诲瀷-閲囪喘璁″垝 + */ + public static final String PLAN_TYPE_1 = "1"; + /** + * 璁″垝绫诲瀷-閿�鍞鍒� + */ + public static final String PLAN_TYPE_2 = "2"; + /** + * 璁″垝绫诲瀷-杞崲璁″垝 + */ + public static final String PLAN_TYPE_3 = "3"; - /** - * 璁″垝璇︾粏绫诲瀷-杞叆 - */ - public static final String PLAN_TYPE_TURN_IN = "2"; - /** - * 璁″垝璇︾粏绫诲瀷-杞嚭 - */ - public static final String PLAN_TYPE_TURN_OUT = "1"; + /** + * 璁″垝绫诲瀷-鍔犲伐璁″垝 + */ + public static final String PLAN_TYPE_4 = "4"; - /** - * 瀹℃牳鐘舵��-寰呭鏍� - */ - public static final String AUDIT_NONE = "NONE"; - /** - * 瀹℃牳鐘舵��-閫氳繃 - */ - public static final String AUDIT_PASS = "PASS"; - /** - * 瀹℃牳鐘舵��-鎷掔粷 - */ - public static final String AUDIT_UNPASS = "UNPASS"; + /** + * 璁″垝璇︾粏绫诲瀷-杞叆 + */ + public static final String PLAN_TYPE_TURN_IN = "2"; + /** + * 璁″垝璇︾粏绫诲瀷-杞嚭 + */ + public static final String PLAN_TYPE_TURN_OUT = "1"; - /** - * 鍚堝悓绫诲瀷-浠e偍鍚堝悓 - */ - public static final String CONTRACT_TYPE_3 = "3"; - /** - * 鍚堝悓绫诲瀷-閲囪喘鍚堝悓 - */ - public static final String CONTRACT_TYPE_2 = "2"; - /** - * 鍚堝悓绫诲瀷-閿�鍞悎鍚� - */ - public static final String CONTRACT_TYPE_1 = "1"; + /** + * 瀹℃牳鐘舵��-寰呭鏍� + */ + public static final String AUDIT_NONE = "NONE"; + /** + * 瀹℃牳鐘舵��-閫氳繃 + */ + public static final String AUDIT_PASS = "PASS"; + /** + * 瀹℃牳鐘舵��-鎷掔粷 + */ + public static final String AUDIT_UNPASS = "UNPASS"; - /** - * 瀹㈡埛绫诲瀷 - 浼佷笟 - */ - public static final String CUSTOMER_TYPE_1 = "1"; - /** - * 瀹㈡埛绫诲瀷 - 涓汉 - */ - public static final String CUSTOMER_TYPE_2 = "2"; + /** + * 鍚堝悓绫诲瀷-浠e偍鍚堝悓 + */ + public static final String CONTRACT_TYPE_3 = "3"; + /** + * 鍚堝悓绫诲瀷-閲囪喘鍚堝悓 + */ + public static final String CONTRACT_TYPE_2 = "2"; + /** + * 鍚堝悓绫诲瀷-閿�鍞悎鍚� + */ + public static final String CONTRACT_TYPE_1 = "1"; - /** - * 鏍规嵁绫诲瀷鍒涘缓璁″垝ID - * - * @param type - */ - public static String createPlanId(String type, String year, List<InoutPlan> list) { - String index = "001"; - if(list != null && list.size() > 0){ - String[] arr = list.get(0).getId().split("_"); - int temp = Integer.valueOf(arr[2]) + 1; - index = temp + ""; - } - if(index.length() == 1){ - index = "00" + index; - } - if(index.length() == 2){ - index = "0" + index; - } - if (PLAN_TYPE_1.equals(type)) { - return "CGJH_" + year + "_" + index; - } - if (PLAN_TYPE_2.equals(type)) { - return "XSJH_" + year + "_" + index; - } - if (PLAN_TYPE_3.equals(type)) { - return "LHJH_" + year + "_" + index; - } - if (PLAN_TYPE_4.equals(type)) { - return "JGJH_" + year + "_" + index; - } - return "QTJH" + year + "_" + index; - } + /** + * 瀹㈡埛绫诲瀷 - 浼佷笟 + */ + public static final String CUSTOMER_TYPE_1 = "1"; + /** + * 瀹㈡埛绫诲瀷 - 涓汉 + */ + public static final String CUSTOMER_TYPE_2 = "2"; + /** + * 缂撳瓨-鎬ц川杞彉ID + */ + public static final String CACHE_STOCK_ID = "STOCK_ID"; + /** + * 缂撳瓨-鎬ц川杞彉ID + */ + public static final String CACHE_VARIETY_ID = "VARIETY_ID"; - /** - * 鏍规嵁绫诲瀷鍒涘缓鍚堝悓ID - * @param type - * @return - */ - public static String createContractId(String type) { - String id = ContextUtil.getTimeId(); - if (CONTRACT_TYPE_1.equals(type)) { - return "XSHT_" + id; - } - if (CONTRACT_TYPE_2.equals(type)) { - return "CGHT_" + id; - } - if (CONTRACT_TYPE_3.equals(type)) { - return "LHHT_" + id; - } - return id; - } + /** + * 鏍规嵁绫诲瀷鍒涘缓璁″垝ID + * + * @param type + */ + public static String createPlanId(String type, String year, List<InoutPlan> list) { + String index = "001"; + if (list != null && list.size() > 0) { + String[] arr = list.get(0).getId().split("_"); + int temp = Integer.valueOf(arr[2]) + 1; + index = temp + ""; + } + if (index.length() == 1) { + index = "00" + index; + } + if (index.length() == 2) { + index = "0" + index; + } + if (PLAN_TYPE_1.equals(type)) { + return "CGJH_" + year + "_" + index; + } + if (PLAN_TYPE_2.equals(type)) { + return "XSJH_" + year + "_" + index; + } + if (PLAN_TYPE_3.equals(type)) { + return "LHJH_" + year + "_" + index; + } + if (PLAN_TYPE_4.equals(type)) { + return "JGJH_" + year + "_" + index; + } + return "QTJH" + year + "_" + index; + } + + /** + * 鏍规嵁绫诲瀷鍒涘缓鍚堝悓ID + * + * @param type + * @return + */ + public static String createContractId(String type) { + String id = ContextUtil.getTimeId(); + if (CONTRACT_TYPE_1.equals(type)) { + return "XSHT_" + id; + } + if (CONTRACT_TYPE_2.equals(type)) { + return "CGHT_" + id; + } + if (CONTRACT_TYPE_3.equals(type)) { + return "LHHT_" + id; + } + return id; + } } diff --git a/igds-inout/src/main/java/com/ld/igds/m/service/HMAtockChangeService.java b/igds-inout/src/main/java/com/ld/igds/m/service/HMAtockChangeService.java index f086af0..7176354 100644 --- a/igds-inout/src/main/java/com/ld/igds/m/service/HMAtockChangeService.java +++ b/igds-inout/src/main/java/com/ld/igds/m/service/HMAtockChangeService.java @@ -2,15 +2,20 @@ import com.bstek.bdf2.core.orm.hibernate.HibernateDao; import com.bstek.dorado.data.provider.Page; +import com.ld.igds.constant.RedisConst; +import com.ld.igds.inout.InoutConstant; +import com.ld.igds.m.InoutManageUtil; import com.ld.igds.models.InoutStockChange; import com.ld.igds.util.ContextUtil; import com.ld.igds.util.DateUtil; +import com.ld.igds.util.RedisUtil; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateUtils; import org.hibernate.Session; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -18,6 +23,9 @@ @Service public class HMAtockChangeService extends HibernateDao { + @Resource + private RedisUtil redisUtil; + public void pageData(Page<InoutStockChange> page, Map<String, Object> param) throws Exception { String hql = " from " + InoutStockChange.class.getName() @@ -54,19 +62,8 @@ data.setUpdateUser(ContextUtil.getLoginUserCName()); try { if (null == data.getCzbz()) { - Map<String, Object> param = new HashMap<>(); - param.put("dateTime", data.getChangeDate()); - List<InoutStockChange> list = queryAll(param); - int max = 0; - if (list.size() != 0) { - int num; - for (InoutStockChange stockChange : list) { - num = Integer.parseInt(stockChange.getId().substring(stockChange.getId().length() - 4)); - max = Math.max(max, num); - } - } - String date = DateFormatUtils.format(new Date(), "yyyyMMdd"); - data.setId(date + String.format("%04d", max + 1)); + String id = createId(data.getChangeDate(), ContextUtil.getCompanyId()); + data.setId(id); data.setCzbz("i"); session.save(data); } else { @@ -97,18 +94,55 @@ } - public List<InoutStockChange> queryAll(Map<String, Object> param) { + public List<InoutStockChange> getMaxId(Map<String, Object> param) { String hql = "from " + InoutStockChange.class.getName() + " where 1 = 1 "; Map<String, Object> args = new HashMap<String, Object>(); - Date date = (Date) param.get("dateTime"); - if (null != date) { - hql += " and updateTime >= :startTime and updateTime < :endTime"; - args.put("startTime", DateUtil.getCurZero(date)); - args.put("endTime", DateUtil.getNextZero(date)); + if (null != param) { + String str = (String) param.get("timeKey"); + if (StringUtils.isNotEmpty(str)) { + hql += " and id like :timeKey"; + args.put("timeKey", str); + } } - hql += " order by updateTime desc limit 20"; + hql += " order by id desc "; return this.query(hql, args); } + public String createId(Date date, String companyId) { + // 鏃堕棿鎴虫爣绛� + String timeKey = DateFormatUtils.format(date, "yyyyMMdd"); + + // 浠庣紦瀛樹腑鑾峰彇宸叉湁鐨勭粍缁囩紪鐮� + String cacheKey = RedisConst.buildKey(companyId, + InoutManageUtil.CACHE_STOCK_ID); + + String cacheId = (String) redisUtil.get(cacheKey); + + if (null != cacheId && cacheId.indexOf(timeKey) >= 0) { + String temp = cacheId.substring(cacheId.length() - 4); + Integer i = Integer.valueOf(temp); + i++; + cacheId = timeKey + String.format("%04d", i); + } else { + Map<String, Object> args = new HashMap<>(); + args.put("timeKey", timeKey + "%"); + List<InoutStockChange> result = getMaxId(args); + + if (null == result || result.size() == 0) { + cacheId = timeKey + "0001"; + } else { + String temp = result.get(0).getId(); + // 鑾峰彇鏈�鍚庡洓浣� + int i = Integer.valueOf(temp.substring(temp.length() - 4)); + i++; + cacheId = timeKey + String.format("%04d", i); + } + } + // 鏇存柊缂撳瓨 + redisUtil.set(cacheKey, cacheId); + + return cacheId; + } + } diff --git a/igds-inout/src/main/java/com/ld/igds/m/service/HVarietyChangeService.java b/igds-inout/src/main/java/com/ld/igds/m/service/HVarietyChangeService.java index 6ffe9db..24fe0fe 100644 --- a/igds-inout/src/main/java/com/ld/igds/m/service/HVarietyChangeService.java +++ b/igds-inout/src/main/java/com/ld/igds/m/service/HVarietyChangeService.java @@ -5,8 +5,11 @@ import java.util.List; import java.util.Map; +import com.ld.igds.constant.RedisConst; +import com.ld.igds.m.InoutManageUtil; import com.ld.igds.models.InoutStockChange; import com.ld.igds.util.DateUtil; +import com.ld.igds.util.RedisUtil; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.hibernate.Session; @@ -17,8 +20,15 @@ import com.ld.igds.models.InoutVarietyChange; import com.ld.igds.util.ContextUtil; +import javax.annotation.Resource; + +import static com.bstek.dorado.view.widget.form.DateTimeSpinnerType.date; + @Component public class HVarietyChangeService extends HibernateDao { + + @Resource + private RedisUtil redisUtil; public void pageData(Page<InoutVarietyChange> page, Map<String, Object> param) throws Exception { @@ -69,19 +79,8 @@ try { if (null == data.getId()) { - Map<String, Object> param = new HashMap<>(); - param.put("dateTime", data.getChangeTime()); - List<InoutVarietyChange> list = queryAll(param); - int max = 0; - if (list.size() != 0) { - int num; - for (InoutVarietyChange varietyChange : list) { - num = Integer.parseInt(varietyChange.getId().substring(varietyChange.getId().length() - 3)); - max = Math.max(max, num); - } - } - String date = DateFormatUtils.format(new Date(), "yyyyMMdd"); - data.setId(data.getHwdm() + date + String.format("%03d", max + 1)); + String id = createId(data.getChangeTime(), ContextUtil.getCompanyId(), data.getHwdm()); + data.setId(id); data.setCzbz("i"); session.save(data); } else { @@ -123,8 +122,62 @@ args.put("endTime", DateUtil.getNextZero(date)); } - hql += " order by updateTime desc limit 20"; + hql += " order by updateTime desc "; return this.query(hql, args); } + public List<InoutVarietyChange> getMaxId(Map<String, Object> param) { + + String hql = "from " + InoutVarietyChange.class.getName() + " where 1 = 1 "; + Map<String, Object> args = new HashMap<String, Object>(); + if (null != param) { + String str = (String) param.get("timeKey"); + if (StringUtils.isNotEmpty(str)) { + hql += " and id like :timeKey"; + args.put("timeKey", str); + } + } + hql += " order by id desc "; + return this.query(hql, args); + } + + public String createId(Date date, String companyId, String freightId) { + // 鏃堕棿鎴虫爣绛� + String timeKey = DateFormatUtils.format(date, "yyyyMMdd"); + + // 浠庣紦瀛樹腑鑾峰彇宸叉湁鐨勭粍缁囩紪鐮� + String cacheKey = RedisConst.buildKey(companyId, + InoutManageUtil.CACHE_VARIETY_ID); + + String cacheId = (String) redisUtil.get(cacheKey); + + if (null != cacheId && cacheId.indexOf(freightId + timeKey) >= 0) { + String temp = cacheId.substring(cacheId.length() - 3); + Integer i = Integer.valueOf(temp); + i++; + cacheId = freightId + timeKey + String.format("%03d", i); + } else { + Map<String, Object> args = new HashMap<>(); + args.put("timeKey", "%" + freightId + timeKey + "%"); + List<InoutVarietyChange> result = getMaxId(args); + + if (null == result || result.size() == 0) { + cacheId = freightId + timeKey + "001"; + } else { + int max = 0; + int num; + for (InoutVarietyChange varietyChange : result) { + num = Integer.parseInt(varietyChange.getId().substring(varietyChange.getId().length() - 3)); + max = Math.max(max, num); + } + cacheId = freightId + timeKey + String.format("%03d", ++max); + } + } + // 鏇存柊缂撳瓨 + redisUtil.set(cacheKey, cacheId); + + return cacheId; + } + + } diff --git a/igds-inout/src/main/java/com/ld/igds/m/view/StockChange.view.xml b/igds-inout/src/main/java/com/ld/igds/m/view/StockChange.view.xml index ab7e9dc..2f486da 100644 --- a/igds-inout/src/main/java/com/ld/igds/m/view/StockChange.view.xml +++ b/igds-inout/src/main/java/com/ld/igds/m/view/StockChange.view.xml @@ -73,11 +73,12 @@ <PropertyDef name="changeDate"> <Property name="dataType">Date</Property> <Property name="label">鍊掍粨鏃ユ湡</Property> + <Property name="required">true</Property> </PropertyDef> <PropertyDef name="number"> <Property name="dataType">Double</Property> <Property name="label">鍊掍粨鏁伴噺</Property> - <Property name="displayFormat">#.00 KG</Property> + <Property name="displayFormat">#,##0.00 KG</Property> </PropertyDef> <PropertyDef name="updateTime"> <Property name="dataType">Date</Property> -- Gitblit v1.9.3