package com.gk.firework.Service.ServiceImpl;
|
import com.gk.firework.Domain.BO.SaleOrderDetailInfoBO;
|
import com.google.common.collect.Lists;
|
import java.util.Date;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.gk.firework.Domain.*;
|
import com.gk.firework.Domain.Enum.Element;
|
import com.gk.firework.Domain.Enum.EnterpriseSafetySupervision;
|
import com.gk.firework.Domain.Exception.BusinessException;
|
import com.gk.firework.Domain.Utils.*;
|
import com.gk.firework.Domain.Vo.DirectionDetail;
|
import com.gk.firework.Domain.Vo.FireworkDeal;
|
import com.gk.firework.Domain.Vo.Product2JsonVo;
|
import com.gk.firework.Domain.Vo.ProductVo;
|
import com.gk.firework.Service.*;
|
import org.apache.log4j.LogManager;
|
import org.apache.log4j.Logger;
|
import org.apache.poi.hssf.usermodel.*;
|
import org.apache.poi.ss.usermodel.FormulaEvaluator;
|
import org.apache.poi.ss.usermodel.Row;
|
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.xssf.usermodel.*;
|
import org.apache.poi.ss.usermodel.Workbook;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.management.relation.Role;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.math.BigDecimal;
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
import java.util.regex.Pattern;
|
|
@Service("ExcelExportService")
|
public class ExcelExportServiceImpl implements ExcelExportService {
|
private Logger logger = LogManager.getLogger(getClass());
|
|
String[] districttitle = {"code", "name", "parentcode", "type"};
|
|
String[] selfCheckTitle = {"检查类型", "检查内容", "参考判断", "排序", "备注"};
|
|
String[] enterpriseTitle = {"企业名称", "单位编号", "安全监管分类", "省", "市", "区", "密码"};
|
|
String[] feedTitle = {"反馈内容", "发现时间"};
|
|
String[] userTitle = {"用户名", "密码", "单位", "省", "市", "区", "街道", "社区", "角色", "办公电话", "手机号", "邮箱", "部门", "职务"};
|
|
String[] userCodeTitle = {"单位", "统一社会信用代码"};
|
|
String[] productTitle = {"产品名称", "产品编号", "产品数量"};
|
|
String[] contractProductTitle = {"产品名称", "产品编号", "产品数量", "单箱进价"};
|
|
String[] productPriceTitle = {"产品名称", "流向码", "售价", "生产厂家", "规格", "含药量", "大类", "小类", "产品级别", "箱含量", "生产日期"};
|
|
String[] returnTags = {"电子标签号", "产品名称", "生产厂家", "总装药量", "箱含量", "产品类型", "产品级别", "创建时间", "包装标识码", "进价"};
|
|
String[] productDataTitle = {"流向码", "产品名称", "产品大类", "产品小类", "产品级别", "生产厂家", "规格", "含药量", "箱含量", "包装方式", "生产日期"};
|
|
String[] companyCodeTitle = {"单位名称", "单位代码"};
|
|
String[] saleProductTitle = {"包装标识码"};
|
|
String[] saleOrderTitle = {"零售单位名称","购买人身份证号","购买时间","购买数量"};
|
|
//正整数
|
String pattern = "^[0-9]*[1-9][0-9]*$";
|
|
Pattern pattern2 = Pattern.compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$");
|
|
@Autowired
|
private DistrictService districtService;
|
@Autowired
|
private SelfCheckService selfCheckService;
|
@Autowired
|
private EnterpriseService enterpriseService;
|
@Autowired
|
private UserService userService;
|
@Autowired
|
private UserRolesService userRolesService;
|
@Autowired
|
private RoleService roleService;
|
@Autowired
|
private EnterpriseFeedService enterpriseFeedService;
|
@Autowired
|
private ProductService productService;
|
@Autowired
|
private ProductPriceService productPriceService;
|
@Autowired
|
private ProductCategoryService productCategoryService;
|
@Autowired
|
private SaleProductService saleProductService;
|
@Autowired
|
private CustomerService customerService;
|
@Autowired
|
private SaleOrderService saleOrderService;
|
@Autowired
|
private ProductLocusService productLocusService;
|
|
@Override
|
public BooleanReason importDistrictExcel(InputStream in, String operator, Boolean isExcel2007) {
|
BooleanReason blret = new BooleanReason();
|
List<DistrictInfo> districtInfoList = new ArrayList<>();
|
String retmsg = "";
|
blret.setValue(false);
|
try {
|
Workbook workbook = null;
|
if (isExcel2007) {
|
workbook = new XSSFWorkbook(in);
|
} else {
|
workbook = new HSSFWorkbook(in);
|
}
|
|
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
|
Sheet sheet = workbook.getSheetAt(0);
|
if (sheet == null) {
|
blret.addReason("excel 第1页不能为空");
|
return blret;
|
}
|
Row row = sheet.getRow(0);
|
// 标题总列数
|
int colNum = row.getPhysicalNumberOfCells();
|
String[] title = new String[colNum];
|
|
if (colNum != districttitle.length) {
|
blret.addReason("上传文件的列的个数错误");
|
return blret;
|
}
|
|
for (int i = 0; i < colNum; i++) {
|
title[i] = row.getCell(i).getStringCellValue();
|
if (StringUtils.isNotBlank(title[i])) {
|
title[i] = title[i].trim();
|
}
|
if (!title[i].equals((districttitle[i]))) {
|
blret.addReason("上传文件的第" + (i + 1) + "列的标题为" + title[i] + "不为" + districttitle[i]);
|
return blret;
|
}
|
}
|
|
for (int irow = 1; irow <= sheet.getLastRowNum(); irow++) {
|
int realrow = irow + 1;
|
DistrictInfo districtInfo = new DistrictInfo();
|
Object value = null;
|
row = sheet.getRow(irow);
|
|
value = ExcelProperty.getCellValue(row.getCell(0), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,编码不能为空.<br/>";
|
continue;
|
} else {
|
districtInfo.setCode(value.toString().trim());
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(1), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,名称不能为空.<br/>";
|
continue;
|
} else {
|
districtInfo.setName(value.toString().trim());
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(2), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,父编码不能为空.<br/>";
|
continue;
|
} else {
|
districtInfo.setParentcode(value.toString().trim());
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(3), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,类型不能为空.<br/>";
|
continue;
|
} else {
|
districtInfo.setType(Byte.valueOf(value.toString()));
|
}
|
|
districtInfoList.add(districtInfo);
|
}
|
|
for (DistrictInfo districtInfo : districtInfoList) {
|
districtService.save(districtInfo);
|
}
|
|
if (StringUtils.isNotBlank(retmsg)) {
|
retmsg = retmsg + "导入成功" + districtInfoList.size() + "个," + "导入失败" + (sheet.getLastRowNum() - districtInfoList.size()) + "个。";
|
blret.addReason(retmsg);
|
return blret;
|
}
|
} catch (IOException e) {
|
logger.error(e.getLocalizedMessage());
|
blret.addReason("导入错误");
|
return blret;
|
}
|
|
blret.setValue(true);
|
return blret;
|
}
|
|
@Override
|
public BooleanReason imporSelfCheckExcel(InputStream in, String username, Boolean isExcel2007) {
|
BooleanReason blret = new BooleanReason();
|
List<SelfCheckInfo> selfCheckInfoList = new ArrayList<>();
|
String retmsg = "";
|
blret.setValue(false);
|
try {
|
Workbook workbook = null;
|
if (isExcel2007) {
|
workbook = new XSSFWorkbook(in);
|
} else {
|
workbook = new HSSFWorkbook(in);
|
}
|
|
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
|
Sheet sheet = workbook.getSheetAt(0);
|
if (sheet == null) {
|
blret.addReason("excel 第1页不能为空");
|
return blret;
|
}
|
Row row = sheet.getRow(0);
|
// 标题总列数
|
int colNum = row.getPhysicalNumberOfCells();
|
String[] title = new String[colNum];
|
|
if (colNum != selfCheckTitle.length) {
|
blret.addReason("上传文件的列的个数错误");
|
return blret;
|
}
|
|
for (int i = 0; i < colNum; i++) {
|
title[i] = row.getCell(i).getStringCellValue();
|
if (StringUtils.isNotBlank(title[i])) {
|
title[i] = title[i].trim();
|
}
|
if (!title[i].equals((selfCheckTitle[i]))) {
|
blret.addReason("上传文件的第" + (i + 1) + "列的标题为" + title[i] + "不为" + selfCheckTitle[i]);
|
return blret;
|
}
|
}
|
|
for (int irow = 1; irow <= sheet.getLastRowNum(); irow++) {
|
int realrow = irow + 1;
|
SelfCheckInfo selfCheckInfo = new SelfCheckInfo();
|
Object value = null;
|
row = sheet.getRow(irow);
|
|
value = ExcelProperty.getCellValue(row.getCell(0), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,检查类型不能为空.<br/>";
|
continue;
|
} else {
|
selfCheckInfo.setType(value.toString().trim());
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(1), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,检查内容不能为空.<br/>";
|
continue;
|
} else {
|
selfCheckInfo.setContent(value.toString().trim());
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(2), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,参考判断不能为空.<br/>";
|
continue;
|
} else {
|
selfCheckInfo.setStandard(value.toString().trim());
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(3), evaluator);
|
if (null != value && StringUtils.isNotBlank(value.toString())) {
|
try {
|
selfCheckInfo.setSort(Integer.parseInt(value.toString().trim()));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
selfCheckInfo.setCreatedby(username);
|
selfCheckInfo.setModifiedby(username);
|
selfCheckInfo.setCreateddate(new Date());
|
selfCheckInfo.setModifieddate(new Date());
|
selfCheckInfo.setIsdel((byte) 0);
|
selfCheckInfoList.add(selfCheckInfo);
|
}
|
selfCheckService.saveBatch(selfCheckInfoList);
|
|
if (StringUtils.isNotBlank(retmsg)) {
|
retmsg = retmsg + "导入成功" + selfCheckInfoList.size() + "个," + "导入失败" + (sheet.getLastRowNum() - selfCheckInfoList.size()) + "个。";
|
blret.addReason(retmsg);
|
return blret;
|
}
|
} catch (IOException e) {
|
logger.error(e.getLocalizedMessage());
|
blret.addReason("导入错误");
|
return blret;
|
}
|
|
blret.setValue(true);
|
return blret;
|
}
|
|
@Override
|
public BooleanReason importEnterpriseExcel(InputStream in, UserInfo userInfo, Boolean isExcel2007) {
|
BooleanReason blret = new BooleanReason();
|
List<Enterprise> enterpriseList = new ArrayList<>();
|
Date now = new Date();
|
|
String retmsg = "";
|
blret.setValue(false);
|
try {
|
Workbook workbook = null;
|
if (isExcel2007) {
|
workbook = new XSSFWorkbook(in);
|
} else {
|
workbook = new HSSFWorkbook(in);
|
}
|
|
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
|
Sheet sheet = workbook.getSheetAt(0);
|
if (sheet == null) {
|
blret.addReason("excel 第1页不能为空");
|
return blret;
|
}
|
Row row = sheet.getRow(0);
|
// 标题总列数
|
int colNum = row.getPhysicalNumberOfCells();
|
String[] title = new String[colNum];
|
|
if (colNum != enterpriseTitle.length) {
|
blret.addReason("上传文件的列的个数错误");
|
return blret;
|
}
|
|
for (int i = 0; i < colNum; i++) {
|
title[i] = row.getCell(i).getStringCellValue();
|
if (StringUtils.isNotBlank(title[i])) {
|
title[i] = title[i].trim();
|
}
|
if (!title[i].equals((enterpriseTitle[i]))) {
|
blret.addReason("上传文件的第" + (i + 1) + "列的标题为" + title[i] + "不为" + selfCheckTitle[i]);
|
return blret;
|
}
|
}
|
|
for (int irow = 1; irow <= sheet.getLastRowNum(); irow++) {
|
int realrow = irow + 1;
|
Enterprise enterprise = new Enterprise();
|
Object value = null;
|
row = sheet.getRow(irow);
|
|
//企业名称
|
value = ExcelProperty.getCellValue(row.getCell(0), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,企业名称不能为空.<br/>";
|
continue;
|
} else if (enterpriseService.isDuplicateEnterpriseName(value.toString().trim(), null)) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,企业名称重复.<br/>";
|
continue;
|
} else {
|
enterprise.setEnterprisename(value.toString().trim());
|
}
|
|
//单位编号
|
value = ExcelProperty.getCellValue(row.getCell(1), evaluator);
|
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,单位编号不能为空.<br/>";
|
continue;
|
} else if (enterpriseService.isDuplicateNumber(value.toString().trim(), null)) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,单位编号重复.<br/>";
|
continue;
|
} else {
|
enterprise.setEnterprisenumber(value.toString().trim());
|
}
|
|
//安全监管分类
|
//判断监管分类的类型是否能在数据字典找到
|
value = ExcelProperty.getCellValue(row.getCell(2), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,安全监管分类不能为空.<br/>";
|
continue;
|
} else if (!EnterpriseSafetySupervision.isInclude(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,安全监管分类输入错误.<br/>";
|
continue;
|
} else {
|
enterprise.setSafetysupervision(value.toString().trim());
|
}
|
|
//省
|
value = ExcelProperty.getCellValue(row.getCell(3), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,省份不能为空.<br/>";
|
continue;
|
} else {
|
enterprise.setProvince(value.toString().trim());
|
}
|
|
//市
|
value = ExcelProperty.getCellValue(row.getCell(4), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,市不能为空.<br/>";
|
continue;
|
} else {
|
enterprise.setCity(value.toString().trim());
|
}
|
|
//区
|
value = ExcelProperty.getCellValue(row.getCell(5), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,区不能为空.<br/>";
|
continue;
|
} else {
|
enterprise.setDistrict(value.toString().trim());
|
}
|
|
|
//密码
|
String PW_PATTERN = "(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@#$%^&*_.]).{8,}";
|
value = ExcelProperty.getCellValue(row.getCell(6), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,参考判断不能为空.<br/>";
|
continue;
|
} else if (!value.toString().matches(PW_PATTERN)) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,密码必须8位以上,并且包含大小写字母、数字、特殊符号三种以上.<br/>";
|
continue;
|
} else {
|
enterprise.setPassword(Base64Encrypt.encode(value.toString().getBytes()));
|
}
|
|
//计算安全监管分类个数
|
{
|
int i = enterpriseService.countBySafetySupervision(enterprise.getSafetysupervision());
|
enterprise.setDivideflag((byte) (DivideFlagUtil.enterpriseDivideFlagGenerate(i)));
|
}
|
|
enterprise.setInfocreatebyname(userInfo.getUsername());
|
enterprise.setInfocreateby(userInfo.getId());
|
enterprise.setInfocreatetime(now);
|
enterprise.setInfoupdatetime(now);
|
enterprise.setValidflag(true);
|
|
String randomStr = Element.random(Element.class).getValue().toString() + Element.random(Element.class).getValue().toString();
|
while (enterpriseService.isDuplicate2BitCode(randomStr)) {
|
randomStr = Element.random(Element.class).getValue().toString() + Element.random(Element.class).getValue().toString();
|
}
|
enterprise.setTwobitcode(randomStr);
|
enterpriseService.save(enterprise);
|
enterpriseList.add(enterprise);
|
//保存用户
|
UserInfo user = new UserInfo();
|
user.setIsdel((byte) 0);
|
user.setProvince(enterprise.getProvince());
|
user.setCity(enterprise.getCity());
|
user.setArea(enterprise.getDistrict());
|
user.setUsername(enterprise.getEnterprisename());
|
user.setCompany(enterprise.getEnterprisename());
|
user.setIssale((byte) 0);
|
//普通用户
|
user.setType(3);
|
user.setCreatedby(user.getUsername());
|
user.setCompanyid(enterprise.getId());
|
user.setCreateddate(new Date());
|
//设置密码
|
user.setPassword(enterprise.getPassword());
|
user.setCompanynumber(enterprise.getEnterprisenumber());
|
//执行
|
userService.save(user);
|
|
//如果有企业角色设置用户角色为企业
|
UserRolesInfo uri = new UserRolesInfo();
|
uri.setUserid(user.getId());
|
if (enterprise.getSafetysupervision().equals(EnterpriseSafetySupervision.PRODUCE.getMsg())) {
|
uri.setRoleid((long) 3);
|
} else {
|
uri.setRoleid((long) 2);
|
}
|
userRolesService.save(uri);
|
//终端机
|
user.setId(null);
|
user.setUsername(enterprise.getEnterprisenumber());
|
user.setIssale((byte) 1);
|
user.setStatus((byte) 1);
|
/* Calendar cal = Calendar.getInstance();
|
cal.setTime(new Date());
|
cal.add(Calendar.DATE, +365);
|
user.setExpiredate(cal.getTime());*/
|
userService.save(user);
|
}
|
|
|
if (StringUtils.isNotBlank(retmsg)) {
|
retmsg = retmsg + "导入成功" + enterpriseList.size() + "个," + "导入失败" + (sheet.getLastRowNum() - enterpriseList.size()) + "个。";
|
blret.addReason(retmsg);
|
return blret;
|
}
|
} catch (IOException e) {
|
logger.error(e.getLocalizedMessage());
|
blret.addReason("导入错误");
|
return blret;
|
}
|
|
blret.setValue(true);
|
return blret;
|
}
|
|
@Override
|
public BooleanReason importUserExcel(InputStream in, String username, Boolean isExcel2007) {
|
BooleanReason blret = new BooleanReason();
|
List<UserInfo> userInfoList = new ArrayList<>();
|
String retmsg = "";
|
blret.setValue(false);
|
try {
|
Workbook workbook = null;
|
if (isExcel2007) {
|
workbook = new XSSFWorkbook(in);
|
} else {
|
workbook = new HSSFWorkbook(in);
|
}
|
|
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
|
Sheet sheet = workbook.getSheetAt(0);
|
if (sheet == null) {
|
blret.addReason("excel 第1页不能为空");
|
return blret;
|
}
|
Row row = sheet.getRow(0);
|
// 标题总列数
|
int colNum = row.getPhysicalNumberOfCells();
|
String[] title = new String[colNum];
|
|
if (colNum != userTitle.length) {
|
blret.addReason("上传文件的列的个数错误");
|
return blret;
|
}
|
|
for (int i = 0; i < colNum; i++) {
|
title[i] = row.getCell(i).getStringCellValue();
|
if (StringUtils.isNotBlank(title[i])) {
|
title[i] = title[i].trim();
|
}
|
if (!title[i].equals((userTitle[i]))) {
|
blret.addReason("上传文件的第" + (i + 1) + "列的标题为" + title[i] + "不为" + userTitle[i]);
|
return blret;
|
}
|
}
|
|
for (int irow = 1; irow <= sheet.getLastRowNum(); irow++) {
|
int realrow = irow + 1;
|
UserInfo userInfo = new UserInfo();
|
Object value = null;
|
row = sheet.getRow(irow);
|
|
value = ExcelProperty.getCellValue(row.getCell(0), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,用户名不能为空.<br/>";
|
continue;
|
} else {
|
userInfo.setUsername(value.toString().trim());
|
UserInfo userInfoExist = userService.selectByUser(userInfo.getUsername());
|
if (null != userInfoExist) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,用户名重复.<br/>";
|
continue;
|
}
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(1), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,密码不能为空.<br/>";
|
continue;
|
} else {
|
String PW_PATTERN = "(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@#$%^&*_.]).{8,}";
|
if (!value.toString().trim().matches(PW_PATTERN)) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,密码必须8位以上,并且包含大小写字母、数字、特殊符号三种以上.<br/>";
|
continue;
|
} else {
|
userInfo.setPassword(Base64Encrypt.encode(value.toString().trim().getBytes()));
|
}
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(2), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,单位不能为空.<br/>";
|
continue;
|
} else {
|
userInfo.setCompany(value.toString().trim());
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(3), evaluator);
|
if (null != value && StringUtils.isNotBlank(value.toString())) {
|
userInfo.setProvince(value.toString().trim());
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(4), evaluator);
|
if (null != value && StringUtils.isNotBlank(value.toString())) {
|
userInfo.setCity(value.toString().trim());
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(5), evaluator);
|
if (null != value && StringUtils.isNotBlank(value.toString())) {
|
userInfo.setArea(value.toString().trim());
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(6), evaluator);
|
if (null != value && StringUtils.isNotBlank(value.toString())) {
|
userInfo.setTown(value.toString().trim());
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(7), evaluator);
|
if (null != value && StringUtils.isNotBlank(value.toString())) {
|
userInfo.setCommunity(value.toString().trim());
|
}
|
|
Long roleId = null;
|
value = ExcelProperty.getCellValue(row.getCell(8), evaluator);
|
if (null != value && StringUtils.isNotBlank(value.toString())) {
|
//角色
|
RoleInfo roleInfo = new RoleInfo();
|
roleInfo.setName(value.toString().trim());
|
RoleInfo roleInfoExist = roleService.selectRoleByName(roleInfo);
|
if (roleInfoExist == null) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,角色不存在.<br/>";
|
continue;
|
} else {
|
roleId = roleInfoExist.getId();
|
}
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(9), evaluator);
|
if (null != value && StringUtils.isNotBlank(value.toString())) {
|
userInfo.setPhone(value.toString().trim());
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(10), evaluator);
|
if (null != value && StringUtils.isNotBlank(value.toString())) {
|
if (value.toString().length() == 11) {
|
userInfo.setMobile(value.toString().trim());
|
} else {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,手机号必须为11位数.<br/>";
|
continue;
|
}
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(11), evaluator);
|
if (null != value && StringUtils.isNotBlank(value.toString())) {
|
userInfo.setEmail(value.toString().trim());
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(11), evaluator);
|
if (null != value && StringUtils.isNotBlank(value.toString())) {
|
userInfo.setDepartment(value.toString().trim());
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(11), evaluator);
|
if (null != value && StringUtils.isNotBlank(value.toString())) {
|
userInfo.setJob(value.toString().trim());
|
}
|
userInfo.setIsdel((byte) 0);
|
userInfo.setIssale((byte) 0);
|
userInfo.setCreatedby(username);
|
userInfo.setCreateddate(new Date());
|
userInfo.setLastmodifiedby(username);
|
userInfo.setLastmodifieddate(new Date());
|
|
userService.save(userInfo);
|
if (roleId != null) {
|
UserRolesInfo userRolesInfo = new UserRolesInfo();
|
userRolesInfo.setUserid(userInfo.getId());
|
userRolesInfo.setRoleid(roleId);
|
userRolesService.save(userRolesInfo);
|
}
|
userInfoList.add(userInfo);
|
}
|
|
if (StringUtils.isNotBlank(retmsg)) {
|
retmsg = retmsg + "导入成功" + userInfoList.size() + "个," + "导入失败" + (sheet.getLastRowNum() - userInfoList.size()) + "个。";
|
blret.addReason(retmsg);
|
return blret;
|
}
|
} catch (IOException e) {
|
logger.error(e.getLocalizedMessage());
|
blret.addReason("导入错误");
|
return blret;
|
}
|
|
blret.setValue(true);
|
return blret;
|
}
|
|
@Override
|
public List<Product2JsonVo> parsingProduct(InputStream inputStream, UserInfo userInfo, boolean isExcel2007, String enterprisenumber) {
|
List<Product2JsonVo> productJsons = new ArrayList<>();
|
try {
|
Workbook workbook = null;
|
if (isExcel2007) {
|
workbook = new XSSFWorkbook(inputStream);
|
} else {
|
workbook = new HSSFWorkbook(inputStream);
|
}
|
|
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
|
Sheet sheet = workbook.getSheetAt(0);
|
if (sheet == null) {
|
throw new BusinessException("excel 第1页不能为空");
|
}
|
Row row = sheet.getRow(0);
|
// 标题总列数
|
int colNum = row.getPhysicalNumberOfCells();
|
String[] title = new String[colNum];
|
|
if (colNum != contractProductTitle.length) {
|
throw new BusinessException("上传文件的列的个数错误");
|
}
|
|
for (int i = 0; i < colNum; i++) {
|
title[i] = row.getCell(i).getStringCellValue();
|
if (StringUtils.isNotBlank(title[i])) {
|
title[i] = title[i].trim();
|
}
|
if (!title[i].equals((contractProductTitle[i]))) {
|
throw new BusinessException("上传文件的第" + (i + 1) + "列的标题为" + title[i] + "不为" + selfCheckTitle[i]);
|
}
|
}
|
|
for (int irow = 1; irow <= sheet.getLastRowNum(); irow++) {
|
int realrow = irow + 1;
|
Product2JsonVo productInfoJson = new Product2JsonVo();
|
Object value = null;
|
row = sheet.getRow(irow);
|
value = ExcelProperty.getCellValue(row.getCell(0), evaluator);
|
//产品名称
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + contractProductTitle[0] + "不能为空.");
|
}
|
|
|
//产品编号
|
value = ExcelProperty.getCellValue(row.getCell(1), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + contractProductTitle[1] + "不能为空.");
|
} else {
|
String directionCode = value.toString().trim();
|
//检查产品编号是否是企业内的产品
|
int i = productService.countByEnterpriseNumberAndDirectionCode(enterprisenumber, directionCode);
|
assert i <= 1;
|
if (i < 1) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + "产品信息不为所在生产企业的产品.>");
|
}
|
ProductInfo productInfo = productService.selectByDirection(directionCode);
|
if (productInfo.getIsOld() == 1) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + "产品信息为旧系统产品,已不允许签订合同使用.>");
|
}
|
productInfoJson.setId(productInfo.getId());
|
productInfoJson.setName(productInfo.getName());
|
//使用数据库内容的流向码,区分大小写
|
productInfoJson.setDirectionCode(productInfo.getDirectionCode());
|
productInfoJson.setManufacturer(productInfo.getManufacturer());
|
productInfoJson.setSpecification(productInfo.getSpecification());
|
productInfoJson.setExplosiveContent(productInfo.getExplosiveContent());
|
productInfoJson.setType(productInfo.getType());
|
productInfoJson.setSecondaryType(productInfo.getSecondaryType());
|
productInfoJson.setLevel(productInfo.getLevel());
|
//箱含量
|
productInfoJson.setBoxNumber(productInfo.getBoxNumber());
|
productInfoJson.setPacking(productInfo.getPacking());
|
}
|
|
|
value = ExcelProperty.getCellValue(row.getCell(2), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + contractProductTitle[2] + "不能为空.");
|
} else if (!Pattern.matches(pattern, value.toString().trim())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + contractProductTitle[2] + "不为正整数.");
|
} else {
|
productInfoJson.setNum(Integer.valueOf(value.toString().trim()));
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(3), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + contractProductTitle[3] + "不能为空.");
|
} else if (!pattern2.matcher(value.toString().trim()).matches()) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + contractProductTitle[3] + "不为金额.");
|
} else {
|
productInfoJson.setPrice(new BigDecimal(value.toString().trim()));
|
}
|
|
productJsons.add(productInfoJson);
|
|
}
|
|
} catch (IOException ex) {
|
ex.printStackTrace();
|
throw new BusinessException("导入失败,请联系管理员");
|
}
|
|
return productJsons;
|
|
}
|
|
|
@Override
|
public List<Product2JsonVo> parsingProduct(InputStream inputStream, UserInfo userInfo, boolean isExcel2007) {
|
List<Product2JsonVo> productJsons = new ArrayList<>();
|
try {
|
Workbook workbook = null;
|
if (isExcel2007) {
|
workbook = new XSSFWorkbook(inputStream);
|
} else {
|
workbook = new HSSFWorkbook(inputStream);
|
}
|
|
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
|
Sheet sheet = workbook.getSheetAt(0);
|
if (sheet == null) {
|
throw new BusinessException("excel 第1页不能为空");
|
}
|
Row row = sheet.getRow(0);
|
// 标题总列数
|
int colNum = row.getPhysicalNumberOfCells();
|
String[] title = new String[colNum];
|
|
if (colNum != productTitle.length) {
|
throw new BusinessException("上传文件的列的个数错误");
|
}
|
|
for (int i = 0; i < colNum; i++) {
|
title[i] = row.getCell(i).getStringCellValue();
|
if (StringUtils.isNotBlank(title[i])) {
|
title[i] = title[i].trim();
|
}
|
if (!title[i].equals((productTitle[i]))) {
|
throw new BusinessException("上传文件的第" + (i + 1) + "列的标题为" + title[i] + "不为" + selfCheckTitle[i]);
|
}
|
}
|
|
for (int irow = 1; irow <= sheet.getLastRowNum(); irow++) {
|
int realrow = irow + 1;
|
Product2JsonVo productInfoJson = new Product2JsonVo();
|
Object value = null;
|
row = sheet.getRow(irow);
|
value = ExcelProperty.getCellValue(row.getCell(0), evaluator);
|
//产品名称
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + productTitle[0] + "不能为空.");
|
}
|
|
//产品编号
|
value = ExcelProperty.getCellValue(row.getCell(1), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + productTitle[1] + "不能为空.");
|
} else {
|
String directionCode = value.toString().trim();
|
ProductInfo productInfo = productService.selectByDirection(directionCode);
|
productInfoJson.setId(productInfo.getId());
|
productInfoJson.setName(productInfo.getName());
|
productInfoJson.setDirectionCode(directionCode);
|
productInfoJson.setManufacturer(productInfo.getManufacturer());
|
productInfoJson.setSpecification(productInfo.getSpecification());
|
productInfoJson.setExplosiveContent(productInfo.getExplosiveContent());
|
productInfoJson.setType(productInfo.getType());
|
productInfoJson.setSecondaryType(productInfo.getSecondaryType());
|
productInfoJson.setLevel(productInfo.getLevel());
|
//箱含量
|
productInfoJson.setBoxNumber(productInfo.getBoxNumber());
|
productInfoJson.setPacking(productInfo.getPacking());
|
}
|
value = ExcelProperty.getCellValue(row.getCell(2), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + productTitle[2] + "不能为空.");
|
} else if (!Pattern.matches(pattern, value.toString().trim())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + productTitle[2] + "不为正整数.");
|
} else {
|
productInfoJson.setNum(Integer.valueOf(value.toString().trim()));
|
}
|
productJsons.add(productInfoJson);
|
|
}
|
|
} catch (IOException ex) {
|
ex.printStackTrace();
|
throw new BusinessException("导入失败,请联系管理员");
|
}
|
|
return productJsons;
|
|
}
|
|
@Override
|
public BooleanReason imporEditPriceExcel(InputStream in, String companynumber, String username, Boolean isExcel2007) {
|
BooleanReason blret = new BooleanReason();
|
List<ProductPriceInfo> productPriceInfoList = new ArrayList<>();
|
String retmsg = "";
|
blret.setValue(false);
|
try {
|
Workbook workbook = null;
|
if (isExcel2007) {
|
workbook = new XSSFWorkbook(in);
|
} else {
|
workbook = new HSSFWorkbook(in);
|
}
|
|
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
|
Sheet sheet = workbook.getSheetAt(0);
|
if (sheet == null) {
|
blret.addReason("excel 第1页不能为空");
|
return blret;
|
}
|
Row row = sheet.getRow(0);
|
// 标题总列数
|
int colNum = row.getPhysicalNumberOfCells();
|
String[] title = new String[colNum];
|
|
if (colNum != productPriceTitle.length) {
|
blret.addReason("上传文件的列的个数错误");
|
return blret;
|
}
|
|
for (int i = 0; i < colNum; i++) {
|
title[i] = row.getCell(i).getStringCellValue();
|
if (StringUtils.isNotBlank(title[i])) {
|
title[i] = title[i].trim();
|
}
|
if (!title[i].equals((productPriceTitle[i]))) {
|
blret.addReason("上传文件的第" + (i + 1) + "列的标题为" + title[i] + "不为" + productPriceTitle[i]);
|
return blret;
|
}
|
}
|
|
for (int irow = 1; irow <= sheet.getLastRowNum(); irow++) {
|
int realrow = irow + 1;
|
ProductPriceInfo productPriceInfo = new ProductPriceInfo();
|
Object value = null;
|
row = sheet.getRow(irow);
|
|
value = ExcelProperty.getCellValue(row.getCell(1), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,流向码不能为空.<br/>";
|
continue;
|
} else {
|
productPriceInfo.setItemcode(value.toString().trim());
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(2), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,售价不能为空.<br/>";
|
continue;
|
} else {
|
try {
|
productPriceInfo.setPrice(new BigDecimal(value.toString().trim()));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
productPriceInfo.setCompanynumber(companynumber);
|
productPriceInfo.setUpdated(new Date());
|
productPriceInfo.setUpdator(username);
|
productPriceInfoList.add(productPriceInfo);
|
}
|
for (ProductPriceInfo productInfo : productPriceInfoList) {
|
ProductPriceInfo productPriceInfo = productPriceService.selectByCode(companynumber, productInfo.getItemcode());
|
if (productPriceInfo != null) {
|
productPriceInfo.setPrice(productInfo.getPrice());
|
productPriceInfo.setUpdated(new Date());
|
productPriceInfo.setUpdator(username);
|
productPriceService.updateById(productPriceInfo);
|
} else {
|
ProductPriceInfo productPrice = new ProductPriceInfo();
|
productPrice.setCompanynumber(companynumber);
|
productPrice.setItemcode(productInfo.getItemcode());
|
productPrice.setPrice(productInfo.getPrice());
|
productPrice.setUpdated(new Date());
|
productPrice.setUpdator(username);
|
productPriceService.save(productPrice);
|
}
|
}
|
|
if (StringUtils.isNotBlank(retmsg)) {
|
retmsg = retmsg + "导入成功" + productPriceInfoList.size() + "个," + "导入失败" + (sheet.getLastRowNum() - productPriceInfoList.size()) + "个。";
|
blret.addReason(retmsg);
|
return blret;
|
}
|
} catch (IOException e) {
|
logger.error(e.getLocalizedMessage());
|
blret.addReason("导入错误");
|
return blret;
|
}
|
|
blret.setValue(true);
|
return blret;
|
}
|
|
/**
|
* @Description: 退货电子标签数据解析
|
* @date 2021/6/3 17:15
|
*/
|
@Override
|
public List<String> parseProductCode(InputStream in, UserInfo userInfo, boolean isExcel2007) {
|
|
|
Workbook workbook = null;
|
try {
|
|
if (isExcel2007) {
|
workbook = new XSSFWorkbook(in);
|
} else {
|
workbook = new HSSFWorkbook(in);
|
}
|
|
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
|
Sheet sheet = workbook.getSheetAt(0);
|
if (sheet == null) {
|
throw new BusinessException("excel 第1页不能为空");
|
|
}
|
Row row = sheet.getRow(0);
|
// 标题总列数
|
int colNum = row.getPhysicalNumberOfCells();
|
String[] title = new String[colNum];
|
|
if (colNum != returnTags.length) {
|
throw new BusinessException("上传文件的列的个数错误");
|
}
|
|
for (int i = 0; i < colNum; i++) {
|
title[i] = row.getCell(i).getStringCellValue();
|
if (StringUtils.isNotBlank(title[i])) {
|
title[i] = title[i].trim();
|
}
|
if (!title[i].equals((returnTags[i]))) {
|
throw new BusinessException("上传文件的第" + (i + 1) + "列的标题为" + title[i] + "不为" + selfCheckTitle[i]);
|
}
|
}
|
|
List<String> allReturnTags = new ArrayList<>();
|
for (int irow = 1; irow <= sheet.getLastRowNum(); irow++) {
|
int realrow = irow + 1;
|
EnterpriseFeed feed = new EnterpriseFeed();
|
Object value = null;
|
row = sheet.getRow(irow);
|
value = ExcelProperty.getCellValue(row.getCell(0), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行,电子标签不能为空.<br/>");
|
} else {
|
allReturnTags.add(value.toString().trim());
|
}
|
}
|
|
return allReturnTags;
|
|
} catch (IOException e) {
|
e.printStackTrace();
|
throw new BusinessException("导入失败,请联系管理员");
|
}
|
|
|
}
|
|
|
/**
|
* @Description: 旧系统导入产品信息
|
* @date 2021/6/30 12:29
|
*/
|
@Override
|
public List<ProductInfo> parseProductFromOldSystem(InputStream in, UserInfo user, boolean isExcel2007) {
|
|
|
try {
|
Workbook workbook = null;
|
if (isExcel2007) workbook = new XSSFWorkbook(in);
|
if (!isExcel2007) workbook = new HSSFWorkbook(in);
|
|
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
|
Sheet sheet = workbook.getSheetAt(0);
|
if (sheet == null)
|
throw new BusinessException("excel 第1页不能为空");
|
|
Row row = sheet.getRow(0);
|
// 标题总列数
|
int colNum = row.getPhysicalNumberOfCells();
|
String[] title = new String[colNum];
|
|
if (colNum != productDataTitle.length)
|
throw new BusinessException("上传文件的列的个数错误");
|
|
for (int i = 0; i < colNum; i++) {
|
title[i] = row.getCell(i).getStringCellValue();
|
if (StringUtils.isNotBlank(title[i])) {
|
title[i] = title[i].trim();
|
}
|
if (!title[i].equals((productDataTitle[i]))) {
|
throw new BusinessException("上传文件的第" + (i + 1) + "列的标题为" + title[i] + "不为" + productDataTitle[i]);
|
}
|
}
|
List<ProductInfo> result = new ArrayList<>();
|
ProductInfo product = null;
|
for (int irow = 1; irow <= sheet.getLastRowNum(); irow++) {
|
int realrow = irow + 1;
|
Object value = null;
|
product = new ProductInfo();
|
row = sheet.getRow(irow);
|
value = ExcelProperty.getCellValue(row.getCell(0), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + productDataTitle[0] + "不能为空.");
|
} else {
|
//流向码
|
String productCode = value.toString().trim();
|
product.setDirectionCode(productCode);
|
if (productCode.length() != 10)
|
throw new BusinessException("导入失败,第" + realrow + "行," + productDataTitle[0] + "长度不为10.");
|
//重复判断
|
List<ProductInfo> productInfosExist = productService.selectByProduct(product);
|
if (productInfosExist != null && productInfosExist.size() > 0)
|
throw new BusinessException("导入失败,第" + realrow + "行," + productDataTitle[0] + "已经存在.");
|
|
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(1), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + productDataTitle[1] + "不能为空.");
|
} else {
|
//产品名称
|
String productName = value.toString().trim();
|
product.setName(productName);
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(2), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + productDataTitle[2] + "不能为空.");
|
} else {
|
//产品大类
|
String firstType = value.toString().trim();
|
product.setType(firstType);
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(3), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + productDataTitle[3] + "不能为空.");
|
} else {
|
//产品小类
|
String secondaryType = value.toString().trim();
|
product.setSecondaryType(secondaryType);
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(4), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + productDataTitle[4] + "不能为空.");
|
} else {
|
//产品级别
|
String level = value.toString().trim();
|
product.setLevel(level);
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(5), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + productDataTitle[5] + "不能为空.");
|
} else {
|
//生产厂家
|
String manufacturer = value.toString().trim();
|
Enterprise enterprise = enterpriseService.selectEnterpriseByName(manufacturer);
|
//查不到企业 或者 不为生产企业
|
if (enterprise == null || !EnterpriseSafetySupervision.PRODUCE.getMsg().equals(enterprise.getSafetysupervision()))
|
throw new BusinessException("导入失败,第" + realrow + "行," + productDataTitle[5] + "查找不到企业名称或者不为生产企业.");
|
product.setManufacturer(manufacturer);
|
product.setCompanyNumber(enterprise.getEnterprisenumber());
|
}
|
|
|
value = ExcelProperty.getCellValue(row.getCell(6), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + productDataTitle[6] + "不能为空.");
|
} else {
|
//规格
|
String specification = value.toString().trim();
|
product.setSpecification(specification);
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(7), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + productDataTitle[7] + "不能为空.");
|
} else {
|
//含药量
|
String explosiveContentStr = value.toString().trim();
|
try {
|
BigDecimal explosiveContent = new BigDecimal(explosiveContentStr);
|
product.setExplosiveContent(explosiveContent);
|
//正数
|
if (explosiveContent.compareTo(BigDecimal.ZERO) < 1)
|
throw new BusinessException("导入失败,第" + realrow + "行," + productDataTitle[7] + "需要大于等于0.");
|
} catch (NumberFormatException e) {
|
e.printStackTrace();
|
throw new BusinessException("导入失败,第" + realrow + "行," + productDataTitle[7] + "不合法.");
|
}
|
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(8), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + productDataTitle[8] + "不能为空.");
|
} else {
|
//箱含量
|
String boxNumberStr = value.toString().trim();
|
try {
|
int boxNumber = Integer.parseInt(boxNumberStr);
|
product.setBoxNumber(boxNumber);
|
if (boxNumber < 1)
|
throw new BusinessException("导入失败,第" + realrow + "行," + productDataTitle[8] + "需要大于0.");
|
} catch (NumberFormatException e) {
|
e.printStackTrace();
|
throw new BusinessException("导入失败,第" + realrow + "行," + productDataTitle[8] + "不合法.");
|
}
|
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(9), evaluator);
|
if (null != value && StringUtils.isBlank(value.toString())) {
|
//包装方式
|
String packing = value.toString().trim();
|
product.setPacking(packing);
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(10), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行," + productDataTitle[10] + "不能为空.");
|
} else {
|
//生产日期
|
try {
|
String productDateStr = value.toString().trim();
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
Date productDate = sdf.parse(productDateStr);
|
product.setProductDate(productDate);
|
} catch (ParseException e) {
|
e.printStackTrace();
|
throw new BusinessException("导入失败,第" + realrow + "行," + productDataTitle[10] + "日期请填写2021-09-27的字符型.");
|
}
|
|
}
|
|
//最后校验第一类型和第二类型和产品级别
|
boolean isExist = productCategoryService.selectOne(product.getType(), product.getSecondaryType(), product.getLevel());
|
if (!isExist)
|
throw new BusinessException("导入失败,第" + realrow + "行,大小类、级别不合法.");
|
product.setCreatedBy(user.getUsername());
|
product.setModifiedBy(user.getUsername());
|
product.setCreatedDate(new Date());
|
product.setModifiedDate(new Date());
|
result.add(product);
|
}
|
|
return result;
|
|
} catch (IOException e) {
|
e.printStackTrace();
|
throw new BusinessException("导入失败,请联系管理员");
|
}
|
|
|
}
|
|
@Override
|
public BooleanReason importUserCodeExcel(InputStream in, String operator, Boolean isExcel2007) {
|
BooleanReason blret = new BooleanReason();
|
int z = 0;
|
String retmsg = "";
|
blret.setValue(false);
|
try {
|
Workbook workbook = null;
|
if (isExcel2007) {
|
workbook = new XSSFWorkbook(in);
|
} else {
|
workbook = new HSSFWorkbook(in);
|
}
|
|
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
|
Sheet sheet = workbook.getSheetAt(0);
|
if (sheet == null) {
|
blret.addReason("excel 第1页不能为空");
|
return blret;
|
}
|
Row row = sheet.getRow(0);
|
// 标题总列数
|
int colNum = row.getPhysicalNumberOfCells();
|
String[] title = new String[colNum];
|
|
if (colNum != userCodeTitle.length) {
|
blret.addReason("上传文件的列的个数错误");
|
return blret;
|
}
|
|
for (int i = 0; i < colNum; i++) {
|
title[i] = row.getCell(i).getStringCellValue();
|
if (StringUtils.isNotBlank(title[i])) {
|
title[i] = title[i].trim();
|
}
|
if (!title[i].equals((userCodeTitle[i]))) {
|
blret.addReason("上传文件的第" + (i + 1) + "列的标题为" + title[i] + "不为" + userTitle[i]);
|
return blret;
|
}
|
}
|
|
for (int irow = 1; irow <= sheet.getLastRowNum(); irow++) {
|
int realrow = irow + 1;
|
UserInfo userInfo = new UserInfo();
|
Object value = null;
|
row = sheet.getRow(irow);
|
|
String company = "";
|
value = ExcelProperty.getCellValue(row.getCell(0), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,单位名不能为空.<br/>";
|
continue;
|
} else {
|
company = value.toString().trim();
|
List<UserInfo> userInfos = userService.selectByCompany(company);
|
if (userInfos.size() < 1) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,单位不存在.<br/>";
|
continue;
|
}
|
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(1), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,统一社会信用代码不能为空.<br/>";
|
} else {
|
String code = value.toString().trim();
|
userService.updateCodeByCompany(company, code);
|
z++;
|
|
}
|
|
|
}
|
|
if (StringUtils.isNotBlank(retmsg)) {
|
retmsg = retmsg + "导入成功" + z + "个," + "导入失败" + (sheet.getLastRowNum() - z) + "个。";
|
blret.addReason(retmsg);
|
return blret;
|
}
|
} catch (IOException e) {
|
logger.error(e.getLocalizedMessage());
|
blret.addReason("导入错误");
|
return blret;
|
}
|
|
blret.setValue(true);
|
return blret;
|
}
|
|
@Override
|
public BooleanReason importDLCompanyCodeExcel(InputStream in, UserInfo userInfo, boolean isExcel2007) {
|
Date now = new Date();
|
List<Enterprise> updates = new ArrayList<>();
|
try {
|
Workbook workbook = null;
|
if (isExcel2007) {
|
workbook = new XSSFWorkbook(in);
|
} else {
|
workbook = new HSSFWorkbook(in);
|
}
|
|
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
|
Sheet sheet = workbook.getSheetAt(0);
|
if (sheet == null) {
|
throw new BusinessException("excel 第1页不能为空");
|
|
}
|
Row row = sheet.getRow(0);
|
// 标题总列数
|
int colNum = row.getPhysicalNumberOfCells();
|
String[] title = new String[colNum];
|
|
if (colNum != companyCodeTitle.length) {
|
throw new BusinessException("上传文件的列的个数错误");
|
}
|
|
for (int i = 0; i < colNum; i++) {
|
title[i] = row.getCell(i).getStringCellValue();
|
if (StringUtils.isNotBlank(title[i])) {
|
title[i] = title[i].trim();
|
}
|
if (!title[i].equals((companyCodeTitle[i]))) {
|
throw new BusinessException("上传文件的第" + (i + 1) + "列的标题为" + title[i] + "不为" + companyCodeTitle[i]);
|
}
|
}
|
if (sheet.getLastRowNum() < 1)
|
throw new BusinessException("导入数据为空");
|
|
int kk = 0;
|
StringBuffer sb = new StringBuffer();
|
for (int irow = 1; irow <= sheet.getLastRowNum(); irow++) {
|
int realrow = irow + 1;
|
Object value = null;
|
Enterprise upOne = new Enterprise();
|
row = sheet.getRow(irow);
|
value = ExcelProperty.getCellValue(row.getCell(0), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
sb.append("导入失败,第").append(realrow).append("行,单位名称不能为空.<br/>");
|
continue;
|
} else {
|
String enterpriseName = value.toString().trim();
|
Enterprise enterprise = enterpriseService.selectEnterpriseByName(enterpriseName);
|
if (enterprise == null) {
|
sb.append("找不到该企业:").append(enterpriseName).append(",第").append(realrow).append("行");
|
continue;
|
}
|
upOne.setId(enterprise.getId());
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(1), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
sb.append("导入失败,第").append(realrow).append("行,单位代码不能为空.<br/>");
|
continue;
|
} else {
|
String code = value.toString().trim();
|
upOne.setDlcompanycode(code);
|
upOne.setInfoupdatebyname(userInfo.getUsername());
|
upOne.setInfoupdateby(userInfo.getId());
|
upOne.setInfoupdatetime(now);
|
}
|
updates.add(upOne);
|
}
|
|
for (Enterprise e : updates) {
|
enterpriseService.updateCompanyCode(e);
|
}
|
sb.append("成功" + updates.size() + "个,失败" + (sheet.getLastRowNum() - updates.size()) + "个");
|
BooleanReason booleanReason = new BooleanReason();
|
booleanReason.addReason(sb.toString());
|
|
return booleanReason;
|
|
} catch (IOException ex) {
|
ex.printStackTrace();
|
throw new BusinessException("导入失败,请联系管理员");
|
}
|
|
}
|
|
|
/**
|
* @Description: 企业反馈导入
|
* @date 2021/5/13 19:32
|
*/
|
@Override
|
public void importFeedExcel(InputStream in, UserInfo user, Boolean isExcel2007, Long enterpriseId) {
|
List<EnterpriseFeed> feeds = new ArrayList<>();
|
Date now = new Date();
|
try {
|
Workbook workbook = null;
|
if (isExcel2007) {
|
workbook = new XSSFWorkbook(in);
|
} else {
|
workbook = new HSSFWorkbook(in);
|
}
|
|
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
|
Sheet sheet = workbook.getSheetAt(0);
|
if (sheet == null) {
|
throw new BusinessException("excel 第1页不能为空");
|
|
}
|
Row row = sheet.getRow(0);
|
// 标题总列数
|
int colNum = row.getPhysicalNumberOfCells();
|
String[] title = new String[colNum];
|
|
if (colNum != feedTitle.length) {
|
throw new BusinessException("上传文件的列的个数错误");
|
}
|
|
for (int i = 0; i < colNum; i++) {
|
title[i] = row.getCell(i).getStringCellValue();
|
if (StringUtils.isNotBlank(title[i])) {
|
title[i] = title[i].trim();
|
}
|
if (!title[i].equals((feedTitle[i]))) {
|
throw new BusinessException("上传文件的第" + (i + 1) + "列的标题为" + title[i] + "不为" + selfCheckTitle[i]);
|
}
|
}
|
|
for (int irow = 1; irow <= sheet.getLastRowNum(); irow++) {
|
int realrow = irow + 1;
|
EnterpriseFeed feed = new EnterpriseFeed();
|
Object value = null;
|
row = sheet.getRow(irow);
|
value = ExcelProperty.getCellValue(row.getCell(0), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行,反馈内容不能为空.<br/>");
|
} else {
|
feed.setContent(value.toString().trim());
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(1), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
throw new BusinessException("导入失败,第" + realrow + "行,发现时间不能为空.<br/>");
|
} else if (!DateUtils.isLegalDate(value.toString().length(), value.toString(), "d/M/yy")) {
|
throw new BusinessException("日期格式不正确,应如2020-10-10或者2020/10/10");
|
} else {
|
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("d/M/yy");
|
Date date = sdf.parse(value.toString());
|
feed.setFindtime(date);
|
}
|
feed.setEnterpriseid(enterpriseId);
|
feed.setCreateby(user.getId());
|
feed.setCreatetime(now);
|
feed.setCreatebyname(user.getUsername());
|
feed.setValidflag(true);
|
feeds.add(feed);
|
}
|
|
enterpriseFeedService.saveBatch(feeds);
|
} catch (ParseException ex) {
|
ex.printStackTrace();
|
throw new BusinessException("类型转换错误");
|
} catch (IOException ex) {
|
ex.printStackTrace();
|
throw new BusinessException("导入失败,请联系管理员");
|
}
|
|
}
|
|
@Override
|
public BooleanReason imporSaleProductExcel(InputStream in, String username, Boolean isExcel2007) {
|
BooleanReason blret = new BooleanReason();
|
int importSize = 0;
|
String retmsg = "";
|
blret.setValue(false);
|
try {
|
Workbook workbook = null;
|
if (isExcel2007) {
|
workbook = new XSSFWorkbook(in);
|
} else {
|
workbook = new HSSFWorkbook(in);
|
}
|
|
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
|
Sheet sheet = workbook.getSheetAt(0);
|
if (sheet == null) {
|
blret.addReason("excel 第1页不能为空");
|
return blret;
|
}
|
Row row = sheet.getRow(0);
|
// 标题总列数
|
int colNum = row.getPhysicalNumberOfCells();
|
String[] title = new String[colNum];
|
|
if (colNum != saleProductTitle.length) {
|
blret.addReason("上传文件的列的个数错误");
|
return blret;
|
}
|
|
for (int i = 0; i < colNum; i++) {
|
title[i] = row.getCell(i).getStringCellValue();
|
if (StringUtils.isNotBlank(title[i])) {
|
title[i] = title[i].trim();
|
}
|
if (!title[i].equals((saleProductTitle[i]))) {
|
blret.addReason("上传文件的第" + (i + 1) + "列的标题为" + title[i] + "不为" + saleProductTitle[i]);
|
return blret;
|
}
|
}
|
|
for (int irow = 1; irow <= sheet.getLastRowNum(); irow++) {
|
int realrow = irow + 1;
|
List<SaleProductInfo> saleProductInfoList = new ArrayList<>();
|
Object value = null;
|
row = sheet.getRow(irow);
|
|
value = ExcelProperty.getCellValue(row.getCell(0), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,流向码不能为空.<br/>";
|
continue;
|
} else {
|
String directionCodeStr = value.toString().trim();
|
ProductInfo productInfo = productService.selectByDirection(directionCodeStr.substring(0, 10));
|
if (FireworkDeal.is22Characters(directionCodeStr)){
|
List<ProductVo>productVoList = new ArrayList<>();
|
DirectionDetail directionDetail = FireworkDeal.dealDirectionCode(directionCodeStr);
|
ProductVo productVo = productService.selectVoByDirection(directionCodeStr);
|
FireworkDeal.getProductVos(directionCodeStr,directionDetail,directionDetail,productVoList,productVo);
|
for (ProductVo productVo1 : productVoList){
|
SaleProductInfo saleProductInfo = new SaleProductInfo();
|
saleProductInfo.setItemcode(productInfo.getDirectionCode());
|
saleProductInfo.setDirectioncode(productVo1.getDirectionCode());
|
saleProductInfo.setItemname(productVo1.getName());
|
saleProductInfo.setSpecification(productVo1.getSpecification());
|
saleProductInfo.setPrice(new BigDecimal(0));
|
saleProductInfo.setCreatedby(username);
|
saleProductInfo.setCreatedat(new Date());
|
saleProductInfo.setIsuse((byte)0);
|
saleProductInfoList.add(saleProductInfo);
|
}
|
}else {
|
SaleProductInfo saleProductInfo = new SaleProductInfo();
|
saleProductInfo.setItemcode(productInfo.getDirectionCode());
|
saleProductInfo.setDirectioncode(directionCodeStr);
|
saleProductInfo.setItemname(productInfo.getName());
|
saleProductInfo.setSpecification(productInfo.getSpecification());
|
saleProductInfo.setPrice(new BigDecimal(0));
|
saleProductInfo.setCreatedby(username);
|
saleProductInfo.setCreatedat(new Date());
|
saleProductInfo.setIsuse((byte)0);
|
saleProductInfoList.add(saleProductInfo);
|
}
|
}
|
|
if (saleProductInfoList.size() > 0){
|
saleProductService.saveBatch(saleProductInfoList);
|
importSize ++;
|
}
|
}
|
|
if (StringUtils.isNotBlank(retmsg)) {
|
retmsg = retmsg + "导入成功" + importSize + "个," + "导入失败" + (sheet.getLastRowNum() - importSize) + "个。";
|
blret.addReason(retmsg);
|
return blret;
|
}
|
} catch (IOException e) {
|
logger.error(e.getLocalizedMessage());
|
blret.addReason("导入错误");
|
return blret;
|
}
|
|
blret.setValue(true);
|
return blret;
|
}
|
|
@Override
|
public BooleanReason imporSaleOrderExcel(InputStream in, String username, Boolean isExcel2007) {
|
BooleanReason blret = new BooleanReason();
|
String retmsg = "";
|
blret.setValue(false);
|
int size = 0;
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
try {
|
Workbook workbook = null;
|
if (isExcel2007) {
|
workbook = new XSSFWorkbook(in);
|
} else {
|
workbook = new HSSFWorkbook(in);
|
}
|
|
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
|
Sheet sheet = workbook.getSheetAt(0);
|
if (sheet == null) {
|
blret.addReason("excel 第1页不能为空");
|
return blret;
|
}
|
Row row = sheet.getRow(0);
|
// 标题总列数
|
int colNum = row.getPhysicalNumberOfCells();
|
String[] title = new String[colNum];
|
|
if (colNum != saleOrderTitle.length) {
|
blret.addReason("上传文件的列的个数错误");
|
return blret;
|
}
|
|
for (int i = 0; i < colNum; i++) {
|
title[i] = row.getCell(i).getStringCellValue();
|
if (StringUtils.isNotBlank(title[i])) {
|
title[i] = title[i].trim();
|
}
|
if (!title[i].equals((saleOrderTitle[i]))) {
|
blret.addReason("上传文件的第" + (i + 1) + "列的标题为" + title[i] + "不为" + saleOrderTitle[i]);
|
return blret;
|
}
|
}
|
|
for (int irow = 1; irow <= sheet.getLastRowNum(); irow++) {
|
int realrow = irow + 1;
|
Object value = null;
|
row = sheet.getRow(irow);
|
SaleOrderInfo saleOrderInfo = new SaleOrderInfo();
|
List<SaleOrderDetailInfoBO> detailInfoList = new ArrayList<>();
|
value = ExcelProperty.getCellValue(row.getCell(0), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,零售单位名称不能为空.<br/>";
|
continue;
|
}else {
|
Enterprise enterprise = enterpriseService.selectEnterpriseByName(value.toString().trim());
|
if (enterprise == null){
|
continue;
|
}else {
|
saleOrderInfo.setCreatedby(enterprise.getEnterprisenumber());
|
saleOrderInfo.setShop(enterprise.getEnterprisename());
|
saleOrderInfo.setCompanynumber(enterprise.getEnterprisenumber());
|
}
|
}
|
value = ExcelProperty.getCellValue(row.getCell(1), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,身份证不能为空.<br/>";
|
continue;
|
}else {
|
saleOrderInfo.setIdcardnum(value.toString().trim());
|
}
|
|
value = ExcelProperty.getCellValue(row.getCell(2), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,购买时间不能为空.<br/>";
|
continue;
|
}else {
|
String now = sdf.format(new Date());
|
String purseTime = value.toString().trim()+ now.substring(10);
|
saleOrderInfo.setCreatedat(sdf.parse(purseTime));
|
}
|
|
List<SaleProductInfo> saleProductInfoList = new ArrayList<>();
|
value = ExcelProperty.getCellValue(row.getCell(3), evaluator);
|
if (null == value || StringUtils.isBlank(value.toString())) {
|
retmsg = retmsg + "导入失败,第" + realrow + "行,购买数量不能为空.<br/>";
|
continue;
|
}else {
|
saleOrderInfo.setBoxnum(new BigDecimal(Integer.valueOf(value.toString().trim())));
|
saleProductInfoList = saleProductService.selectRandom(Integer.valueOf(value.toString().trim()));
|
for (SaleProductInfo saleProductInfo : saleProductInfoList){
|
SaleOrderDetailInfoBO detailInfo = new SaleOrderDetailInfoBO();
|
detailInfo.setItemcode(saleProductInfo.getItemcode());
|
detailInfo.setItemname(saleProductInfo.getItemname());
|
detailInfo.setDirectioncode(saleProductInfo.getDirectioncode());
|
detailInfo.setCreatedat(saleOrderInfo.getCreatedat());
|
detailInfo.setCreatedby(saleOrderInfo.getCompanynumber());
|
detailInfo.setPrice(new BigDecimal("0"));
|
detailInfo.setSpecification(saleProductInfo.getSpecification());
|
detailInfo.setReturnflag((byte)0);
|
detailInfoList.add(detailInfo);
|
}
|
}
|
customerService.createOrUpdateCard(saleOrderInfo.getIdcardnum(),detailInfoList.size(),saleOrderInfo.getCreatedat());
|
CustomerInfo customerInfo = customerService.getCustomerByIdCardNum(saleOrderInfo.getIdcardnum());
|
UserInfo userInfo = userService.selectByUser(saleOrderInfo.getCompanynumber());
|
SaleOrderInfo saleOrderInfo1 = saleOrderService.createOrder(userInfo,detailInfoList,"1",detailInfoList.size(),saleOrderInfo.getCreatedat(),customerInfo.getId(),"0","0","0", "");
|
for (SaleProductInfo saleProductInfo : saleProductInfoList){
|
saleProductInfo.setIsuse((byte)1);
|
saleProductService.updateById(saleProductInfo);
|
|
//插入流向轨迹
|
ProductLocusInfo productLocusInfo = new ProductLocusInfo(saleProductInfo.getDirectioncode(),saleOrderInfo.getCreatedat(),saleOrderInfo.getCreatedat(),
|
userInfo.getCompany(),customerInfo.getId(),ProductLocusInfo.SALES_STATUS,null);
|
productLocusService.insertProductLocus(productLocusInfo);
|
}
|
size ++;
|
}
|
|
if (StringUtils.isNotBlank(retmsg)) {
|
retmsg = retmsg + "导入成功" + size + "个," + "导入失败" + (sheet.getLastRowNum() - size) + "个。";
|
blret.addReason(retmsg);
|
return blret;
|
}
|
} catch (IOException e) {
|
logger.error(e.getLocalizedMessage());
|
blret.addReason("导入错误");
|
return blret;
|
} catch (ParseException e) {
|
e.printStackTrace();
|
}
|
|
blret.setValue(true);
|
return blret;
|
}
|
}
|