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> findList(RsbMaterialPlan rsbMaterialPlan){ SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo(); return rsbMaterialPlanMapper.findList(rsbMaterialPlan.setCompanyId(userInfo.getCompanyId())); } @Override public List> 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 planIds = rsbMaterialPlanMapper.queryPlanIdByPSRB(rsbMaterialPlanDto); if(planIds.size()>1){ throw new BasicException(BasicStatus.UNQUE_IS_ERROR); } RsbMaterialPlan rsbMaterialPlan = new RsbMaterialPlan(); List 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 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> TableHeader() { return rsbMaterialPlanMapper.TableHeader(); } @Override public Map RsbStat(RsbStatDto rsbStatDto) { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); rsbStatDto.setCompanyId(sysUserInfo.getCompanyId()); Map map = new HashMap<>(); rsbStatDto.setStartTime(addTime(rsbStatDto.getStartDay(),1)); rsbStatDto.setEndTime(addTime(rsbStatDto.getEndDay(),2)); List materialVos = rsbMaterialsMapper.queryMaterials(rsbStatDto); map.put("materialTotal",materialVos); String materialName = rsbStatDto.getMaterialName(); List 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 materialVos = rsbMaterialsMapper.queryMaterials(rsbStatDto); String materialName = rsbStatDto.getMaterialName(); List 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); } }