package com.fzzy.igds; 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.utils.ContextUtil; 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.stereotype.Component; import javax.annotation.Resource; import java.util.*; /** * @Description 通知单管理 * @Author CZT * @Date 2025/11/29 16:42 */ @Component public class InoutNoticePR { @Resource private InoutNoticeService inoutNoticeService; /** * inoutNoticePR#getYearQuery 默认年份 * * @param * @return */ @DataProvider public Map getYearQuery(Map param) { Map result = new HashMap(); //获取参数中分库编码 String deptId = (String)param.get("deptId"); result.put("year", DateFormatUtils.format(new Date(), "yyyy")); result.put("deptId", deptId); return result; } /*==================== 入库通知单相关业务 ====================*/ /** * inoutNoticePR#initAddIn 入库通知单新增初始化 * * @return */ @Expose public InoutNoticeIn initAddIn() { SysUser user = ContextUtil.getLoginUser(); InoutNoticeIn data = new InoutNoticeIn(); data.setId(ContextUtil.generateOrderId("RK")); data.setName("入库通知单"); data.setCompanyId(user.getCompanyId()); data.setDeptId(ContextUtil.subDeptId(user)); data.setYear(DateFormatUtils.format(new Date(), "yyyy")); data.setCreateBy(ContextUtil.getLoginUserName()); data.setCreateTime(new Date()); return data; } /** * inoutNoticePR#pageQueryIn 获取入库通知单 * * @param param * @return */ @DataProvider public void pageQueryIn(Page page, NoticeParam param) { com.baomidou.mybatisplus.extension.plugins.pagination.Page corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPageNo(), page.getPageSize()); inoutNoticeService.pageQueryIn(corePage, param); // 重新封装 page.setEntities(corePage.getRecords()); page.setEntityCount(Integer.parseInt(String.valueOf(corePage.getTotal()))); } /** * inoutNoticePR#saveIn 更新入库通知单 */ @DataResolver public String saveIn(InoutNoticeIn data) { InoutNoticeIn inoutNoticeIn = new InoutNoticeIn(); BeanUtils.copyProperties(data, inoutNoticeIn); return inoutNoticeService.saveOrUpdateIn(inoutNoticeIn); } /** * inoutNoticePR#delDataIn */ @Expose public String delDataIn(InoutNoticeIn data) { InoutNoticeIn inoutNoticeIn = new InoutNoticeIn(); BeanUtils.copyProperties(data, inoutNoticeIn); return inoutNoticeService.delDataIn(inoutNoticeIn); } /** * 重新核算入库通知单完成量 * * inoutNoticePR#updateSumNoticeIn * * @return */ @Expose public String updateSumNoticeIn() { //获取所有未完成状态的入库通知单 String companyId = ContextUtil.getCompanyId(); List noticeInList = inoutNoticeService.getUnComNoticeIn(companyId); if (noticeInList != null && noticeInList.size() > 0) { inoutNoticeService.updateSumNoticeIn(noticeInList); return "success"; } return "fail"; } /*==================== 出库通知单相关业务 ====================*/ /** * inoutNoticePR#initAddOut 出库通知单新增初始化 * * @return */ @Expose public InoutNoticeOut initAddOut() { SysUser user = ContextUtil.getLoginUser(); InoutNoticeOut data = new InoutNoticeOut(); data.setId(ContextUtil.generateOrderId("CK")); data.setName("出库通知单"); data.setCompanyId(user.getCompanyId()); data.setDeptId(ContextUtil.subDeptId(user)); data.setYear(DateFormatUtils.format(new Date(), "yyyy")); data.setCreateBy(ContextUtil.getLoginUserName()); data.setCreateTime(new Date()); return data; } /** * inoutNoticePR#pageQueryOut 获取出库通知单 * @param page * @param param */ @DataProvider public void pageQueryOut(Page page, NoticeParam param) { com.baomidou.mybatisplus.extension.plugins.pagination.Page corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPageNo(), page.getPageSize()); inoutNoticeService.pageQueryOut(corePage, param); // 重新封装 page.setEntities(corePage.getRecords()); page.setEntityCount(Integer.parseInt(String.valueOf(corePage.getTotal()))); } /** * inoutNoticePR#saveOut 更新出库通知单 * @param data * @return */ @DataResolver public String saveOut(InoutNoticeOut data) { InoutNoticeOut inoutNoticeOut = new InoutNoticeOut(); BeanUtils.copyProperties(data, inoutNoticeOut); return inoutNoticeService.saveOrUpdateOut(inoutNoticeOut); } /** * inoutNoticePR#delDataOut */ @Expose public String delDataOut(InoutNoticeOut data) { InoutNoticeOut inoutNoticeOut = new InoutNoticeOut(); BeanUtils.copyProperties(data, inoutNoticeOut); return inoutNoticeService.delDataOut(inoutNoticeOut); } /** * 重新核算出库通知单完成量 * * inoutNoticePR#updateSumNoticeOut * * @return */ @Expose public String updateSumNoticeOut() { //获取所有未完成状态的入库通知单 String companyId = ContextUtil.getCompanyId(); List noticeOutList = inoutNoticeService.getUnComNoticeOut(companyId); if (noticeOutList != null && noticeOutList.size() > 0) { inoutNoticeService.updateSumNoticeOut(noticeOutList); return "success"; } return "fail"; } /** * inoutNoticePR#queryNoticeByKey 根据参数查询出入库通知单,用于手动补单时,选择通知单 * * @param * @return */ @DataProvider public List queryNoticeByKey(Map param) { if (param == null) { return null; } String type = (String)param.get("type"); if (StringUtils.isEmpty(type)) { return null; } List 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 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 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; } }