package com.thhy.materials.modules.biz.materials.service.impl;
|
|
import cn.hutool.core.io.IoUtil;
|
import cn.hutool.poi.excel.ExcelWriter;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.thhy.general.common.BasicResult;
|
import com.thhy.general.config.SysUserInfo;
|
import com.thhy.general.utils.UserInfoUtils;
|
import com.thhy.materials.modules.biz.concret.entity.SysSteel;
|
import com.thhy.materials.modules.biz.concret.entity.SysSteelRecord;
|
import com.thhy.materials.modules.biz.concret.entity.dto.SteelStatisticsDto;
|
import com.thhy.materials.modules.biz.concret.mapper.SysSteelMapper;
|
import com.thhy.materials.modules.biz.concret.mapper.SysSteelRecordMapper;
|
import com.thhy.materials.modules.biz.materials.entity.SysAssistCorrection;
|
import com.thhy.materials.modules.biz.materials.entity.SysAssistGood;
|
import com.thhy.materials.modules.biz.materials.entity.SysAssistRecord;
|
import com.thhy.materials.modules.biz.materials.entity.dto.*;
|
import com.thhy.materials.modules.biz.materials.mapper.SysAssistGoodMapper;
|
import com.thhy.materials.modules.biz.materials.mapper.SysAssistRecordMapper;
|
import com.thhy.materials.modules.biz.materials.service.SysAssistGoodService;
|
import com.thhy.materials.modules.biz.materials.service.SysAssistRecordService;
|
import com.thhy.materials.modules.biz.utils.ExcelUtil;
|
import org.apache.poi.ss.usermodel.DataValidation;
|
import org.apache.poi.ss.usermodel.DataValidationConstraint;
|
import org.apache.poi.ss.usermodel.DataValidationHelper;
|
import org.apache.poi.ss.util.CellRangeAddressList;
|
import org.apache.poi.util.IOUtils;
|
import org.apache.poi.xssf.usermodel.XSSFRow;
|
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.io.OutputStream;
|
import java.lang.reflect.Array;
|
import java.math.BigDecimal;
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
import java.util.List;
|
import java.util.Map;
|
|
@Service
|
public class SysAssistRecordServiceImpl implements SysAssistRecordService {
|
@Resource
|
private SysAssistRecordMapper assistRecordMapper;
|
@Resource
|
private SysSteelRecordMapper recordMapper;
|
@Resource
|
private SysAssistGoodMapper goodMapper;
|
|
@Override
|
@Transactional
|
public BasicResult assistRecordInsert(HashMap<String, Object> values) {
|
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
//辅材id
|
String assistId = values.get("assistId").toString();
|
Integer stockType = Integer.valueOf(values.get("stockType").toString());
|
|
Integer changeStock = Integer.valueOf(values.get("changeStock").toString());
|
Integer stock = assistRecordMapper.assistStock(assistId);
|
if(stockType==1){
|
Integer nums = (changeStock + stock);
|
assistRecordMapper.assistStockUp(assistId,nums);
|
}else {
|
if (changeStock>stock){
|
return BasicResult.faild("11111","出库量大于库存","出库量大于库存");
|
}else {
|
Integer nums = (stock - changeStock);
|
assistRecordMapper.assistStockUp(assistId,nums);
|
}
|
}
|
values.put("id","");
|
values.put("createUser",sysUserInfo.getUserId());
|
values.put("companyId",sysUserInfo.getCompanyId());
|
assistRecordMapper.assistRecordInsert(values);
|
return BasicResult.success("添加成功");
|
}
|
|
@Override
|
public BasicResult assistRecordList(Map<String, Object> values) {
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
String companyId = sysUserInfo.getCompanyId();
|
values.put("companyId",companyId);
|
|
Integer pageSize = Integer.valueOf(values.get("pageSize").toString());
|
Integer pageNum = Integer.valueOf(values.get("pageNum").toString());
|
PageHelper.startPage(pageNum,pageSize);
|
List<SysAssistRecord> sysAssistRecords = assistRecordMapper.assistRecordList(values);
|
PageInfo<SysAssistRecord> sysAssistRecordPageInfo = new PageInfo<>(sysAssistRecords);
|
return BasicResult.success(sysAssistRecordPageInfo);
|
}
|
@Override
|
public BasicResult assistRecordOutList(Map<String, Object> values) {
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
String companyId = sysUserInfo.getCompanyId();
|
values.put("companyId",companyId);
|
|
Integer pageSize = Integer.valueOf(values.get("pageSize").toString());
|
Integer pageNum = Integer.valueOf(values.get("pageNum").toString());
|
PageHelper.startPage(pageNum,pageSize);
|
List<SysAssistRecord> sysAssistRecords = assistRecordMapper.assistRecordOutList(values);
|
PageInfo<SysAssistRecord> sysAssistRecordPageInfo = new PageInfo<>(sysAssistRecords);
|
return BasicResult.success(sysAssistRecordPageInfo);
|
}
|
|
@Override
|
@Transactional
|
public BasicResult assistCheck(Map<String, Object> values) {
|
//校正后库存
|
Integer correctionAfter = Integer.valueOf(values.get("correctionAfter").toString());
|
//辅材id
|
String assistId = values.get("assistId").toString();
|
assistRecordMapper.assistStockUp(assistId,correctionAfter);
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
values.put("createUser",sysUserInfo.getUserId());
|
values.put("id","");
|
assistRecordMapper.assistCheckInsert(values);
|
return BasicResult.success("校正成功");
|
}
|
|
@Override
|
public BasicResult assistCorrectionList(Map<String, Object> values) {
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
String companyId = sysUserInfo.getCompanyId();
|
values.put("companyId",companyId);
|
Integer pageSize = Integer.valueOf(values.get("pageSize").toString());
|
Integer pageNum = Integer.valueOf(values.get("pageNum").toString());
|
PageHelper.startPage(pageNum,pageSize);
|
List<SysAssistCorrection> sysAssistCorrections = assistRecordMapper.assistCorrectionList(values);
|
PageInfo<SysAssistCorrection> sysAssistCorrectionPageInfo = new PageInfo<>(sysAssistCorrections);
|
return BasicResult.success(sysAssistCorrectionPageInfo);
|
}
|
|
@Override
|
public void assistExport(Map<String, Object> values, HttpServletResponse response) {
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
String companyId = sysUserInfo.getCompanyId();
|
values.put("companyId",companyId);
|
|
List<SysAssistRecord> sysAssistRecords = assistRecordMapper.assistRecordList(values);
|
// if (sysAssistRecords.size()<=0){
|
// response.setStatus(400);
|
// return;
|
// }
|
List<AssistRecordDto> assistRecordDtos = new ArrayList<>();
|
for (SysAssistRecord assistRecordDto:sysAssistRecords){
|
AssistRecordDto ar = new AssistRecordDto();
|
ar.setAssistName(assistRecordDto.getAssistName());
|
ar.setAssistModel(assistRecordDto.getAssistModel());
|
ar.setSupplierName(assistRecordDto.getSupplierName());
|
ar.setChangeStock(assistRecordDto.getChangeStock());
|
ar.setSinglePrice(assistRecordDto.getSinglePrice());
|
ar.setAmount(assistRecordDto.getAmount());
|
ar.setRealName(assistRecordDto.getRealName());
|
ar.setCreateTime(assistRecordDto.getCreateTime());
|
ar.setRemark(assistRecordDto.getRemark());
|
assistRecordDtos.add(ar);
|
}
|
ExcelWriter excel = new ExcelWriter();//定义excel
|
excel.addHeaderAlias("assistName", "物品名称");
|
excel.addHeaderAlias("assistModel", "规格型号");
|
excel.addHeaderAlias("supplierName", "供应商");
|
excel.addHeaderAlias("changeStock", "入库数量");
|
excel.addHeaderAlias("singlePrice", "单价");
|
excel.addHeaderAlias("amount", "金额");
|
excel.addHeaderAlias("realName","收料人");
|
excel.addHeaderAlias("createTime", "入库时间");
|
excel.addHeaderAlias("remark", "备注");
|
|
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
|
response.setHeader("Content-Disposition", "attachment;filename=test.xls");
|
OutputStream out = null;
|
try {
|
out = response.getOutputStream();
|
excel.write(assistRecordDtos);
|
excel.flush(out, true);
|
} catch (IOException e) {
|
e.printStackTrace();
|
} finally {
|
// 关闭writer,释放内存
|
excel.close();
|
}
|
IoUtil.close(out);
|
|
}
|
|
@Override
|
public void recordExportTemplate(HttpServletResponse response) {
|
SysUserInfo sysUserInfo1 = UserInfoUtils.getInstance().getUserInfo();
|
String companyId1 = sysUserInfo1.getCompanyId();
|
List<String> supplierList = recordMapper.supplierPull(companyId1);
|
String[] gys = supplierList.toArray(new String[supplierList.size()]);
|
|
XSSFWorkbook book = new XSSFWorkbook();
|
XSSFSheet sheet = book.createSheet();
|
XSSFRow row = sheet.createRow(0);
|
row.createCell(0).setCellValue("物品名称-规格型号");
|
row.createCell(1).setCellValue("供应商");
|
row.createCell(2).setCellValue("入库数量");
|
row.createCell(3).setCellValue("单价");
|
row.createCell(4).setCellValue("金额");
|
row.createCell(5).setCellValue("备注");
|
//row.createCell(6).setCellValue("计量单位");
|
// row.createCell(6).setCellValue("入库人");
|
//
|
// //供应商
|
CellRangeAddressList regions = new CellRangeAddressList(1, 500, 1, 1);
|
DataValidationHelper dataValidationHelper = sheet.getDataValidationHelper();
|
DataValidationConstraint createExplicitListConstraint = dataValidationHelper.createExplicitListConstraint(gys);
|
DataValidation createValidation = dataValidationHelper.createValidation(createExplicitListConstraint, regions);
|
sheet.addValidationData(createValidation);
|
//
|
Map<String, Object> values = new HashMap<>();
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
String companyId = sysUserInfo.getCompanyId();
|
values.put("companyId",companyId);
|
List<SysAssistGood> assistGoods = goodMapper.assistList(values);
|
List<String> lx = new ArrayList<>();
|
assistGoods.forEach(sysSteel -> {
|
lx.add(sysSteel.getAssistName()+"-"+sysSteel.getAssistModel());
|
});
|
String[] gjlx = lx.toArray(new String[lx.size()]);
|
|
// //物品名称-规格型号
|
CellRangeAddressList regions1 = new CellRangeAddressList(1, 500, 0, 0);
|
DataValidationHelper dataValidationHelper1 = sheet.getDataValidationHelper();
|
DataValidationConstraint createExplicitListConstraint1 = dataValidationHelper1.createExplicitListConstraint(gjlx);
|
DataValidation createValidation1 = dataValidationHelper.createValidation(createExplicitListConstraint1, regions1);
|
sheet.addValidationData(createValidation1);
|
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
|
response.setHeader("Content-Disposition", "attachment;filename=test.xls");
|
OutputStream out = null;
|
try {
|
out = response.getOutputStream();
|
book.write(out);
|
out.close();
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
IOUtils.closeQuietly(out);
|
}
|
}
|
|
@Override
|
public void assistOutExport(Map<String, Object> values, HttpServletResponse response) {
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
String companyId = sysUserInfo.getCompanyId();
|
values.put("companyId",companyId);
|
List<SysAssistRecord> sysAssistRecords = assistRecordMapper.assistRecordOutList(values);
|
|
List<AssistRecordOutExcelDto> assistRecordOutExcelDtos = new ArrayList<>();
|
for (SysAssistRecord assistRecord:sysAssistRecords){
|
AssistRecordOutExcelDto arod = new AssistRecordOutExcelDto();
|
arod.setAssistName(assistRecord.getAssistName());
|
arod.setAssistModel(assistRecord.getAssistModel());
|
arod.setChangeStock(assistRecord.getChangeStock());
|
arod.setSinglePrice(assistRecord.getSinglePrice());
|
arod.setAmount(assistRecord.getAmount());
|
arod.setRealName(assistRecord.getRealName());
|
arod.setDepartName(assistRecord.getDepartName());
|
arod.setCreateTime(assistRecord.getCreateTime());
|
arod.setRemark(assistRecord.getRemark());
|
assistRecordOutExcelDtos.add(arod);
|
}
|
ExcelWriter excel = new ExcelWriter();//定义excel
|
excel.addHeaderAlias("assistName", "物品名称");
|
excel.addHeaderAlias("assistModel", "规格型号");
|
excel.addHeaderAlias("changeStock", "出库数量");
|
excel.addHeaderAlias("singlePrice", "单价");
|
excel.addHeaderAlias("amount", "金额");
|
excel.addHeaderAlias("realName","发料人");
|
excel.addHeaderAlias("departName", "领料部门");
|
excel.addHeaderAlias("createTime", "出库时间");
|
excel.addHeaderAlias("remark", "备注");
|
|
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
|
response.setHeader("Content-Disposition", "attachment;filename=test.xls");
|
OutputStream out = null;
|
try {
|
out = response.getOutputStream();
|
excel.write(assistRecordOutExcelDtos);
|
excel.flush(out, true);
|
} catch (IOException e) {
|
e.printStackTrace();
|
} finally {
|
// 关闭writer,释放内存
|
excel.close();
|
}
|
IoUtil.close(out);
|
|
}
|
|
@Override
|
@Transactional
|
public BasicResult assistRecordDel(Map<String,Object> values) {
|
String id = values.get("id").toString();
|
Integer stockType = Integer.valueOf(values.get("stockType").toString());
|
SysAssistRecord assistRecord= assistRecordMapper.assistIdSelect(id);
|
//辅材id
|
String assistId = assistRecord.getAssistId();
|
Integer stock = assistRecordMapper.assistStock(assistId);
|
if(stockType==1){
|
Integer nums = (stock - assistRecord.getChangeStock());
|
assistRecordMapper.assistStockUp(assistId,nums);
|
}else {
|
Integer nums = (stock + assistRecord.getChangeStock());
|
assistRecordMapper.assistStockUp(assistId,nums);
|
}
|
assistRecordMapper.assistRecordDel(id);
|
return BasicResult.success("删除成功");
|
}
|
|
@Override
|
public BasicResult assistRecordInfo(String id) {
|
SysAssistRecord assistRecord = assistRecordMapper.assistRecordInfo(id);
|
return BasicResult.success(assistRecord);
|
}
|
|
@Override
|
public BasicResult variateExcel(MultipartFile file, HttpServletRequest request) {
|
List<List<Object>> lists = null;//去工具类处理,返回excel中的数据
|
try {
|
lists = ExcelUtil.getUserListByExcel(file.getInputStream(), file.getOriginalFilename());
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
lists.remove(0);
|
if (lists.size()>0){
|
for (List<Object> list :lists){
|
HashMap<String, Object> values = new HashMap<>();
|
String lx = list.get(0).toString();
|
String[] split = lx.split("-");
|
String s = split[0];
|
String s1 = split[1];
|
String id = goodMapper.assistNameAndType(s,s1);
|
values.put("assistId",id);
|
//供应商
|
String supplierName = list.get(1).toString();
|
String supplierId = recordMapper.supplierIdSelect(supplierName);
|
values.put("supplierId",supplierId);
|
values.put("stockType",1);
|
//入库数量
|
Integer changeStock = Integer.valueOf(list.get(2).toString());
|
values.put("changeStock",changeStock);
|
//单价
|
String dj = list.get(3).toString();
|
BigDecimal singlePrice = new BigDecimal(dj);
|
values.put("singlePrice",singlePrice);
|
//金额
|
String je = list.get(4).toString();
|
BigDecimal amount = new BigDecimal(je);
|
values.put("amount",amount);
|
//备注
|
String remark = list.get(5).toString();
|
values.put("remark",remark);
|
//入库人
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
String userId = sysUserInfo.getUserId();
|
String companyId = sysUserInfo.getCompanyId();
|
values.put("createUser",userId);
|
values.put("companyId",companyId);
|
//现有库存
|
Integer stock = assistRecordMapper.assistStock(id);
|
int num = (stock + changeStock);//添加后库存
|
assistRecordMapper.assistStockUp(id,num);
|
values.put("id","");
|
System.out.println(values);
|
assistRecordMapper.assistRecordInsert(values);
|
}
|
return BasicResult.success("导入成功");
|
}else {
|
|
return BasicResult.faild("11111","error","空文件");
|
}
|
}
|
|
@Override
|
public BasicResult assistStatistics(Map<String, Object> values) {
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
String companyId = sysUserInfo.getCompanyId();
|
values.put("companyId",companyId);
|
String dateType = values.get("dateType").toString();
|
String strTime = values.get("strTime").toString();
|
String endTime = values.get("endTime").toString();
|
List<AssistGoodPullDto> assistGoodPullDtos = assistRecordMapper.assistRecordPullS(values);
|
if(dateType.equals("1")){
|
//日
|
List<String> betweenDate = getBetweenDate(strTime, endTime);
|
if(assistGoodPullDtos.size()>0){
|
for (AssistGoodPullDto a :assistGoodPullDtos){
|
values.put("assistId",a.getAssistId());
|
List<AssistStatisticsDto> assistStatisticsDtos = assistRecordMapper.assistStatisticsDay(values);
|
a.setAssistStatisticsDtos(assistStatisticsDtos);
|
a.setBetweenDate(betweenDate);
|
}
|
}
|
return BasicResult.success(assistGoodPullDtos);
|
}else if (dateType.equals("2")){//月
|
if(assistGoodPullDtos.size()>0){
|
List<String> monthBetweenDate = getMonthBetweenDate(strTime, endTime);
|
for (AssistGoodPullDto a :assistGoodPullDtos){
|
values.put("assistId",a.getAssistId());
|
List<AssistStatisticsDto> assistStatisticsDtos = assistRecordMapper.assistStatisticsMonth(values);
|
a.setAssistStatisticsDtos(assistStatisticsDtos);
|
a.setBetweenDate(monthBetweenDate);
|
}
|
}
|
return BasicResult.success(assistGoodPullDtos);
|
}
|
return BasicResult.faild("11111","类型错误","");
|
}
|
|
@Override
|
public BasicResult assistStatisticsExcel(Map<String, Object> values,HttpServletResponse response) {
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
String companyId = sysUserInfo.getCompanyId();
|
values.put("companyId",companyId);
|
String dateType = values.get("dateType").toString();
|
List<AssistStatisticsExcel> assistStatisticsExcels = new ArrayList<>();
|
|
if(dateType.equals("1")){
|
//日
|
List<AssistStatisticsDto> assistStatisticsDtos = assistRecordMapper.assistStatisticsDay(values);
|
for (AssistStatisticsDto as :assistStatisticsDtos){
|
AssistStatisticsExcel ase = new AssistStatisticsExcel();
|
ase.setAssistName(as.getAssistName());
|
ase.setAssistModel(as.getAssistModel());
|
ase.setGetDate(as.getGetDate());
|
ase.setChangeStock(as.getChangeStock());
|
assistStatisticsExcels.add(ase);
|
}
|
}else if (dateType.equals("2")){//月
|
List<AssistStatisticsDto> assistStatisticsDtos = assistRecordMapper.assistStatisticsMonth(values);
|
for (AssistStatisticsDto as :assistStatisticsDtos){
|
AssistStatisticsExcel ase = new AssistStatisticsExcel();
|
ase.setAssistName(as.getAssistName());
|
ase.setAssistModel(as.getAssistModel());
|
ase.setGetDate(as.getGetDate());
|
ase.setChangeStock(as.getChangeStock());
|
assistStatisticsExcels.add(ase);
|
}
|
}
|
ExcelWriter excel = new ExcelWriter();//定义excel
|
excel.addHeaderAlias("assistName", "物品名称");
|
excel.addHeaderAlias("assistModel", "规格型号");
|
excel.addHeaderAlias("getDate", "日期");
|
excel.addHeaderAlias("changeStock", "出库数量");
|
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
|
response.setHeader("Content-Disposition", "attachment;filename=test.xls");
|
OutputStream out = null;
|
try {
|
out = response.getOutputStream();
|
excel.write(assistStatisticsExcels);
|
excel.flush(out, true);
|
} catch (IOException e) {
|
e.printStackTrace();
|
} finally {
|
// 关闭writer,释放内存
|
excel.close();
|
}
|
IoUtil.close(out);
|
return BasicResult.success();
|
}
|
|
@Override
|
public BasicResult assistRecordPull() {
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
String companyId = sysUserInfo.getCompanyId();
|
List<AssistGoodPullDto> assistGoodPullDtos = assistRecordMapper.assistRecordPull(companyId);
|
return BasicResult.success(assistGoodPullDtos);
|
}
|
|
public static List<String> getBetweenDate(String startTime, String endTime){
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
// 声明保存日期集合
|
List<String> list = new ArrayList<String>();
|
try {
|
// 转化成日期类型
|
Date startDate = sdf.parse(startTime);
|
Date endDate = sdf.parse(endTime);
|
|
//用Calendar 进行日期比较判断
|
Calendar calendar = Calendar.getInstance();
|
while (startDate.getTime()<=endDate.getTime()){
|
// 把日期添加到集合
|
list.add(sdf.format(startDate));
|
// 设置日期
|
calendar.setTime(startDate);
|
//把日期增加一天
|
calendar.add(Calendar.DATE, 1);
|
// 获取增加后的日期
|
startDate=calendar.getTime();
|
}
|
} catch (ParseException e) {
|
e.printStackTrace();
|
}
|
return list;
|
}
|
|
/**
|
* 获取两个日期之间的所有月份 (年月)
|
*
|
* @param startTime
|
* @param endTime
|
* @return:list
|
*/
|
public static List<String> getMonthBetweenDate(String startTime, String endTime) {
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
|
// 声明保存日期集合
|
List<String> list = new ArrayList<>();
|
try {
|
// 转化成日期类型
|
Date startDate = sdf.parse(startTime);
|
Date endDate = sdf.parse(endTime);
|
|
//用Calendar 进行日期比较判断
|
Calendar calendar = Calendar.getInstance();
|
while (startDate.getTime() <= endDate.getTime()) {
|
|
// 把日期添加到集合
|
list.add(sdf.format(startDate));
|
|
// 设置日期
|
calendar.setTime(startDate);
|
|
//把月数增加 1
|
calendar.add(Calendar.MONTH, 1);
|
|
// 获取增加后的日期
|
startDate = calendar.getTime();
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return list;
|
}
|
|
}
|