whycxzp
2024-01-03 66db1d15cf5d4b51a346a42b66f0505bd7f31ce0
src/main/java/com/whyc/service/ProductHistoryService.java
@@ -19,6 +19,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
@Service
@@ -53,25 +54,34 @@
    public void insertAndUpdateEnabled(ProductHistory productHistory) {
        QueryWrapper<ProductHistory> query = Wrappers.query();
        query.eq("parent_code",productHistory.getParentCode())
                .eq("custom_code",productHistory.getCustomCode()).eq("enabled",1);
        ProductHistory productEnabled = mapper.selectOne(query);
                .eq("custom_code",productHistory.getCustomCode()).ne("enabled",0);
        List<ProductHistory> productNoZeroList = mapper.selectList(query);
        //添加新增日志到tb_product_lock_log表
        ProductLockLog lockLog = new ProductLockLog();
        lockLog.setParentCode(productEnabled.getParentCode());
        lockLog.setCustomCode(productEnabled.getCustomCode());
        lockLog.setVersion(productEnabled.getVersion());
        lockLog.setVersionTime(DateUtil.YYYY_MM_DD_HH_MM_SS.format(productEnabled.getVersionTime()));
        lockLog.setReason("产品bom上传,原生效版本锁定");
        lockLog.setOwner(ActionUtil.getUser().getName());
        lockLog.setCreateTime(new Date());
        //1代表日志类型为:锁定
        lockLog.setLockFlag(1);
        List<ProductLockLog> lockLogs = new LinkedList<>();
        for (ProductHistory historyNoZero : productNoZeroList) {
            ProductLockLog lockLog = new ProductLockLog();
            lockLog.setParentCode(historyNoZero.getParentCode());
            lockLog.setCustomCode(historyNoZero.getCustomCode());
            lockLog.setVersion(historyNoZero.getVersion());
            lockLog.setVersionTime(DateUtil.YYYY_MM_DD_HH_MM_SS.format(historyNoZero.getVersionTime()));
            if(historyNoZero.getEnabled() == 1) {
                lockLog.setReason("产品bom上传,原生效版本锁定");
            }else{
                lockLog.setReason("产品bom上传,原待审核版本锁定");
            }
            lockLog.setOwner(ActionUtil.getUser().getName());
            lockLog.setCreateTime(new Date());
            //1代表日志类型为:锁定
            lockLog.setLockFlag(1);
        lockLogService.insert(lockLog);
            lockLogs.add(lockLog);
        }
        if(lockLogs.size()>0) {
            lockLogService.insertBatch(lockLogs);
        }
        UpdateWrapper<ProductHistory> update = Wrappers.update();
        update.set("enabled",0).eq("parent_code",productHistory.getParentCode())
                .eq("custom_code",productHistory.getCustomCode()).eq("enabled",1);
                .eq("custom_code",productHistory.getCustomCode()).ne("enabled",0);
        mapper.update(null,update);
        mapper.insert(productHistory);
@@ -102,7 +112,7 @@
        query.eq("parent_code",parentCode).eq("custom_code",customCode).orderByDesc("version").last(" limit 1");
        return mapper.selectOne(query);
    }
    //历史版本可用性设定
    //历史版本可用性设定<产品中包含钣金件(0120)如果包含需要把当成产品的钣金件锁掉
    @Transactional
    public Response setpHistoryEnable(String parentCode, String customCode, int version, int enabled, String reason, String versionTime) {
        UpdateWrapper wrapper=new UpdateWrapper();
@@ -114,16 +124,14 @@
        qWrapper.eq("custom_code",customCode);
        //1.查询当前product中的信息
        Product product=productMapper.selectOne(qWrapper);
        if(enabled==1){
        if(enabled==1){//解锁
            //先将所有的锁定
            wrapper.ne("enabled",-1);
            wrapper.set("enabled",0);
            flag=mapper.update(null,wrapper);
            //再将选中的设为可用
            UpdateWrapper wrapper2=new UpdateWrapper();
            wrapper2.eq("id",product.getId());
            wrapper2.set("enabled",1);
            flag=mapper.update(null,wrapper2);
            wrapper.eq("id",product.getId());
            wrapper.set("enabled",1);
            flag=mapper.update(null,wrapper);
            if(flag>0){
                //2.将选中的版本的历史信息查询出来
                qWrapper.eq("id",product.getId());
@@ -160,20 +168,22 @@
            productMapper.update(null,uWrapper);
            //4.查询产品是否存在物料时钣金件的产品
            Material material_0120=productMapper.selectMaterial_0120(parentCode,customCode);
            List<Material> list=productMapper.selectMaterial_0120(parentCode,customCode);
            //如果存在则锁定
            if(material_0120!=null){
                //先锁定历史
                UpdateWrapper wrapperHistory_0120=new UpdateWrapper();
                wrapperHistory_0120.eq("parent_code",material_0120.getSubCode());
                wrapperHistory_0120.set("enabled",0);
                mapper.update(null,wrapperHistory_0120);
                //再设置实时为-1
                UpdateWrapper wrapper_0120=new UpdateWrapper();
                wrapper_0120.eq("parent_code",material_0120.getSubCode());
                //设为不可用版本为-1
                wrapper_0120.set("version",-1);
                productMapper.update(null,wrapper_0120);
            if(list!=null&&list.size()>0){
                for (Material material_0120:list) {
                    //先锁定历史
                    UpdateWrapper wrapperHistory_0120=new UpdateWrapper();
                    wrapperHistory_0120.eq("parent_code",material_0120.getSubCode());
                    wrapperHistory_0120.set("enabled",0);
                    mapper.update(null,wrapperHistory_0120);
                    //再设置实时为-1
                    UpdateWrapper wrapper_0120=new UpdateWrapper();
                    wrapper_0120.eq("parent_code",material_0120.getSubCode());
                    //设为不可用版本为-1
                    wrapper_0120.set("version",-1);
                    productMapper.update(null,wrapper_0120);
                }
            }
            /*if(flag>0){
                //