package com.thhy.materials.modules.biz.materialsplan.service.impl;
|
|
import com.alibaba.nacos.api.utils.StringUtils;
|
import com.thhy.general.common.BasicStatus;
|
import com.thhy.general.config.SysUserInfo;
|
import com.thhy.general.exception.BasicException;
|
import com.thhy.general.utils.DeepCopyUtils;
|
import com.thhy.general.utils.UserInfoUtils;
|
import com.thhy.materials.modules.biz.materialsplan.entity.*;
|
import com.thhy.materials.modules.biz.materialsplan.mapper.RsbMaterialPlanMapper;
|
import com.thhy.materials.modules.biz.materialsplan.service.RsbMaterialPlanService;
|
import com.thhy.materials.modules.biz.rsbmaterials.entity.RsbMaterials;
|
import com.thhy.materials.modules.biz.rsbmaterials.mapper.RsbMaterialsMapper;
|
import com.thhy.materials.modules.biz.utils.ExcelExtendUtils;
|
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.Serializable;
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
|
/**
|
* 服务实现类
|
* @author zhang_xiao_bo
|
* @since 2023-04-18 10:26:11
|
*/
|
@Service
|
public class RsbMaterialPlanServiceImpl implements RsbMaterialPlanService {
|
|
|
|
@Autowired
|
private RsbMaterialPlanMapper rsbMaterialPlanMapper;
|
@Autowired
|
private RsbMaterialsMapper rsbMaterialsMapper;
|
|
public RsbMaterialPlan get(Serializable id){
|
return rsbMaterialPlanMapper.queryById(id);
|
}
|
|
public List<HashMap<String,Object>> findList(RsbMaterialPlan rsbMaterialPlan){
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo();
|
return rsbMaterialPlanMapper.findList(rsbMaterialPlan.setCompanyId(userInfo.getCompanyId()));
|
}
|
|
@Override
|
public List<HashMap<String, Object>> findListForExport(RsbMaterialPlan rsbMaterialPlan,String token) {
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo(token);
|
return rsbMaterialPlanMapper.findList(rsbMaterialPlan.setCompanyId(userInfo.getCompanyId()));
|
}
|
|
@Override
|
public String queryGroup(String rsbId) {
|
return rsbMaterialPlanMapper.queryGroup(rsbId);
|
}
|
|
/**
|
* 增加和修改
|
* @param rsbMaterialPlanDto
|
*/
|
@Transactional
|
public void addRsbMaterialPlan(RsbMaterialPlanDto rsbMaterialPlanDto){
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo();
|
/*int count = rsbMaterialPlanMapper.countByPSRB(rsbMaterialPlanDto);
|
if(count>0){
|
throw new BasicException(BasicStatus.PRO_SIZE_RE_BLOCK);
|
}*/
|
List<String> planIds = rsbMaterialPlanMapper.queryPlanIdByPSRB(rsbMaterialPlanDto);
|
if(planIds.size()>1){
|
throw new BasicException(BasicStatus.UNQUE_IS_ERROR);
|
}
|
RsbMaterialPlan rsbMaterialPlan = new RsbMaterialPlan();
|
List<RsbMaterials> materialsList = rsbMaterialPlanDto.getMaterialsList();
|
DeepCopyUtils.copy(rsbMaterialPlanDto,rsbMaterialPlan);
|
if(rsbMaterialPlan.getId() == null){
|
if(planIds.size()>0){
|
throw new BasicException(BasicStatus.PRO_SIZE_RE_BLOCK);
|
}
|
//增加操作
|
rsbMaterialPlan.setCreateUser(userInfo.getUserId());
|
rsbMaterialPlanMapper.insert(rsbMaterialPlan);
|
}else{
|
//修改操作
|
if (planIds.size()>0) {
|
if(!rsbMaterialPlanDto.getId().equals(planIds.get(0))){
|
throw new BasicException(BasicStatus.PRO_SIZE_RE_BLOCK);
|
}
|
}
|
rsbMaterialPlan.setUpdateUser(userInfo.getUserId());
|
rsbMaterialPlan.setUpdateTime(new Date());
|
rsbMaterialPlanMapper.update(rsbMaterialPlan);
|
|
rsbMaterialsMapper.deleteByRabPlan(rsbMaterialPlan.getId());
|
}
|
|
for(RsbMaterials rsbMaterials : materialsList){
|
rsbMaterials.setRsbId(rsbMaterialPlan.getId());
|
rsbMaterialsMapper.insert(rsbMaterials);
|
}
|
|
}
|
|
@Override
|
public List<RsbMaterialDict> info(RsbMaterialPlanDto rsbMaterialPlanDto) {
|
if(StringUtils.isBlank(rsbMaterialPlanDto.getId())){
|
return rsbMaterialPlanMapper.materialsListNoPlanId();
|
}
|
return rsbMaterialPlanMapper.materialsListByPlanId(rsbMaterialPlanDto.getId());
|
}
|
|
/**
|
* 修改
|
* @param rsbMaterialPlan
|
*/
|
public void update(RsbMaterialPlan rsbMaterialPlan){
|
rsbMaterialPlanMapper.update(rsbMaterialPlan);
|
}
|
|
/**
|
* 删除
|
* @param id
|
*/
|
public void delete(Serializable id){
|
rsbMaterialPlanMapper.deletelogic(id);
|
}
|
|
@Override
|
public List<HashMap<String,Object>> TableHeader() {
|
return rsbMaterialPlanMapper.TableHeader();
|
}
|
|
@Override
|
public Map<String, Object> RsbStat(RsbStatDto rsbStatDto) {
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
rsbStatDto.setCompanyId(sysUserInfo.getCompanyId());
|
Map<String,Object> map = new HashMap<>();
|
rsbStatDto.setStartTime(addTime(rsbStatDto.getStartDay(),1));
|
rsbStatDto.setEndTime(addTime(rsbStatDto.getEndDay(),2));
|
|
|
List<MaterialVo> materialVos = rsbMaterialsMapper.queryMaterials(rsbStatDto);
|
map.put("materialTotal",materialVos);
|
|
String materialName = rsbStatDto.getMaterialName();
|
|
List<StatResultVo> statResultVos = new ArrayList<>();
|
if(materialName.equals("both")){
|
//获取全部
|
statResultVos = rsbMaterialsMapper.queryAllMaterial(null);
|
}else{
|
statResultVos = rsbMaterialsMapper.queryAllMaterial(rsbStatDto.getMaterialName());
|
}
|
statResultVos.forEach(stat ->{
|
rsbStatDto.setMaterialName(stat.getMaterialName());
|
|
if(rsbStatDto.getDateType()==1){
|
stat.setStatVoList(rsbMaterialsMapper.queryValueDay(rsbStatDto));
|
}else if(rsbStatDto.getDateType()==2){
|
//月
|
stat.setStatVoList(rsbMaterialsMapper.queryValueMonth(rsbStatDto));
|
}
|
});
|
map.put("statResult",statResultVos);
|
return map;
|
}
|
|
public Date addTime(Date time,int s){
|
String str = s==1?" 00:00:00":" 23:59:59";
|
try {
|
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(new SimpleDateFormat("yyyy-MM-dd").format(time)+str);
|
} catch (ParseException e) {
|
throw new RuntimeException(e);
|
}
|
}
|
|
@Override
|
public void statExport(RsbStatDto rsbStatDto,String token,HttpServletResponse response) {
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo(token);
|
|
rsbStatDto.setStartTime(addTime(rsbStatDto.getStartDay(),1));
|
rsbStatDto.setEndTime(addTime(rsbStatDto.getEndDay(),2));
|
|
//List<MaterialVo> materialVos = rsbMaterialsMapper.queryMaterials(rsbStatDto);
|
|
String materialName = rsbStatDto.getMaterialName();
|
|
List<StatResultVo> statResultVos = new ArrayList<>();
|
if(materialName.equals("both")){
|
//获取全部
|
statResultVos = rsbMaterialsMapper.queryAllMaterial(null);
|
}else{
|
statResultVos = rsbMaterialsMapper.queryAllMaterial(rsbStatDto.getMaterialName());
|
}
|
statResultVos.forEach(stat ->{
|
rsbStatDto.setMaterialName(stat.getMaterialName());
|
rsbStatDto.setCompanyId(userInfo.getCompanyId());
|
if(rsbStatDto.getDateType()==1){
|
stat.setStatVoList(rsbMaterialsMapper.queryValueDay(rsbStatDto));
|
}else if(rsbStatDto.getDateType()==2){
|
//月
|
stat.setStatVoList(rsbMaterialsMapper.queryValueMonth(rsbStatDto));
|
}
|
});
|
ExcelExtendUtils.create(statResultVos,"原材料消耗",response);
|
}
|
}
|