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;
|
}
|
}
|