package com.thhy.materials.modules.biz.concret.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.github.pagehelper.util.StringUtil; 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.SysSteelCorrection; import com.thhy.materials.modules.biz.concret.entity.dto.RestDataByOneDto; import com.thhy.materials.modules.biz.concret.entity.dto.SteelCheckDto; import com.thhy.materials.modules.biz.concret.mapper.SysSteelMapper; import com.thhy.materials.modules.biz.concret.service.SysSteelService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import java.util.Map; @Service public class SysSteelServiceImpl implements SysSteelService { @Resource private SysSteelMapper steelMapper; @Override public BasicResult steelInsert(Map values) { //当前登录人 分公司id SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); String companyId = sysUserInfo.getCompanyId(); values.put("companyId",companyId); String steelName = values.get("steelName").toString(); String steelModel = values.get("steelModel").toString(); String steelId = steelMapper.steelNameAndModelByOne(steelName,steelModel,companyId); if(!StringUtil.isEmpty(steelId)){ return BasicResult.faild("11111","error","该类型已存在"); } values.put("steelId",""); steelMapper.steelInsert(values); return BasicResult.success("添加成功"); } @Override public BasicResult steelList(Map values) { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); String companyId = sysUserInfo.getCompanyId(); values.put("companyId",companyId); Integer pageNum = Integer.valueOf(values.get("pageNum").toString()); Integer pageSize = Integer.valueOf(values.get("pageSize").toString()); PageHelper.startPage(pageNum,pageSize); List steels = steelMapper.steelList(values); steels.stream().forEach(sysSteel -> { if(sysSteel.getStock()!=null &&sysSteel.getStock()>0){ DecimalFormat df = new DecimalFormat("#.####"); String formattedNumber = df.format(sysSteel.getStock()); sysSteel.setStock(Double.valueOf(formattedNumber)); } }); PageInfo sysSteelPageInfo = new PageInfo<>(steels); return BasicResult.success(sysSteelPageInfo); } @Override public BasicResult steelThingJsList(String token) { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(token); String companyId = sysUserInfo.getCompanyId(); List steels = steelMapper.steelThingJsList(companyId); return BasicResult.success(steels); } @Override public BasicResult steelDel(String steelId) { List ids = steelMapper.steelCorrection(steelId); if(ids!=null && ids.size()>0){ return BasicResult.faild("11111","该类型已被占用","error"); } steelMapper.steelDel(steelId); return BasicResult.success("删除成功"); } @Override public BasicResult steelInfo(String steelId) { SysSteel steel = steelMapper.steelInfo(steelId); return BasicResult.success(steel); } @Override public BasicResult steelUpdate(Map values) { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); String companyId = sysUserInfo.getCompanyId(); String steelId1 = values.get("steelId").toString(); String steelName = values.get("steelName").toString(); String steelModel = values.get("steelModel").toString(); String steelId = steelMapper.steelNameAndModelByOne(steelName,steelModel,companyId); if(!StringUtil.isEmpty(steelId)&&!steelId1.equals(steelId)){ return BasicResult.faild("11111","error","该类型已存在"); } steelMapper.steelUpdate(values); return BasicResult.success("修改成功"); } @Override @Transactional public BasicResult steelCheck(Map values) { //校正后数量 Double correctionAfter = Double.valueOf(values.get("correctionAfter").toString()); //校正 钢筋id String steelId = values.get("steelId").toString(); //修改库存 steelMapper.steelStockUp(steelId,correctionAfter); //添加校正记录 SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); values.put("createUser",sysUserInfo.getUserId()); values.put("ids",""); steelMapper.steelCheckInsert(values); return BasicResult.success("校正成功"); } @Override public BasicResult steelCheckList(Map values) { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); String companyId = sysUserInfo.getCompanyId(); values.put("companyId",companyId); Integer pageNum = Integer.valueOf(values.get("pageNum").toString()); Integer pageSize = Integer.valueOf(values.get("pageSize").toString()); PageHelper.startPage(pageNum,pageSize); List steelCorrections = steelMapper.steelCheckList(values); PageInfo sysSteelCorrectionPageInfo = new PageInfo<>(steelCorrections); return BasicResult.success(sysSteelCorrectionPageInfo); } @Override public void steelCheckExport(Map values, HttpServletResponse response) { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); String companyId = sysUserInfo.getCompanyId(); values.put("companyId",companyId); List steelCorrections = steelMapper.steelCheckList(values); List recordDtos = new ArrayList<>(); for (SysSteelCorrection steelCorrection : steelCorrections){ SteelCheckDto recordDto = new SteelCheckDto(); recordDto.setCreateTime(steelCorrection.getCreateTime()); recordDto.setSteelName(steelCorrection.getSteelName()); recordDto.setSteelModel(steelCorrection.getSteelModel()); recordDto.setUnit(steelCorrection.getUnit()); recordDto.setCorrectionNum(steelCorrection.getCorrectionNum()); recordDto.setCorrectionBefore(steelCorrection.getCorrectionBefore()); recordDto.setCorrectionAfter(steelCorrection.getCorrectionAfter()); recordDto.setRemark(steelCorrection.getRemark()); recordDto.setRealName(steelCorrection.getRealName()); recordDtos.add(recordDto); } ExcelWriter excel = new ExcelWriter();//定义excel excel.addHeaderAlias("createTime", "校正时间"); excel.addHeaderAlias("steelName", "钢筋名称"); excel.addHeaderAlias("steelModel", "规格型号"); excel.addHeaderAlias("unit", "计量单位"); excel.addHeaderAlias("correctionNum", "校正数量"); excel.addHeaderAlias("correctionBefore", "校正前库存"); excel.addHeaderAlias("correctionAfter", "校正后库存"); excel.addHeaderAlias("remark", "备注"); excel.addHeaderAlias("realName", "校正人"); 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(recordDtos); excel.flush(out, true); } catch (IOException e) { e.printStackTrace(); } finally { // 关闭writer,释放内存 excel.close(); } IoUtil.close(out); } @Override public BasicResult steelPull() { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); String companyId = sysUserInfo.getCompanyId(); List steels = steelMapper.steelPull(companyId); return BasicResult.success(steels); } /*** * 预警值设置 * @param steelId * @param alarmCount * @return */ @Override public BasicResult steelAlertSettings(String steelId, Integer alarmCount) { steelMapper.steelAlertSettings(steelId,alarmCount); return BasicResult.success("成功"); } /** * web端预警弹窗 * @return */ @Override public BasicResult selectSteelAlert() { return BasicResult.success(steelMapper.selectsteelAlert()); } @Override public BasicResult restDataByOne(String deviceId) { RestDataByOneDto restDataByOneDto = steelMapper.restDataByOne(deviceId); return BasicResult.success(restDataByOneDto); } }