package com.doumee.service.business.impl; import com.alibaba.druid.sql.visitor.functions.Concat; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.utils.Constants; import com.doumee.core.utils.DateUtil; import com.doumee.dao.business.JkKeysMapper; import com.doumee.dao.business.model.Cars; import com.doumee.dao.business.model.JkCabinet; import com.doumee.dao.business.model.JkKeys; import com.doumee.service.business.third.model.LoginUserInfo; import com.doumee.service.business.third.model.PageData; import com.doumee.core.utils.Utils; import com.doumee.dao.business.JkCabinetGridMapper; import com.doumee.dao.business.model.JkCabinetGrid; import com.doumee.service.business.JkCabinetGridService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.doumee.service.business.third.model.PageWrap; import com.github.yulichang.toolkit.MPJWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.github.xiaoymin.knife4j.core.util.CollectionUtils; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** * 钥匙柜柜格基本信息表Service实现 * @author 江蹄蹄 * @date 2025/09/28 09:01 */ @Service public class JkCabinetGridServiceImpl implements JkCabinetGridService { @Autowired private JkCabinetGridMapper jkCabinetGridMapper; @Autowired private JkKeysMapper jkKeysMapper; @Override public Integer create(JkCabinetGrid jkCabinetGrid) { jkCabinetGridMapper.insert(jkCabinetGrid); return jkCabinetGrid.getId(); } @Override public void deleteById(Integer id) { jkCabinetGridMapper.deleteById(id); } @Override public void delete(JkCabinetGrid jkCabinetGrid) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(jkCabinetGrid); jkCabinetGridMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } jkCabinetGridMapper.deleteBatchIds(ids); } @Override public void updateById(JkCabinetGrid jkCabinetGrid) { if(Objects.isNull(jkCabinetGrid) || Objects.isNull(jkCabinetGrid.getId()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } LoginUserInfo loginUserInfo = jkCabinetGrid.getLoginUserInfo(); JkCabinetGrid model = jkCabinetGridMapper.selectById(jkCabinetGrid.getId()); if(Objects.isNull(model)|| Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } if(Objects.nonNull(jkCabinetGrid.getKeyId())){ if(Objects.nonNull(model.getKeyId())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"已绑定,请勿重复绑定"); } JkKeys keysModel = jkKeysMapper.selectById(jkCabinetGrid.getKeyId()); if(Objects.isNull(keysModel)|| Constants.equalsInteger(keysModel.getIsdeleted(),Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } if(!Constants.equalsInteger(keysModel.getStatus(), (Constants.ZERO))){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"钥匙已被绑定,请选择其他钥匙绑定"); } //更新钥匙柜信息 jkCabinetGridMapper.update(new UpdateWrapper().lambda() .set(JkCabinetGrid::getKeyId,jkCabinetGrid.getKeyId()) .set(JkCabinetGrid::getEditor,loginUserInfo.getId()) .set(JkCabinetGrid::getEditDate,DateUtil.getCurrDateTime()) .set(JkCabinetGrid::getEditDate, DateUtil.getCurrDateTime()) .eq(JkCabinetGrid::getId,jkCabinetGrid.getId())); //标记钥匙信息 jkKeysMapper.update(new UpdateWrapper().lambda() .set(JkKeys::getStatus,Constants.ONE) .eq(JkKeys::getId,jkCabinetGrid.getKeyId()) ); return; }else if(Objects.nonNull(jkCabinetGrid.getChannelCode())||Objects.nonNull(jkCabinetGrid.getBoardCode())){ jkCabinetGridMapper.update(new UpdateWrapper().lambda() .set(Objects.nonNull(jkCabinetGrid.getChannelCode()),JkCabinetGrid::getChannelCode,jkCabinetGrid.getChannelCode()) .set(Objects.nonNull(jkCabinetGrid.getBoardCode()),JkCabinetGrid::getBoardCode,jkCabinetGrid.getBoardCode()) .set(JkCabinetGrid::getEditDate, DateUtil.getCurrDateTime()) .eq(JkCabinetGrid::getId,jkCabinetGrid.getId())); } } @Override public void updateByIdInBatch(List jkCabinetGrids) { if (CollectionUtils.isEmpty(jkCabinetGrids)) { return; } for (JkCabinetGrid jkCabinetGrid: jkCabinetGrids) { this.updateById(jkCabinetGrid); } } @Override public JkCabinetGrid findById(Integer id) { return jkCabinetGridMapper.selectById(id); } @Override public JkCabinetGrid findOne(JkCabinetGrid jkCabinetGrid) { QueryWrapper wrapper = new QueryWrapper<>(jkCabinetGrid); return jkCabinetGridMapper.selectOne(wrapper); } @Override public List findList(JkCabinetGrid jkCabinetGrid) { QueryWrapper wrapper = new QueryWrapper<>(jkCabinetGrid); return jkCabinetGridMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); Utils.MP.blankToNull(pageWrap.getModel()); JkCabinetGrid model = pageWrap.getModel(); MPJLambdaWrapper wrapper = new MPJLambdaWrapper() .selectAll(JkCabinetGrid.class) .selectAs(JkCabinet::getName,JkCabinetGrid::getCabinetName) .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode) .leftJoin(JkCabinet.class,JkCabinet::getId,JkCabinetGrid::getCabinetId) .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId) .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) .eq(Objects.nonNull(model.getCabinetId()),JkCabinetGrid::getCabinetId,model.getCabinetId()) .eq(Objects.nonNull(model.getStatus()),JkCabinetGrid::getStatus,model.getStatus()) .isNull(Objects.nonNull(model.getBindStatus())&&Constants.equalsInteger(model.getBindStatus(),Constants.ZERO),JkCabinetGrid::getKeyId) .isNotNull(Objects.nonNull(model.getBindStatus())&&Constants.equalsInteger(model.getBindStatus(),Constants.ONE),JkCabinetGrid::getKeyId) .like(StringUtils.isNotBlank(model.getKeyCode()),JkKeys::getCode,model.getKeyCode()); IPage iPage = jkCabinetGridMapper.selectJoinPage(page,JkCabinetGrid.class,wrapper); for (JkCabinetGrid jkCabinetGrid:iPage.getRecords()) { jkCabinetGrid.setBindStatus(Objects.isNull(jkCabinetGrid.getKeyId())?Constants.ZERO:Constants.ONE); } return PageData.from(iPage); } @Override public long count(JkCabinetGrid jkCabinetGrid) { QueryWrapper wrapper = new QueryWrapper<>(jkCabinetGrid); return jkCabinetGridMapper.selectCount(wrapper); } @Override public void updateStatusById(JkCabinetGrid jkCabinetGrid) { if(Objects.isNull(jkCabinetGrid) || Objects.isNull(jkCabinetGrid.getId()) || Objects.isNull(jkCabinetGrid.getStatus())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } jkCabinetGridMapper.update(null,new UpdateWrapper() .lambda().set(JkCabinetGrid::getStatus,jkCabinetGrid.getStatus()) .set(JkCabinetGrid::getEditDate, DateUtil.getCurrDateTime()) .eq(JkCabinetGrid::getId,jkCabinetGrid.getId())); } @Override @Transactional(rollbackFor = {Exception.class,BusinessException.class}) public void unBindKeys(List idList){ if(CollectionUtils.isEmpty(idList)){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } if(idList.size()==Constants.ONE){ JkCabinetGrid model = jkCabinetGridMapper.selectById(idList.get(Constants.ZERO)); if(Objects.isNull(model)|| Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } if(Objects.isNull(model.getKeyId())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前规格未绑定钥匙,请刷新查看"); }else{ //更新钥匙柜信息 jkCabinetGridMapper.update(new UpdateWrapper().lambda() .set(JkCabinetGrid::getKeyId,null) .set(JkCabinetGrid::getEditDate, DateUtil.getCurrDateTime()) .eq(JkCabinetGrid::getId,model.getId())); JkKeys keysModel = jkKeysMapper.selectById(model.getKeyId()); if(Objects.nonNull(keysModel) && !Constants.equalsInteger(keysModel.getStatus(),Constants.ZERO)){ jkKeysMapper.update(new UpdateWrapper().lambda() .set(JkKeys::getStatus,Constants.ZERO) .eq(JkKeys::getId,keysModel.getId()) ); } } }else{ List jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper().lambda() .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) .isNotNull(JkCabinetGrid::getKeyId) .in(JkCabinetGrid::getId,idList)); if(CollectionUtils.isNotEmpty(jkCabinetGridList)){ jkCabinetGridMapper.update(new UpdateWrapper().lambda() .set(JkCabinetGrid::getKeyId,null) .set(JkCabinetGrid::getEditDate, DateUtil.getCurrDateTime()) .eq(JkCabinetGrid::getId,jkCabinetGridList.stream().map(i->i.getId()).collect(Collectors.toList()))); List keyIdList = jkCabinetGridList.stream().filter(i->Objects.nonNull(i.getKeyId())).map(i->i.getKeyId()).collect(Collectors.toList()); if(CollectionUtils.isNotEmpty(keyIdList)){ jkKeysMapper.update(new UpdateWrapper().lambda() .set(JkKeys::getStatus,Constants.ZERO) .in(JkKeys::getId,keyIdList) ); } } } } }