package com.yuanchu.mom.service.impl;
|
|
import com.alibaba.excel.EasyExcel;
|
import com.alibaba.excel.ExcelWriter;
|
import com.alibaba.excel.write.metadata.WriteSheet;
|
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
|
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.yuanchu.mom.common.GetLook;
|
import com.yuanchu.mom.common.PrintChina;
|
import com.yuanchu.mom.dto.StoreDto;
|
import com.yuanchu.mom.excel.StoreExcel;
|
import com.yuanchu.mom.mapper.ProcurementSuppliesConsumablesMapper;
|
import com.yuanchu.mom.mapper.ProcurementSuppliesStoreMapper;
|
import com.yuanchu.mom.pojo.ProcurementSuppliesConsumables;
|
import com.yuanchu.mom.pojo.ProcurementSuppliesList;
|
import com.yuanchu.mom.pojo.ProcurementSuppliesStore;
|
import com.yuanchu.mom.service.ProcurementSuppliesListService;
|
import com.yuanchu.mom.service.ProcurementSuppliesStoreService;
|
import com.yuanchu.mom.utils.QueryWrappers;
|
import lombok.AllArgsConstructor;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.io.UnsupportedEncodingException;
|
import java.net.URLEncoder;
|
import java.time.LocalDate;
|
import java.time.format.DateTimeFormatter;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Objects;
|
|
@Service
|
@AllArgsConstructor
|
public class ProcurementSuppliesStoreServiceImpl extends ServiceImpl<ProcurementSuppliesStoreMapper, ProcurementSuppliesStore>
|
implements ProcurementSuppliesStoreService {
|
private GetLook getLook;
|
|
private ProcurementSuppliesConsumablesMapper consumablesMapper;
|
|
@Autowired
|
private ProcurementSuppliesListService procurementSuppliesListService;
|
|
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void addStore(Map<String,Object> map) {
|
ProcurementSuppliesStore procurementSuppliesStore = JSONObject.parseObject(JSONObject.toJSONString(map.get("store")), ProcurementSuppliesStore.class);
|
procurementSuppliesStore.setRegistrant(getLook.selectPowerByMethodAndUserId(null).get("userId"));
|
procurementSuppliesStore.setRegistrantTime(LocalDate.now());
|
if (Objects.isNull(procurementSuppliesStore.getId())) {
|
baseMapper.insert(procurementSuppliesStore);
|
} else {
|
baseMapper.updateById(procurementSuppliesStore);
|
}
|
|
List<ProcurementSuppliesConsumables> list = JSON.parseArray(JSONObject.toJSONString(map.get("consumables")), ProcurementSuppliesConsumables.class);
|
for (ProcurementSuppliesConsumables consumables : list) {
|
ProcurementSuppliesList one = procurementSuppliesListService.getOne(new QueryWrapper<ProcurementSuppliesList>().lambda()
|
.eq(ProcurementSuppliesList::getConsumablesName, consumables.getConsumablesName()));
|
one.setCurrentAmount(one.getCurrentAmount() + consumables.getStoreNumber());
|
procurementSuppliesListService.updateById(one);
|
}
|
// 生成货号
|
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");
|
if(!Objects.isNull(list) && list.size() > 0) {
|
for (int i = 0; i < list.size(); i++) {
|
list.get(i).setStoreId(procurementSuppliesStore.getId());
|
String itemNumber ="HCRK" + LocalDate.now().format(dateTimeFormatter) + String.format("%03d", i);
|
list.get(i).setItemNumber(itemNumber);
|
consumablesMapper.insert(list.get(i));
|
}
|
}
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void updateStore(Map<String,Object> map) {
|
ProcurementSuppliesStore procurementSuppliesStore = JSONObject.parseObject(JSONObject.toJSONString(map.get("store")), ProcurementSuppliesStore.class);
|
baseMapper.updateById(procurementSuppliesStore);
|
List<ProcurementSuppliesConsumables> list = JSON.parseArray(JSONObject.toJSONString(map.get("consumables")), ProcurementSuppliesConsumables.class);
|
consumablesMapper.delete(new LambdaQueryWrapper<ProcurementSuppliesConsumables>()
|
.eq(ProcurementSuppliesConsumables::getStoreId, procurementSuppliesStore.getId()));
|
if(!Objects.isNull(list) && list.size() > 0) {
|
for (int i = 0; i < list.size(); i++) {
|
list.get(i).setId(null);
|
list.get(i).setStoreId(procurementSuppliesStore.getId());
|
consumablesMapper.insert(list.get(i));
|
}
|
}
|
}
|
|
@Override
|
public void deleteStore(Integer id, Integer consumablesId) {
|
consumablesMapper.deleteById(consumablesId);
|
List<ProcurementSuppliesConsumables> consumables = consumablesMapper.selectList(new LambdaQueryWrapper<ProcurementSuppliesConsumables>()
|
.eq(ProcurementSuppliesConsumables::getStoreId, id));
|
// 判断是否还有耗材 没有就将主表Store删除
|
if(CollectionUtils.isEmpty(consumables)) {
|
baseMapper.deleteById(id);
|
}
|
}
|
|
@Override
|
public Map<String, Object> selectStoreList(Page page, StoreDto storeDto) {
|
Map<String, Object> map = new HashMap<>();
|
map.put("head", PrintChina.printChina(StoreDto.class));
|
IPage<StoreDto> iPage = baseMapper.selectStoreList(page, QueryWrappers.queryWrappers(storeDto));
|
map.put("body", iPage);
|
return map;
|
}
|
|
/**
|
* 导出excel
|
* @param contentsId
|
* @param response
|
*/
|
@Override
|
public void exportExcel(Integer contentsId, HttpServletResponse response) throws IOException {
|
List<StoreExcel> storeExcels = baseMapper.exportExcel(contentsId);
|
response.setContentType("application/vnd.ms-excel");
|
response.setCharacterEncoding("UTF-8");
|
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
|
String fileName = null;
|
try {
|
fileName = URLEncoder.encode("耗材入库", "UTF-8");
|
} catch (UnsupportedEncodingException e) {
|
throw new RuntimeException(e);
|
}
|
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
|
ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
|
WriteSheet writeSheet = EasyExcel.writerSheet(0, "耗材入库").head(StoreExcel.class).build();
|
excelWriter.write(storeExcels, writeSheet);
|
excelWriter.finish();
|
}
|
}
|