package com.thhy.materials.modules.biz.embedment.service.impl; 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.common.BasicStatus; 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.entity.SysEmbedmentCorrectionEntity; import com.thhy.materials.modules.biz.embedment.entity.SysEmbedmentGoodsEntity; import com.thhy.materials.modules.biz.embedment.mapper.SysEmbedmentCorrectionMapper; import com.thhy.materials.modules.biz.embedment.mapper.SysEmbedmentGoodsMapper; import com.thhy.materials.modules.biz.embedment.service.SysEmbedmentGoodsService; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.util.Date; import java.util.List; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import java.util.stream.Stream; /** * @Author QiuYuHao * @CreateDate 2023-09-22 13:32:52 * 预埋件库存实现 */ @Service public class SysEmbedmentGoodsServiceImpl implements SysEmbedmentGoodsService { @Autowired private RedissonClient redissonClient; @Autowired private SysEmbedmentGoodsMapper sysEmbedmentGoodsMapper; @Autowired private SysEmbedmentCorrectionMapper sysEmbedmentCorrectionMapper; //=======================种类到此开始======================= @Override public BasicResult getType() { return BasicResult.success(sysEmbedmentGoodsMapper.getType()); } @Override public BasicResult insert(SysEmbedmentGoodsEntity sysEmbedmentGoodsEntity) { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); sysEmbedmentGoodsEntity.setCompanyId(sysUserInfo.getCompanyId()); String embedmentName = sysEmbedmentGoodsEntity.getEmbedmentName(); String embedmentType = sysEmbedmentGoodsEntity.getEmbedmentType(); String id = sysEmbedmentGoodsMapper.embedmentNameAndType(embedmentName,embedmentType); if(!StringUtil.isEmpty(id)){ return BasicResult.faild("11111","error","名称和规格型号不可重复"); } sysEmbedmentGoodsMapper.insert(sysEmbedmentGoodsEntity); return BasicResult.success(); } @Override public BasicResult delete(String id) { sysEmbedmentGoodsMapper.delete(id); return BasicResult.success(); } @Override public BasicResult update(SysEmbedmentGoodsEntity sysEmbedmentGoodsEntity) { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); sysEmbedmentGoodsEntity.setCompanyId(sysUserInfo.getCompanyId()); String embedmentName = sysEmbedmentGoodsEntity.getEmbedmentName(); String embedmentType = sysEmbedmentGoodsEntity.getEmbedmentType(); String id = sysEmbedmentGoodsMapper.embedmentNameAndType(embedmentName,embedmentType); if(!StringUtil.isEmpty(id)){ return BasicResult.faild("11111","error","名称和规格型号不可重复"); } sysEmbedmentGoodsMapper.update(sysEmbedmentGoodsEntity); return BasicResult.success(); } @Override public BasicResult findAll(EmbedmentGoodsDto embedmentGoodsDto) { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); embedmentGoodsDto.setCompanyId(sysUserInfo.getCompanyId()); PageHelper.startPage(embedmentGoodsDto.getPageNum(), embedmentGoodsDto.getPageSize()); List all = sysEmbedmentGoodsMapper.findAll(embedmentGoodsDto); PageInfo pageInfo = new PageInfo<>(all); return BasicResult.success(pageInfo); } @Override public BasicResult findEntity(String id) { return BasicResult.success(sysEmbedmentGoodsMapper.findEntity(id)); } @Override public BasicResult findAllDetails() { List modelList = sysEmbedmentGoodsMapper.findAll(null) .stream().map(s -> s.getEmbedmentModel()).collect(Collectors.toList()); return BasicResult.success(modelList); } //=======================种类到此结束======================= //=======================库存管理开始======================= @Override public void export(EmbedmentGoodsDto embedmentGoodsDto, HttpServletResponse response) { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); embedmentGoodsDto.setCompanyId(sysUserInfo.getCompanyId()); List all = sysEmbedmentGoodsMapper.findAll(embedmentGoodsDto); ExcelUtils.downExcel(all,SysEmbedmentGoodsEntity.class,response,"库存管理"); } /** * 预警值设置 * @param embedmentGoodsDto * @return */ @Override public BasicResult alarmSet(EmbedmentGoodsDto embedmentGoodsDto) { sysEmbedmentGoodsMapper.alarmSet(embedmentGoodsDto); return BasicResult.success(); } /** * 库存校正 * @param embedmentGoodsDto * @return */ @Override public BasicResult inventoryCorrection(EmbedmentGoodsDto embedmentGoodsDto) { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); String companyId = sysUserInfo.getCompanyId(); RLock lock = redissonClient.getLock("embedmentlock"); try { if (lock.tryLock(5, 10, TimeUnit.SECONDS)) { //此时参数实体获得的id是库存id 更新库存 SysEmbedmentGoodsEntity s = new SysEmbedmentGoodsEntity(); s.setId(embedmentGoodsDto.getId()); s.setStock(embedmentGoodsDto.getCorrectionAfter()); sysEmbedmentGoodsMapper.update(s); } else { throw new BasicException(BasicStatus.OP_IS_TIMEOUT); } } catch (InterruptedException e) { throw new BasicException(BasicStatus.OP_IS_REPEAT); } finally { if (lock.isLocked()) { lock.unlock(); } } //添加校正记录 SysEmbedmentCorrectionEntity sc = new SysEmbedmentCorrectionEntity(); sc.setEmbedmentId(embedmentGoodsDto.getId()); sc.setCorrectionNum(embedmentGoodsDto.getCorrectionNum()); sc.setCorrectionAfter(embedmentGoodsDto.getCorrectionAfter()); sc.setCorrectionBefore(embedmentGoodsDto.getCorrectionBefore()); sc.setCreateUser(sysUserInfo.getRealName()); sc.setRemark(embedmentGoodsDto.getRemark()); sysEmbedmentCorrectionMapper.insert(sc); return BasicResult.success(); } //=======================库存管理结束======================= //=======================校正记录结束======================= /** * 校正记录列表 * @param embedmentGoodsDto * @return */ @Override public BasicResult inventoryList(EmbedmentGoodsDto embedmentGoodsDto) { SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo(); embedmentGoodsDto.setCompanyId(sysUserInfo.getCompanyId()); PageHelper.startPage(embedmentGoodsDto.getPageNum(), embedmentGoodsDto.getPageSize()); List sysEmbedmentCorrectionEntities = sysEmbedmentCorrectionMapper.inventoryList(embedmentGoodsDto); PageInfo pageInfo = new PageInfo<>(sysEmbedmentCorrectionEntities); return BasicResult.success(pageInfo); } //=======================校正记录结束======================= }