k94314517
2025-01-18 32929606943fedfca286b052bcb280193a3e0222
server/service/src/main/java/com/doumee/service/business/impl/SolutionsBaseServiceImpl.java
@@ -22,6 +22,7 @@
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@@ -442,4 +443,82 @@
        QueryWrapper<SolutionsBase> wrapper = new QueryWrapper<>(solutionsBase);
        return solutionsBaseMapper.selectCount(wrapper);
    }
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void createSolutionBase(Integer solutionId){
        List<Solutions> solutionsList = solutionsMapper.selectList(new QueryWrapper<Solutions>().lambda()
                    .eq(Objects.nonNull(solutionId),Solutions::getId,solutionId)
                .isNull(Solutions::getParentId).eq(Solutions::getDataType,Constants.ZERO).eq(Solutions::getIsdeleted,Constants.ZERO));
        for (Solutions solutions: solutionsList) {
            SolutionsBase solutionsBase = new SolutionsBase();
            solutionsBase.setCreator(solutions.getCreator());
            solutionsBase.setCreateDate(new Date());
            solutionsBase.setIsdeleted(Constants.ZERO);
            solutionsBase.setName(solutions.getName());
            solutionsBase.setStatus(solutions.getStatus());
            solutionsBase.setSortnum(Constants.ZERO);
            solutionsBase.setInsuranceId(solutions.getInsuranceId());
            solutionsBase.setValidType(solutions.getValidType());
            solutionsBase.setMinAge(solutions.getMinAge());
            solutionsBase.setMaxAge(solutions.getMaxAge());
            solutionsBase.setSingleWorktype(solutions.getSingleWorktype());
            solutionsBase.setSpecialInfo(solutions.getSpecialInfo());
            solutionsBase.setSpecialAgreement(solutions.getSpecialAgreement());
            solutionsBase.setOrtherInfo(solutions.getOrtherInfo());
            solutionsBase.setDataType(Constants.ZERO);
            solutionsBase.setValidTypeNum(solutions.getValidTypeNum());
            solutionsBase.setShopId(solutions.getShopId());
            solutionsBase.setAddValidDays(solutions.getAddValidDays());
            solutionsBase.setDelValidDays(solutions.getDelValidDays());
            solutionsBase.setCanAdd(solutions.getCanAdd());
            solutionsBase.setCanReduce(solutions.getCanReduce());
            solutionsBase.setCanChangeUnit(solutions.getCanChangeUnit());
            solutionsBase.setDelOnlyReplace(solutions.getDelOnlyReplace());
            solutionsBase.setCompanyName(solutions.getCompanyName());
            solutionsBase.setCompanyName(solutions.getCompanyName());
            solutionsBase.setCorrectWarnTime("18:30");
            solutionsBaseMapper.insert(solutionsBase);
            //如果有工种,则产生一个新的有效历史版本 ~
            SolutionsBase newModel = new SolutionsBase();
            BeanUtils.copyProperties(solutionsBase,newModel);
            newModel.setId(null);
            newModel.setBaseId(solutionsBase.getId());
            newModel.setDataType(Constants.TWO);
            solutionsBaseMapper.insert(newModel);
            List<SolutionWorktype> solutionWorktypeList = solutionWorktypeJoinMapper.selectList(new QueryWrapper<SolutionWorktype>().lambda().eq(SolutionWorktype::getType,Constants.ZERO).eq(SolutionWorktype::getSolutionId,solutions.getId()));
            Integer num = 1;
            for(SolutionWorktype solutionWorktype : solutionWorktypeList) {
                //基础版本
                SolutionWorktype w = new SolutionWorktype();
                w.setSolutionId(solutionsBase.getId());
                w.setIsdeleted(Constants.ZERO);
                w.setCreator(newModel.getCreator());
                w.setCreateDate(solutionsBase.getCreateDate());
                w.setStatus(Constants.ZERO);
                w.setSortnum(num++);
                w.setWorktypeId(solutionWorktype.getWorktypeId());
                w.setType(Constants.ONE);
                solutionWorktypeJoinMapper.insert(w);
                //历史版本的工种信息
                SolutionWorktype newType = new SolutionWorktype();
                BeanUtils.copyProperties(w, newType);
                newType.setSolutionId(newModel.getId());
                solutionWorktypeJoinMapper.insert(newType);
            }
            solutionsMapper.update(null,new UpdateWrapper<Solutions>().lambda().set(Solutions::getParentId,solutionsBase.getId())
                    .and(i->i.eq(Solutions::getId,solutions.getId()).or().eq(Solutions::getBaseId,solutions.getId()))
            );
        }
    }
}