package com.thhy.materials.modules.biz.embedment.service.impl;
|
|
import cn.hutool.core.text.StrBuilder;
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.thhy.general.common.BasicMessage;
|
import com.thhy.general.common.BasicResult;
|
import com.thhy.general.config.SysUserInfo;
|
import com.thhy.general.exception.BasicException;
|
import com.thhy.general.utils.ExcelUtils;
|
import com.thhy.general.utils.UserInfoUtils;
|
import com.thhy.materials.modules.biz.embedment.dto.EmbedmentGoodsDto;
|
import com.thhy.materials.modules.biz.embedment.dto.EmbedmentRecordDto;
|
import com.thhy.materials.modules.biz.embedment.entity.SysEmbedmentGoodsEntity;
|
import com.thhy.materials.modules.biz.embedment.entity.SysEmbedmentRecordEntity;
|
import com.thhy.materials.modules.biz.embedment.mapper.SysEmbedmentGoodsMapper;
|
import com.thhy.materials.modules.biz.embedment.mapper.SysEmbedmentRecordMapper;
|
import com.thhy.materials.modules.biz.embedment.service.SysEmbedmentRecordService;
|
import com.thhy.materials.modules.biz.materials.entity.SysAssistGood;
|
import com.thhy.materials.modules.biz.utils.ExcelUtil;
|
import org.apache.commons.lang3.StringUtils;
|
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.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.OutputStream;
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
import java.util.stream.Stream;
|
|
/**
|
* @Author QiuYuHao
|
* @CreateDate 2023-09-22 16:28:24
|
* 预埋件出入库实现
|
*/
|
@Service
|
public class SysEmbedmentRecordServiceImpl implements SysEmbedmentRecordService{
|
|
@Autowired
|
private SysEmbedmentRecordMapper sysEmbedmentRecordMapper;
|
|
@Autowired
|
private SysEmbedmentGoodsMapper sysEmbedmentGoodsMapper;
|
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public BasicResult insert(SysEmbedmentRecordEntity sysEmbedmentRecordEntity) {
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
sysEmbedmentRecordEntity.setCreateUser(sysUserInfo.getRealName());
|
sysEmbedmentRecordEntity.setCompanyId(sysUserInfo.getCompanyId());
|
SysEmbedmentGoodsEntity entity = sysEmbedmentGoodsMapper.findEntity(sysEmbedmentRecordEntity.getEmbedmentId());
|
if(entity!=null){
|
String stockType = sysEmbedmentRecordEntity.getStockType();
|
//stockType 1入库 2出库
|
int result = entity.getStock();
|
if("1".equals(stockType)){
|
result= entity.getStock() + sysEmbedmentRecordEntity.getChangeStock();
|
}else{
|
result= entity.getStock() - sysEmbedmentRecordEntity.getChangeStock();
|
}
|
if(result < 0 ){
|
return BasicResult.faild("11111","库存不足","库存不足");
|
}
|
entity.setStock(result);
|
sysEmbedmentGoodsMapper.update(entity);//更改库存
|
}else {
|
return BasicResult.faild("11111","库存没有该预埋件,请到【预埋件种类】添加","库存没有该预埋件,请到【预埋件种类】添加");
|
}
|
sysEmbedmentRecordMapper.insert(sysEmbedmentRecordEntity);
|
return BasicResult.success();
|
}
|
|
@Override
|
public BasicResult embedmentRecordDel(String id) {
|
sysEmbedmentRecordMapper.embedmentRecordDel(id);
|
return BasicResult.success();
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public BasicResult update(SysEmbedmentRecordEntity sysEmbedmentRecordEntity) {
|
String id = sysEmbedmentRecordEntity.getId();//记录id
|
String embedmentId = sysEmbedmentRecordEntity.getEmbedmentId();//库存id
|
SysEmbedmentRecordEntity queryRecordData = sysEmbedmentRecordMapper.embedmentRecordInfo(id);//查询到的记录
|
Integer dataChangeStock = queryRecordData.getChangeStock();//拿到修改前的入库数量
|
Integer paramChangeStock = sysEmbedmentRecordEntity.getChangeStock();//当前传输入库数量
|
Integer nowChangeStock = paramChangeStock - dataChangeStock;//当前传的和库里的取差值
|
SysEmbedmentGoodsEntity entity = sysEmbedmentGoodsMapper.findEntity(embedmentId);
|
Integer resultStock = entity.getStock() + nowChangeStock;
|
entity.setStock(resultStock);
|
sysEmbedmentGoodsMapper.update(entity);
|
sysEmbedmentRecordMapper.update(sysEmbedmentRecordEntity);
|
return BasicResult.success();
|
}
|
|
@Override
|
public BasicResult embedmentRecordList(EmbedmentRecordDto embedmentRecordDto) {
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
embedmentRecordDto.setCompanyId(sysUserInfo.getCompanyId());
|
PageHelper.startPage(embedmentRecordDto.getPageNum(),embedmentRecordDto.getPageSize());
|
List<SysEmbedmentRecordEntity> sysEmbedmentRecordEntities = sysEmbedmentRecordMapper.embedmentRecordList(embedmentRecordDto);
|
PageInfo<SysEmbedmentRecordEntity> info = new PageInfo<>(sysEmbedmentRecordEntities);
|
return BasicResult.success(info);
|
}
|
|
@Override
|
public BasicResult embedmentRecordOutList(EmbedmentRecordDto embedmentRecordDto) {
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
embedmentRecordDto.setCompanyId(sysUserInfo.getCompanyId());
|
PageHelper.startPage(embedmentRecordDto.getPageNum(),embedmentRecordDto.getPageSize());
|
List<SysEmbedmentRecordEntity> sysEmbedmentRecordEntities = sysEmbedmentRecordMapper.embedmentRecordOutList(embedmentRecordDto);
|
PageInfo<SysEmbedmentRecordEntity> info = new PageInfo<>(sysEmbedmentRecordEntities);
|
return BasicResult.success(info);
|
}
|
|
@Override
|
public BasicResult embedmentRecordInfo(String id) {
|
return BasicResult.success(sysEmbedmentRecordMapper.embedmentRecordInfo(id));
|
}
|
|
@Override
|
public void export(EmbedmentRecordDto embedmentRecordDto, HttpServletResponse response) {
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
embedmentRecordDto.setCompanyId(sysUserInfo.getCompanyId());
|
List<SysEmbedmentRecordEntity> sysEmbedmentRecordEntities = sysEmbedmentRecordMapper.embedmentRecordList(embedmentRecordDto);
|
ExcelUtils.downExcel(sysEmbedmentRecordEntities,SysEmbedmentRecordEntity.class,response,"预埋件入库");
|
}
|
|
@Override
|
public void recordExportTemplate(EmbedmentGoodsDto embedmentGoodsDto, HttpServletResponse response) {
|
embedmentGoodsDto = new EmbedmentGoodsDto();
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
String companyId = sysUserInfo.getCompanyId();
|
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("备注");
|
embedmentGoodsDto.setCompanyId(companyId);
|
List<String> lx = sysEmbedmentGoodsMapper.findAll(embedmentGoodsDto).stream().map(s -> s.getEmbedmentName()+"-"+s.getEmbedmentModel()).collect(Collectors.toList());
|
String[] gjlx = lx.toArray(new String[lx.size()]);
|
|
//物品名称-规格型号
|
CellRangeAddressList regions1 = new CellRangeAddressList(1, 500, 0, 0);
|
DataValidationHelper dataValidationHelper = sheet.getDataValidationHelper();
|
DataValidationConstraint createExplicitListConstraint1 = dataValidationHelper.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
|
@Transactional(rollbackFor = Exception.class)
|
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){
|
String embedmentNameAndModel = list.get(0).toString();
|
String[] split = embedmentNameAndModel.split("-");
|
String embedmentName = split[0];
|
StringBuilder embedmentModel = new StringBuilder();
|
for (int i = 1; i < split.length; i++) {
|
if (StringUtils.isBlank(embedmentModel)){
|
embedmentModel.append(split[i]);
|
}else {
|
embedmentModel.append("-"+split[i]);
|
}
|
|
}
|
String id = sysEmbedmentGoodsMapper.embedmentNameAndType(embedmentName,null, embedmentModel.toString());
|
if(StringUtils.isBlank(id)) {
|
throw new BasicException(new BasicMessage("500","库存没有【"+embedmentName+"】,请到预埋件种类新增,新增完可重新导入!"));
|
}
|
SysEmbedmentRecordEntity sysEmbedmentRecordEntity = new SysEmbedmentRecordEntity();
|
sysEmbedmentRecordEntity.setEmbedmentId(id);
|
//入库数量
|
Integer changeStock = Integer.valueOf(list.get(1).toString());
|
sysEmbedmentRecordEntity.setChangeStock(changeStock);
|
//单价
|
String dj = list.get(2).toString();
|
BigDecimal singlePrice = new BigDecimal(dj);
|
sysEmbedmentRecordEntity.setSinglePrice(singlePrice);
|
//金额
|
String je = list.get(3).toString();
|
BigDecimal amount = new BigDecimal(je);
|
sysEmbedmentRecordEntity.setAmount(amount);
|
//备注
|
String remark = list.get(4).toString();
|
sysEmbedmentRecordEntity.setRemark(remark);
|
//入库人
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
String companyId = sysUserInfo.getCompanyId();
|
sysEmbedmentRecordEntity.setCreateUser(sysUserInfo.getRealName());
|
sysEmbedmentRecordEntity.setCompanyId(companyId);
|
//stockType 1入库
|
sysEmbedmentRecordEntity.setStockType("1");
|
SysEmbedmentGoodsEntity entity = sysEmbedmentGoodsMapper.findEntity(sysEmbedmentRecordEntity.getEmbedmentId());
|
if(entity!=null){
|
int result = entity.getStock() + sysEmbedmentRecordEntity.getChangeStock();
|
entity.setStock(result);
|
sysEmbedmentGoodsMapper.update(entity);//更改库存
|
}else {
|
throw new BasicException(new BasicMessage("500","库存没有【"+embedmentName+"】,请到预埋件种类新增,新增完可重新导入!"));
|
}
|
sysEmbedmentRecordMapper.insert(sysEmbedmentRecordEntity);
|
}
|
return BasicResult.success("导入成功");
|
}else {
|
return BasicResult.faild("11111","error","空文件");
|
}
|
}
|
|
|
}
|