package com.zy.asrs.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Arith; import com.core.common.Cools; import com.core.common.SpringUtils; import com.zy.asrs.entity.AdjDetl; import com.zy.asrs.service.AdjDetlService; import com.zy.common.properties.SlaveProperties; import com.zy.common.service.CommonService; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; /** * Created by vincent on 2020/8/27 */ public class Utils { private static final DecimalFormat fmt = new DecimalFormat("##0.00"); public static float scale(Float f){ if (f == null || f == 0f || Float.isNaN(f)) { return 0f; } return (float) Arith.multiplys(2, f, 1); } public static String zerofill(String msg, Integer count){ if (msg.length() == count){ return msg; } else if (msg.length() > count){ return msg.substring(0, 16); } else { StringBuilder msgBuilder = new StringBuilder(msg); for (int i = 0; i getGroupLoc(String locNo){ int row = getRow(locNo); int bay = getBay(locNo); if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) { List result = new ArrayList<>(); for (Integer row0 : CommonService.FIRST_GROUP_ROW_LIST) { result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); } return result; } if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) { List result = new ArrayList<>(); for (Integer row0 : CommonService.SECOND_GROUP_ROW_LIST) { result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); } return result; } if (CommonService.THIRD_GROUP_ROW_LIST.contains(row)) { List result = new ArrayList<>(); for (Integer row0 : CommonService.THIRD_GROUP_ROW_LIST) { result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); } Collections.reverse(result); return result; } if (CommonService.FOURTH_GROUP_ROW_LIST.contains(row)) { List result = new ArrayList<>(); for (Integer row0 : CommonService.FOURTH_GROUP_ROW_LIST) { result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); } return result; } if (CommonService.FIFTH_GROUP_ROW_LIST.contains(row)) { List result = new ArrayList<>(); for (Integer row0 : CommonService.FIFTH_GROUP_ROW_LIST) { result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); } return result; } if (CommonService.SIXTH_GROUP_ROW_LIST.contains(row) && (bay >= 59 && bay <= 61)) { List result = new ArrayList<>(); for (Integer row0 : CommonService.SIXTH_GROUP_ROW_LIST) { result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); } Collections.reverse(result); return result; } if (CommonService.SEVENTH_GROUP_ROW_LIST.contains(row) && bay < 59) { List result = new ArrayList<>(); for (Integer row0 : CommonService.SEVENTH_GROUP_ROW_LIST) { result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); } return result; } if (CommonService.EIGHTH_GROUP_ROW_LIST.contains(row) && bay < 59) { List result = new ArrayList<>(); for (Integer row0 : CommonService.EIGHTH_GROUP_ROW_LIST) { result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); } return result; } throw new RuntimeException("库位解析异常"); } public static void main(String[] args) { System.out.println(JSON.toJSONString(getGroupInnerLoc("1505908"))); } /** * 获取深浅库位组 * @param locNo 库位号 * @return */ public static List getGroupDeepLoc(String locNo){ int row = getRow(locNo); int bay = getBay(locNo); //(1,3,4,10,11)没有外侧方向库位组,(13,14,16)59列之内没有外侧方向库位组 if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) {//1排 return new ArrayList<>(); } if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) {//3-4排 return new ArrayList<>(); } if (CommonService.THIRD_GROUP_ROW_LIST.contains(row)) {//6-7排 List result = new ArrayList<>(); for (Integer row0 : CommonService.THIRD_GROUP_ROW_LIST) { result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); } return result; } if (CommonService.FOURTH_GROUP_ROW_LIST.contains(row)) {//8排 return new ArrayList<>(); } if (CommonService.FIFTH_GROUP_ROW_LIST.contains(row)) {//10-11排 return new ArrayList<>(); } if (CommonService.SIXTH_GROUP_ROW_LIST.contains(row) && (bay >= 59 && bay <= 61)) {//13-16排59-61列外侧方向库位组 List result = new ArrayList<>(); for (Integer row0 : CommonService.SIXTH_GROUP_ROW_LIST) { result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); } return result; } if (CommonService.SEVENTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//13-14排59列之内没有外侧方向库位组 return new ArrayList<>(); } if (CommonService.EIGHTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//16排59列之内没有外侧方向库位组 return new ArrayList<>(); } throw new RuntimeException("库位解析异常"); } /** * 获取外侧方向的库位组 * @param locNo 库位号 * @return */ public static List getGroupOuterLoc(String locNo){ int row = getRow(locNo); int bay = getBay(locNo); //(1,3,4,10,11)没有外侧方向库位组,(13,14,16)59列之内没有外侧方向库位组 if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) {//1排 return new ArrayList<>(); } if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) {//3-4排 return new ArrayList<>(); } if (CommonService.THIRD_GROUP_ROW_LIST.contains(row)) {//6-7排 List result = new ArrayList<>(); for (Integer row0 : CommonService.THIRD_GROUP_ROW_LIST) { if (row0 < row) { result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); } } return result; } if (CommonService.FOURTH_GROUP_ROW_LIST.contains(row)) {//8排 return new ArrayList<>(); } if (CommonService.FIFTH_GROUP_ROW_LIST.contains(row)) {//10-11排 return new ArrayList<>(); } if (CommonService.SIXTH_GROUP_ROW_LIST.contains(row) && (bay >= 59 && bay <= 61)) {//13-16排59-61列外侧方向库位组 List result = new ArrayList<>(); for (Integer row0 : CommonService.SIXTH_GROUP_ROW_LIST) { if (row0 < row) { result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); } } return result; } if (CommonService.SEVENTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//13-14排59列之内没有外侧方向库位组 return new ArrayList<>(); } if (CommonService.EIGHTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//16排59列之内没有外侧方向库位组 return new ArrayList<>(); } throw new RuntimeException("库位解析异常"); } /** * 获取内侧方向的库位组 * @param locNo 库位号 * @return */ public static List getGroupInnerLoc(String locNo){ int row = getRow(locNo); int bay = getBay(locNo); //(1,3,4,10,11)没有内侧方向库位组,(13,14,16)59列之内没有内侧方向库位组 if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) {//1排 return new ArrayList<>(); } if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) {//3-4排 return new ArrayList<>(); } if (CommonService.THIRD_GROUP_ROW_LIST.contains(row)) {//6-7排 List result = new ArrayList<>(); for (Integer row0 : CommonService.THIRD_GROUP_ROW_LIST) { if (row0 > row) { result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); } } return result; } if (CommonService.FOURTH_GROUP_ROW_LIST.contains(row)) {//8排 return new ArrayList<>(); } if (CommonService.FIFTH_GROUP_ROW_LIST.contains(row)) {//10-11排 return new ArrayList<>(); } if (CommonService.SIXTH_GROUP_ROW_LIST.contains(row) && (bay >= 59 && bay <= 61)) {//13-16排59-61列内侧方向库位组 List result = new ArrayList<>(); for (Integer row0 : CommonService.SIXTH_GROUP_ROW_LIST) { if (row0 > row) { result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2)); } } return result; } if (CommonService.SEVENTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//13-14排59列之内没有内侧方向库位组 return new ArrayList<>(); } if (CommonService.EIGHTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//16排59列之内没有内侧方向库位组 return new ArrayList<>(); } throw new RuntimeException("库位解析异常"); } //通过输送站点号获取提升机号 public static Integer stnNoToLiftNo(Integer stnNo) { //一号提升机 ArrayList one = new ArrayList(){{ add(100);add(101); add(200);add(201); add(300);add(301); }}; //二号提升机 ArrayList two = new ArrayList(){{ add(102);add(103); add(202);add(203); add(340);add(341); }}; //三号提升机 ArrayList three = new ArrayList(){{ add(104);add(105); add(204);add(205); add(345);add(346); }}; if (one.contains(stnNo)) { return 1; } else if (two.contains(stnNo)) { return 2; } else if (three.contains(stnNo)) { return 3; } return null; } public static void wapperSetCondition(Wrapper wrapper, String column, String condition){ if(Cools.isEmpty(condition) || "null".equals(condition)){ wrapper.andNew().eq(column,"").or().isNull(column); }else { wrapper.andNew().eq(column,condition); } } public static void confirmOnlyMat(Wrapper wrapper, String matnr, String csocode, String isoseq){ wapperSetCondition(wrapper,"matnr",matnr); wapperSetCondition(wrapper,"csocode",csocode); wapperSetCondition(wrapper,"isoseq",isoseq); } public static void confirmOnlyMat(Wrapper wrapper, String matnr, String batch, String threeCode, String deadTime){ wapperSetCondition(wrapper,"matnr",matnr); wapperSetCondition(wrapper,"three_code",threeCode); wapperSetCondition(wrapper,"dead_time",deadTime); wapperSetCondition(wrapper,"batch",batch); } public static void confirmOnlyMat2(Wrapper wrapper, String orderNo, String matnr, String batch, String threeCode, String deadTime){ wapperSetCondition(wrapper,"matnr",matnr); wapperSetCondition(wrapper,"order_no",orderNo); wapperSetCondition(wrapper,"three_code",threeCode); wapperSetCondition(wrapper,"dead_time",deadTime); wapperSetCondition(wrapper,"batch",batch); } //生成库存调整记录单据号 (年月日+4位流水) public static String generateAdjustOrderNo(){ Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String dateStr = sdf.format(date); try { AdjDetlService adjDetlService = SpringUtils.getBean(AdjDetlService.class); AdjDetl adjDetl = adjDetlService.selectOne(new EntityWrapper().orderBy("adj_id",false)); if(!Cools.isEmpty(adjDetl)){ String orderNo = adjDetl.getOrderNo(); String lastDateStr = orderNo.substring(0, 8); if(Cools.eq(dateStr,lastDateStr)){ int index = Integer.parseInt(orderNo.substring(8, 12)); index++; if(index < 10){ return dateStr + "000" + index; } if(index < 100){ return dateStr + "00" + index; } if(index < 1000){ return dateStr + "0" + index; } return dateStr + index; }else { return dateStr + "0000"; } }else { return dateStr + "0000"; } }catch (Exception e){ return dateStr + "0000"; } } public static String getOrderNo(String orderNo, double anfme){ JSONArray orderArray = new JSONArray(); //如果订单号为jsonString if(orderNo.contains("{")){ JSONArray jsonArray = JSON.parseArray(orderNo); //遍历所有订单号及订单数量 for (Object o : jsonArray){ JSONObject orderJson = (JSONObject) o; Double orderAnfme = orderJson.getDouble("anfme"); //如果订单数量为0,则跳过 if(orderAnfme <= 0){ continue; } if(orderAnfme > anfme){ //如果订单数量大于该库存数量,且订单数组为空,则直接返回该订单号,否则就将该订单添加到订单数组 if(orderArray.isEmpty()){ return orderJson.getString("orderNo"); }else { orderJson.put("anfme",anfme); orderArray.add(orderJson); } }else { anfme -= orderAnfme; orderArray.add(orderJson); } } return orderArray.toJSONString(); }else { return orderNo; } } public static String orderMergeUpdate(String orderNo, double anfme){ if(orderNo.contains("{")){ JSONArray jsonArray = JSON.parseArray(orderNo); for(int i=0; i anfme){ ((JSONObject) jsonArray.get(i)).put("anfme",orderAnfme - anfme); return jsonArray.toJSONString(); }else { ((JSONObject) jsonArray.get(i)).put("anfme",0); anfme -= orderAnfme; } } return jsonArray.toJSONString(); }else { return orderNo; } } }