package com.gk.firework.Domain.Vo; import com.gk.firework.Domain.SaleOrderInfo; import com.gk.firework.Domain.UserInfo; import com.gk.firework.Domain.Utils.BeanUtils; import com.gk.firework.Domain.Utils.StringUtils; import java.math.BigDecimal; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; import static com.gk.firework.Domain.Vo.EntryUtils.RK_ENTRY; import static com.gk.firework.Domain.Vo.EntryUtils.TH_ENTRY; /** * @author : jingjy * @date : 2021/3/19 8:48 * 公共处理方法 */ public class FireworkDeal { public static final int DIRECTION_ITEM = 10; public static final int DIRECTION_INSIDE = 19; public static final int DIRECTION_OUTSIDE = 22; private static final String RETAIL_ORDER = "1"; private static final String GROUP_ORDER = "2"; private static final String NORMAL_DELIVERY = "1"; public static final String OTHER_DELIVERY = "2"; public static final String MODULE_ENTRY = "入库"; public static final String MODULE_DELIVERY = "出库"; private static final String MODULE_SALE = "销售"; public static DirectionDetail dealDirectionCode(String direction){ DirectionDetail directionDetail = new DirectionDetail(); if (StringUtils.isBlank(direction)){ return directionDetail; } int length = direction.length(); if (length != DIRECTION_INSIDE && length != DIRECTION_OUTSIDE ){ return directionDetail; } directionDetail.setOriginalCode(direction); directionDetail.setLength(length); String itemCode = direction.substring(0,10); String dateCode = direction.substring(10,14); String serialNo = direction.substring(14,19); if (length == DIRECTION_OUTSIDE){ String boxNo = direction.substring(19,22); directionDetail.setBoxNo(boxNo); } directionDetail.setItemCode(itemCode); directionDetail.setDateCode(dateCode); directionDetail.setSerialNo(serialNo); return directionDetail; } public static boolean is22Characters(String direction){ return !StringUtils.isBlank(direction) && direction.length() == 22; } public static boolean is19Characters(String direction){ return !StringUtils.isBlank(direction) && direction.length() == 19; } /** * 判断字符串是否流向码 * @param direction 流向码 * @return true:不是流向码 */ public static boolean isNotDirectionCode(String direction){ return !is19Characters(direction) && !is22Characters(direction); } /** * 通过22位流向码获取一批19位流向码 * @param dire 流向码 * @param detailFirst 首个流向码详情 * @param detailLast 尾个流向码详情 * @param productVos 获取的一批19位码详情 * @param productVo 产品详情 */ public static void getProductVos(String dire, DirectionDetail detailFirst, DirectionDetail detailLast, List productVos, ProductVo productVo) { for (int i = Integer.parseInt(detailFirst.getSerialNo());i < Integer.parseInt(detailLast.getSerialNo())+Integer.parseInt(detailLast.getBoxNo());i++){ ProductVo productVoCopy = BeanUtils.copy(productVo, ProductVo.class); productVoCopy.setDirectionCode(dire.substring(0, 14) + String.format("%05d", i)); productVos.add(productVoCopy); } } public static Map> getProductCodeVoList(ProductCodeVo productCodeVo) { List productCodeVoList = new ArrayList<>(); List printCodeVoList = new ArrayList<>(); DirectionDetail detailDetail = dealDirectionCode(productCodeVo.getOriginalcode()); for (int i = Integer.parseInt(detailDetail.getSerialNo());i < Integer.parseInt(detailDetail.getSerialNo())+Integer.parseInt(detailDetail.getBoxNo());i++){ ProductCodeVo productVoCopy = BeanUtils.copy(productCodeVo, ProductCodeVo.class); productVoCopy.setItemcode(productCodeVo.getOriginalcode().substring(0, 14) + String.format("%05d", i)); productCodeVoList.add(productVoCopy); } ProductCodeVo productVoCopy = new ProductCodeVo(); printCodeVoList.addAll(productCodeVoList); if (productCodeVoList.size() > 0 && productCodeVoList.size() % 2 == 0) { //2个空行 printCodeVoList.add(productVoCopy); printCodeVoList.add(productVoCopy); } else if (productCodeVoList.size() > 0 && productCodeVoList.size() % 2 == 1) { //3个空行 printCodeVoList.add(productVoCopy); printCodeVoList.add(productVoCopy); printCodeVoList.add(productVoCopy); } productCodeVoList.add(productVoCopy); HashMap> result = new HashMap<>(); result.put("productCodeVoList", productCodeVoList); result.put("printCodeVoList", printCodeVoList); return result; } public static List getBatchProductCodeList(ProductCodeVo productCodeVo,Integer needBlank) { List productCodeVoList = new ArrayList<>(); List printCodeVoList = new ArrayList<>(); DirectionDetail detailDetail = dealDirectionCode(productCodeVo.getOriginalcode()); for (int i = Integer.parseInt(detailDetail.getSerialNo());i < Integer.parseInt(detailDetail.getSerialNo())+Integer.parseInt(detailDetail.getBoxNo());i++){ ProductCodeVo productVoCopy = BeanUtils.copy(productCodeVo, ProductCodeVo.class); productVoCopy.setItemcode(productCodeVo.getOriginalcode().substring(0, 14) + String.format("%05d", i)); productCodeVoList.add(productVoCopy); } ProductCodeVo productVoCopy = new ProductCodeVo(); printCodeVoList.addAll(productCodeVoList); if (productCodeVoList.size() > 0 && productCodeVoList.size() % 2 == 0 && needBlank == 1) { //2个空行 printCodeVoList.add(productVoCopy); printCodeVoList.add(productVoCopy); } else if (productCodeVoList.size() > 0 && productCodeVoList.size() % 2 == 1) { //1个空行 printCodeVoList.add(productVoCopy); } productCodeVoList.add(productVoCopy); return printCodeVoList; } public static void setProductVosAttribute(ProductVo productVo){ if (productVo != null){ DirectionDetail directionDetail = dealDirectionCode(productVo.getDirectionCode()); productVo.setItemCode(directionDetail.getItemCode()); productVo.setBoxNo(directionDetail.getBoxNo()); productVo.setSerialNo(directionDetail.getSerialNo()); productVo.setDateCode(directionDetail.getDateCode()); } } /** * 生成OrderCode */ /*public static String generateOrderCode(String module, String type, Date date){ DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); String orderCode = dateFormat.format(date); orderCode += (int)(Math.random()*1000); switch (module) { case MODULE_ENTRY: if (type.equals(RK_ENTRY)) { orderCode = "RK-" + orderCode; } else if (type.equals(TH_ENTRY)) { orderCode = "TH-" + orderCode; } break; case MODULE_DELIVERY: if (type.equals(NORMAL_DELIVERY)) { orderCode = "ND-" + orderCode; } else { orderCode = "OD-" + orderCode; } break; case MODULE_SALE: if (type.equals(RETAIL_ORDER)) { orderCode = "RO-" + orderCode; } else if (type.equals(GROUP_ORDER)) { orderCode = "GO-" + orderCode; } break; default: } return orderCode; }*/ /** * 身份证中间数字加密 * @param idCardNum 身份证号 * @return 加密后的身份证号 */ public static String hideIdCardNum(String idCardNum){ if (StringUtils.isBlank(idCardNum)){ return idCardNum; } String begin = idCardNum.substring(0,6); String end = idCardNum.substring(idCardNum.length()-6); String mid = "******"; return begin+mid+end; } /** * 根据单个含药量,返回一位编码 * 0 x<1 * 1 1≤x<2 * 2 2≤x<3 * 3 3≤x<4 * 4 4≤x<5 * 5 5≤x<6 * 6 6≤x<7 * 7 7≤x<8 * 8 8≤x<9 * 9 9≤x<10 * A 10≤x<20 * B 20≤x<30 * C 30≤x<40 * D 40≤x≤50 * E 50<x<100 * F 100≤x<200 * G 200≤x<500 * H 500≤x<1000 * I 定义中不含I * J 1000≤x≤1200 * K 1200<x≤3000 * L 3000<x≤8000 */ public static String getBitCode(float x){ String bitCode = ""; if (x < 1){ bitCode = "0"; }else if (1<=x && x<2){ bitCode = "1"; }else if (x>=2 && x<3){ bitCode = "2"; }else if (x>=3 && x<4){ bitCode = "3"; }else if (x>=4 && x<5){ bitCode = "4"; }else if (x>=5 && x<6){ bitCode = "5"; }else if (x>=6 && x<7){ bitCode = "6"; }else if (x>=7 && x<8){ bitCode = "7"; }else if (x>=8 && x<9){ bitCode = "8"; }else if (x>=9 && x<10){ bitCode = "9"; }else if (x>=10 && x<20){ bitCode = "A"; }else if (x>=20 && x<30){ bitCode = "B"; }else if (x>=30 && x<40){ bitCode = "C"; }else if (x>=40 && x<=50){ bitCode = "D"; }else if (x>50 && x<100){ bitCode = "E"; }else if (x>=100 && x<200){ bitCode = "F"; }else if (x>=200 && x<500){ bitCode = "G"; }else if (x>=500 && x<1000){ bitCode = "H"; }else if (x>=1000 && x<=1200){ bitCode = "J"; }else if (x>1200 && x<=3000){ bitCode = "K"; }else if (x>3000 && x<=8000){ bitCode = "L"; } return bitCode; } }