czt
9 天以前 db67639449287bcec461916a7dca6003ee5dd03c
fzzy-igdss-view/src/main/java/com/fzzy/igds/InoutNoticePR.java
@@ -2,77 +2,34 @@
import com.bstek.dorado.annotation.DataProvider;
import com.bstek.dorado.annotation.DataResolver;
import com.bstek.dorado.annotation.Expose;
import com.bstek.dorado.data.provider.Page;
import com.fzzy.igds.constant.Constant;
import com.fzzy.igds.data.NoticeDto;
import com.fzzy.igds.data.NoticeParam;
import com.fzzy.igds.service.InoutNoticeService;
import com.fzzy.igds.domain.InoutNoticeIn;
import com.fzzy.igds.domain.InoutNoticeOut;
import com.fzzy.igds.service.SysDeptService;
import com.fzzy.igds.utils.ContextUtil;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.*;
/**
 * @Description 通知单管理
 * @Author CZT
 * @Date 2024/12/16 10:10
 * @Date 2025/11/29 16:42
 */
@Component
public class InoutNoticePR {
   @Resource
   private InoutNoticeService inoutNoticeService;
   @Resource
   private SysDeptService sysDeptService;
   /**
    * inoutNoticePR#getTitle 根据报表类型,获取默认查询信息,比如表头信息等
    *
    * @param
    * @return
    */
   @DataProvider
   public Map<String, Object> getTitle(Map<String, Object> param) {
      Map<String, Object> result = new HashMap<String, Object>();
      //获取参数中报表类型
      String type = (String)param.get("type");
      //获取分库编码对应的分库名称
      String deptName = "";
      SysDept subDept = sysDeptService.getCacheDept(null, ContextUtil.subDeptId(null));
      if (null != subDept) {
         deptName = subDept.getDeptName();
      }
      if ("NOTICE_IN".equals(type)) {
         result.put("title", "入库通知单");
         if (StringUtils.isNotEmpty(deptName)) {
            result.put("title", deptName + "入库通知单");
         }
      }
      if ("NOTICE_OUT".equals(type)) {
         result.put("title", "出库通知单");
         if (StringUtils.isNotEmpty(deptName)) {
            result.put("title", deptName + "出库通知单");
         }
      }
      return result;
   }
   /**
    * inoutNoticePR#getYearQuery 默认年份
@@ -91,47 +48,6 @@
      return result;
   }
   /**
    * inoutNoticePR#queryNoticeByKey  根据参数查询出入库通知单,用于手动补单时,选择通知单
    *
    * @param
    * @return
    */
   @DataProvider
   public List<NoticeDto> queryNoticeByKey(Map<String, Object> param) {
      if (param == null) {
         return null;
      }
      String type = (String) param.get("type");
      if (StringUtils.isEmpty(type)) {
         return null;
      }
      List<NoticeDto> list = new ArrayList<>();
      NoticeDto dto;
      if (Constant.TYPE_IN.equals(type)) {
         List<InoutNoticeIn> listIn = this.queryNoticeIn(param);
         if (null != listIn && listIn.size() > 0) {
            for (InoutNoticeIn inoutNoticeIn : listIn) {
               dto = new NoticeDto();
               BeanUtils.copyProperties(inoutNoticeIn, dto);
               list.add(dto);
            }
         }
      }
      if (Constant.TYPE_OUT.equals(type)) {
         List<InoutNoticeOut> listOut = this.queryNoticeOut(param);
         if (null != listOut && listOut.size() > 0) {
            for (InoutNoticeOut inoutNoticeOut : listOut) {
               dto = new NoticeDto();
               BeanUtils.copyProperties(inoutNoticeOut, dto);
               list.add(dto);
            }
         }
      }
      return list;
   }
   /*==================== 入库通知单相关业务 ====================*/
   /**
@@ -143,11 +59,13 @@
   public InoutNoticeIn initAddIn() {
      SysUser user = ContextUtil.getLoginUser();
      InoutNoticeIn data = new InoutNoticeIn();
      data.setId("RKTZD_" + ContextUtil.generateId());
      data.setId(ContextUtil.generateOrderId("RK"));
      data.setName("入库通知单");
      data.setCompanyId(user.getCompanyId());
      data.setDeptId(ContextUtil.subDeptId(user));
      data.setTag(Constant.YN_Y);
      data.setYear(DateFormatUtils.format(new Date(), "yyyy"));
      data.setCreateBy(ContextUtil.getLoginUserName());
      data.setCreateTime(new Date());
      return data;
   }
@@ -158,62 +76,20 @@
    * @return
    */
   @DataProvider
   public void pageQueryIn(Page<InoutNoticeIn> page, Map<String, Object> param) {
      if (null == param) {
         param = new HashMap<>();
      }
      Map<String, Object> finalParam = param;
   public void pageQueryIn(Page<InoutNoticeIn> page, NoticeParam param) {
      com.baomidou.mybatisplus.extension.plugins.pagination.Page<InoutNoticeIn> corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPageNo(), page.getPageSize());
      //多参数分页查询
      Pageable pageable = PageRequest.of(0, 10000, Sort.Direction.ASC, InoutNoticeIn.SORT_PROP);
      Specification<InoutNoticeIn> specification = new Specification<InoutNoticeIn>() {
         private static final long serialVersionUID = 1L;
      inoutNoticeService.pageQueryIn(corePage, param);
         public Predicate toPredicate(Root<InoutNoticeIn> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
            List<Predicate> predicates = new ArrayList<Predicate>(); //所有的断言
            Predicate predicate1 = cb.equal(root.get("companyId"), ContextUtil.getCompanyId());
            predicates.add(predicate1);
            Predicate predicate2 = cb.equal(root.get("deptId"), ContextUtil.subDeptId(null));
            predicates.add(predicate2);
            String key = String.valueOf(finalParam.get("year"));
            if (StringUtils.isBlank(key)) {
               Predicate predicate3 = cb.equal(root.get("year"), key);
               predicates.add(predicate3);
            }
            key = (String) finalParam.get("id");
            if (StringUtils.isBlank(key)) {
               Predicate predicate4 = cb.equal(root.get("id"),  key);
               predicates.add(predicate4);
            }
            key = (String) finalParam.get("customerName");
            if (StringUtils.isBlank(key)) {
               Predicate predicate5 = cb.like(root.get("customerName"), "%" + key + "%");
               predicates.add(predicate5);
            }
            key = (String) finalParam.get("completeStatus");
            if (StringUtils.isBlank(key)) {
               Predicate predicate6 = cb.equal(root.get("completeStatus"), key);
               predicates.add(predicate6);
            }
            key = (String) finalParam.get("foodVariety");
            if (StringUtils.isBlank(key)) {
               Predicate predicate7 = cb.equal(root.get("foodVariety"), key);
               predicates.add(predicate7);
            }
            return cb.and(predicates.toArray(new Predicate[0]));
         }
      };
      org.springframework.data.domain.Page<InoutNoticeIn> japPage = inoutNoticeService.queryAllNoticeIn(specification, pageable);
      page.setEntityCount((int) japPage.getTotalElements());
      page.setEntities(japPage.getContent());
      // 重新封装
      page.setEntities(corePage.getRecords());
      page.setEntityCount(Integer.parseInt(String.valueOf(corePage.getTotal())));
   }
   /**
    * inoutNoticePR#saveIn 更新入库通知单
    */
   @Expose
   @DataResolver
   public String saveIn(InoutNoticeIn data) {
      InoutNoticeIn inoutNoticeIn = new InoutNoticeIn();
      BeanUtils.copyProperties(data, inoutNoticeIn);
@@ -231,60 +107,6 @@
   }
   /**
    * 根据不同条件查询
    * @param param
    * @return
    */
   public List<InoutNoticeIn> queryNoticeIn(Map<String, Object> param) {
      if (null == param) {
         param = new HashMap<>();
      }
      Map<String, Object> finalParam = param;
      //多参数分页查询
      Pageable pageable = PageRequest.of(0, 10000, Sort.Direction.ASC, InoutNoticeIn.SORT_PROP);
      Specification<InoutNoticeIn> specification = new Specification<InoutNoticeIn>() {
         private static final long serialVersionUID = 1L;
         public Predicate toPredicate(Root<InoutNoticeIn> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
            List<Predicate> predicates = new ArrayList<Predicate>(); //所有的断言
            Predicate predicate1 = cb.equal(root.get("companyId"), ContextUtil.getCompanyId());
            predicates.add(predicate1);
            Predicate predicate2 = cb.equal(root.get("deptId"), ContextUtil.subDeptId(null));
            predicates.add(predicate2);
            Predicate predicate3 = cb.equal(root.get("completeStatus"), "NONE");
            predicates.add(predicate3);
            String key = (String) finalParam.get("customerId");
            if (StringUtils.isNotEmpty(key)) {
               Predicate predicate4 = cb.equal(root.get("customerId"), key);
               predicates.add(predicate4);
            }
            key = (String) finalParam.get("foodVariety");
            if (StringUtils.isNotEmpty(key)) {
               Predicate predicate5 = cb.equal(root.get("foodVariety"),  key);
               predicates.add(predicate5);
            }
            key = (String) finalParam.get("depotId");
            if (StringUtils.isNotEmpty(key)) {
               Predicate predicate6 = cb.equal(root.get("depotId"), key);
               predicates.add(predicate6);
            }
            key = (String) finalParam.get("key");
            if (StringUtils.isNotEmpty(key)) {
               Predicate predicate7 = cb.like(root.get("name"), "%" + key + "%");
               predicates.add(predicate7);
            }
            return cb.and(predicates.toArray(new Predicate[0]));
         }
      };
      org.springframework.data.domain.Page<InoutNoticeIn> japPage = inoutNoticeService.queryAllNoticeIn(specification, pageable);
      return japPage.getContent();
   }
   /**
    * 重新核算入库通知单完成量
    *
    * inoutNoticePR#updateSumNoticeIn
@@ -296,7 +118,6 @@
      //获取所有未完成状态的入库通知单
      String companyId = ContextUtil.getCompanyId();
      String deptId = ContextUtil.subDeptId(null);
      List<InoutNoticeIn> noticeInList = inoutNoticeService.getUnComNoticeIn(companyId);
@@ -304,8 +125,6 @@
         inoutNoticeService.updateSumNoticeIn(noticeInList);
         return "success";
      }
      return "fail";
   }
@@ -320,11 +139,13 @@
   public InoutNoticeOut initAddOut() {
      SysUser user = ContextUtil.getLoginUser();
      InoutNoticeOut data = new InoutNoticeOut();
      data.setId("CKTZD_" + ContextUtil.generateId());
      data.setId(ContextUtil.generateOrderId("CK"));
      data.setName("出库通知单");
      data.setCompanyId(user.getCompanyId());
      data.setDeptId(ContextUtil.subDeptId(user));
      data.setTag(Constant.YN_Y);
      data.setYear(DateFormatUtils.format(new Date(), "yyyy"));
      data.setCreateBy(ContextUtil.getLoginUserName());
      data.setCreateTime(new Date());
      return data;
   }
@@ -334,57 +155,15 @@
    * @param param
    */
   @DataProvider
   public void pageQueryOut(Page<InoutNoticeOut> page, Map<String, Object> param) {
   public void pageQueryOut(Page<InoutNoticeOut> page, NoticeParam param) {
      if (null == param) {
         param = new HashMap<>();
      }
      Map<String, Object> finalParam = param;
      com.baomidou.mybatisplus.extension.plugins.pagination.Page<InoutNoticeOut> corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPageNo(), page.getPageSize());
      //多参数分页查询
      Pageable pageable = PageRequest.of(0, 10000, Sort.Direction.ASC, InoutNoticeOut.SORT_PROP);
      Specification<InoutNoticeOut> specification = new Specification<InoutNoticeOut>() {
         private static final long serialVersionUID = 1L;
      inoutNoticeService.pageQueryOut(corePage, param);
         public Predicate toPredicate(Root<InoutNoticeOut> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
            List<Predicate> predicates = new ArrayList<Predicate>(); //所有的断言
            Predicate predicate1 = cb.equal(root.get("companyId"), ContextUtil.getCompanyId());
            predicates.add(predicate1);
            Predicate predicate2 = cb.equal(root.get("deptId"), ContextUtil.subDeptId(null));
            predicates.add(predicate2);
            String key = String.valueOf(finalParam.get("year"));
            if (StringUtils.isNotEmpty(key)) {
               Predicate predicate3 = cb.equal(root.get("year"), key);
               predicates.add(predicate3);
            }
            key = (String) finalParam.get("id");
            if (StringUtils.isNotEmpty(key)) {
               Predicate predicate4 = cb.equal(root.get("id"),  key);
               predicates.add(predicate4);
            }
            key = (String) finalParam.get("customerId");
            if (StringUtils.isNotEmpty(key)) {
               Predicate predicate5 = cb.equal(root.get("customerId"), key);
               predicates.add(predicate5);
            }
            key = (String) finalParam.get("completeStatus");
            if (StringUtils.isNotEmpty(key)) {
               Predicate predicate6 = cb.equal(root.get("completeStatus"), key);
               predicates.add(predicate6);
            }
            key = (String) finalParam.get("foodVariety");
            if (StringUtils.isNotEmpty(key)) {
               Predicate predicate7 = cb.equal(root.get("foodVariety"), key);
               predicates.add(predicate7);
            }
            return cb.and(predicates.toArray(new Predicate[0]));
         }
      };
      org.springframework.data.domain.Page<InoutNoticeOut> japPage = inoutNoticeService.queryAllNoticeOut(specification, pageable);
      page.setEntityCount((int) japPage.getTotalElements());
      page.setEntities(japPage.getContent());
      // 重新封装
      page.setEntities(corePage.getRecords());
      page.setEntityCount(Integer.parseInt(String.valueOf(corePage.getTotal())));
   }
   /**
@@ -392,7 +171,7 @@
    * @param data
    * @return
    */
   @Expose
   @DataResolver
   public String saveOut(InoutNoticeOut data) {
      InoutNoticeOut inoutNoticeOut = new InoutNoticeOut();
      BeanUtils.copyProperties(data, inoutNoticeOut);
@@ -409,59 +188,6 @@
      return inoutNoticeService.delDataOut(inoutNoticeOut);
   }
   /**
    * 根据不同条件查询
    * @param param
    * @return
    */
   public List<InoutNoticeOut> queryNoticeOut(Map<String, Object> param) {
      if (null == param) {
         param = new HashMap<>();
      }
      Map<String, Object> finalParam = param;
      //多参数分页查询
      Pageable pageable = PageRequest.of(0, 10000, Sort.Direction.ASC, InoutNoticeOut.SORT_PROP);
      Specification<InoutNoticeOut> specification = new Specification<InoutNoticeOut>() {
         private static final long serialVersionUID = 1L;
         public Predicate toPredicate(Root<InoutNoticeOut> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
            List<Predicate> predicates = new ArrayList<Predicate>(); //所有的断言
            Predicate predicate1 = cb.equal(root.get("companyId"), ContextUtil.getCompanyId());
            predicates.add(predicate1);
            Predicate predicate2 = cb.equal(root.get("deptId"), ContextUtil.subDeptId(null));
            predicates.add(predicate2);
            Predicate predicate3 = cb.equal(root.get("completeStatus"), "NONE");
            predicates.add(predicate3);
            String key = (String) finalParam.get("customerId");
            if (StringUtils.isNotEmpty(key)) {
               Predicate predicate4 = cb.equal(root.get("customerId"), key);
               predicates.add(predicate4);
            }
            key = (String) finalParam.get("foodVariety");
            if (StringUtils.isNotEmpty(key)) {
               Predicate predicate5 = cb.equal(root.get("foodVariety"),  key);
               predicates.add(predicate5);
            }
            key = (String) finalParam.get("depotId");
            if (StringUtils.isNotEmpty(key)) {
               Predicate predicate6 = cb.equal(root.get("depotId"), key);
               predicates.add(predicate6);
            }
            key = (String) finalParam.get("key");
            if (StringUtils.isNotEmpty(key)) {
               Predicate predicate7 = cb.like(root.get("name"), "%" + key + "%");
               predicates.add(predicate7);
            }
            return cb.and(predicates.toArray(new Predicate[0]));
         }
      };
      org.springframework.data.domain.Page<InoutNoticeOut> japPage = inoutNoticeService.queryAllNoticeOut(specification, pageable);
      return japPage.getContent();
   }
   /**
    * 重新核算出库通知单完成量
@@ -475,7 +201,6 @@
      //获取所有未完成状态的入库通知单
      String companyId = ContextUtil.getCompanyId();
      String deptId = ContextUtil.subDeptId(null);
      List<InoutNoticeOut> noticeOutList = inoutNoticeService.getUnComNoticeOut(companyId);
@@ -486,4 +211,55 @@
      return "fail";
   }
   /**
    * inoutNoticePR#queryNoticeByKey  根据参数查询出入库通知单,用于手动补单时,选择通知单
    *
    * @param
    * @return
    */
   @DataProvider
   public List<NoticeDto> queryNoticeByKey(Map<String, Object> param) {
      if (param == null) {
         return null;
      }
      String type = (String)param.get("type");
      if (StringUtils.isEmpty(type)) {
         return null;
      }
      List<NoticeDto> list = new ArrayList<>();
      NoticeDto dto;
      NoticeParam noticeParam = new NoticeParam();
      noticeParam.setCompanyId(ContextUtil.getCompanyId());
      noticeParam.setDeptId(ContextUtil.subDeptId(null));
      noticeParam.setCompleteStatus(Constant.COMPLETE_STATUS_NONE);
      String key = (String)param.get("key");
      if (StringUtils.isNotEmpty(key)) {
         noticeParam.setKey(key);
      }
      if (Constant.TYPE_IN.equals(type)) {
         List<InoutNoticeIn> listIn = inoutNoticeService.getNoticeIn(noticeParam);
         if (null != listIn && listIn.size() > 0) {
            for (InoutNoticeIn inoutNoticeIn : listIn) {
               dto = new NoticeDto();
               BeanUtils.copyProperties(inoutNoticeIn, dto);
               list.add(dto);
            }
         }
      }
      if (Constant.TYPE_OUT.equals(type)) {
         List<InoutNoticeOut> listOut = inoutNoticeService.getNoticeOut(noticeParam);
         if (null != listOut && listOut.size() > 0) {
            for (InoutNoticeOut inoutNoticeOut : listOut) {
               dto = new NoticeDto();
               BeanUtils.copyProperties(inoutNoticeOut, dto);
               list.add(dto);
            }
         }
      }
      return list;
   }
}