郑永安
2023-06-19 f65443d8abeaedc9d102324565e8368e7c9d90c8
src/main/java/com/gk/firework/Domain/Vo/FireworkDeal.java
对比新文件
@@ -0,0 +1,288 @@
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<ProductVo> 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<String,List<ProductCodeVo>> getProductCodeVoList(ProductCodeVo productCodeVo) {
        List<ProductCodeVo> productCodeVoList = new ArrayList<>();
        List<ProductCodeVo> 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<String,List<ProductCodeVo>> result = new HashMap<>();
        result.put("productCodeVoList", productCodeVoList);
        result.put("printCodeVoList", printCodeVoList);
        return result;
    }
    public static List<ProductCodeVo> getBatchProductCodeList(ProductCodeVo productCodeVo,Integer needBlank) {
        List<ProductCodeVo> productCodeVoList = new ArrayList<>();
        List<ProductCodeVo> 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;
    }
}