Browse Source

[feat]

基础资料 员工退料
新增发起提交审批流程、审批通过后更新详情并生成品质单、更新审批拒绝、根据退料单详情生成品质单详情service方法;
修改查询员工退料列表service方法,添加分页和审核相关字段;
修改获取关联领料单信息controller方法,添加员工领料类型处理;
新增加载审批弹窗、自动绑定页面字段、完成审批任务controller方法;
dev
王晓迪 2 months ago
parent
commit
e979e7a03c
  1. 133
      ruoyi-admin/src/main/java/com/ruoyi/system/controller/BaseReturnOrderController.java
  2. 5
      ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BaseReturnOrderMapper.java
  3. 18
      ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseReturnOrderService.java
  4. 349
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseReturnOrderServiceImpl.java
  5. 2
      ruoyi-admin/src/main/resources/mapper/system/BaseReturnOrderMapper.xml

133
ruoyi-admin/src/main/java/com/ruoyi/system/controller/BaseReturnOrderController.java

@ -1,11 +1,21 @@
package com.ruoyi.system.controller;
import java.util.HashMap;
import java.util.List;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.process.general.service.IProcessService;
import com.ruoyi.system.domain.BaseEmpRequisiteOrder;
import com.ruoyi.system.domain.BaseReturnOrderDetail;
import com.ruoyi.system.domain.OutsourceRequisition;
import com.ruoyi.system.service.IBaseReturnOrderDetailService;
import com.ruoyi.system.service.IOutsourceRequisitionService;
import com.ruoyi.system.domain.Vo.BaseReturnOrderVO;
import com.ruoyi.system.domain.Vo.MakeReturnOrderVO;
import com.ruoyi.system.service.*;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@ -14,12 +24,14 @@ import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.domain.BaseReturnOrder;
import com.ruoyi.system.service.IBaseReturnOrderService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
/**
* 员工退料Controller
*
@ -41,6 +53,21 @@ public class BaseReturnOrderController extends BaseController
@Autowired
private IOutsourceRequisitionService requisitionService;
@Autowired
private IBaseEmpRequisiteOrderService empRequisiteOrderService;
@Autowired
private TaskService taskService;
@Autowired
private RuntimeService runtimeService;
@Autowired
private IProcessService processService;
@Autowired
private ISysUserService sysUserService;
@RequiresPermissions("system:baseReturnOrder:view")
@GetMapping()
public String baseReturnOrder()
@ -54,10 +81,10 @@ public class BaseReturnOrderController extends BaseController
@RequiresPermissions("system:baseReturnOrder:list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(BaseReturnOrder baseReturnOrder)
public TableDataInfo list(BaseReturnOrderVO baseReturnOrderVO)
{
startPage();
List<BaseReturnOrder> list = baseReturnOrderService.selectBaseReturnOrderList(baseReturnOrder);
List<BaseReturnOrderVO> list = baseReturnOrderService.selectBaseReturnOrderList(baseReturnOrderVO);
return getDataTable(list);
}
@ -68,10 +95,10 @@ public class BaseReturnOrderController extends BaseController
@Log(title = "员工退料", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ResponseBody
public AjaxResult export(BaseReturnOrder baseReturnOrder)
public AjaxResult export(BaseReturnOrderVO baseReturnOrder)
{
List<BaseReturnOrder> list = baseReturnOrderService.selectBaseReturnOrderList(baseReturnOrder);
ExcelUtil<BaseReturnOrder> util = new ExcelUtil<BaseReturnOrder>(BaseReturnOrder.class);
List<BaseReturnOrderVO> list = baseReturnOrderService.selectBaseReturnOrderList(baseReturnOrder);
ExcelUtil<BaseReturnOrderVO> util = new ExcelUtil<BaseReturnOrderVO>(BaseReturnOrderVO.class);
return util.exportExcel(list, "员工退料数据");
}
@ -93,7 +120,9 @@ public class BaseReturnOrderController extends BaseController
@ResponseBody
public AjaxResult addSave(@RequestBody BaseReturnOrder baseReturnOrder)
{
return toAjax(baseReturnOrderService.insertBaseReturnOrder(baseReturnOrder));
baseReturnOrder.setAuditStatus("0");
baseReturnOrderService.submitApply(baseReturnOrder);
return AjaxResult.success();
}
/**
@ -155,13 +184,19 @@ public class BaseReturnOrderController extends BaseController
}
/**
* 修改员工退料
* 获取关联领料单信息
*/
@GetMapping("/getMaterialList")
public String getMaterialList(@RequestParam("pickNo") String pickNo, ModelMap mmap)
{
OutsourceRequisition requisition = requisitionService.selectOutsourceRequisitionByNo(pickNo);
String pickUser = requisition.getApplyUser();
String pickUser = "";
if(pickNo.startsWith("WWLL")){
OutsourceRequisition requisition = requisitionService.selectOutsourceRequisitionByNo(pickNo);
pickUser = requisition.getApplyUser();
}else if(pickNo.startsWith("YGLL")){
BaseEmpRequisiteOrder empRequisiteOrder = empRequisiteOrderService.selectBaseEmpRequisiteOrderByCode(pickNo);
pickUser = empRequisiteOrder.getApplyUser();
}
mmap.put("pickUser", pickUser);
mmap.put("pickNo", pickNo);
return prefix + "/materialSelect";
@ -189,4 +224,78 @@ public class BaseReturnOrderController extends BaseController
return prefix + "/detail";
}
/**
* 加载审批弹窗
* @param taskId
* @param mmap
* @return
*/
@GetMapping("/showVerifyDialog/{taskId}")
public String showVerifyDialog(@PathVariable("taskId") String taskId, ModelMap mmap) {
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String processInstanceId = task.getProcessInstanceId();
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
BaseReturnOrderVO baseReturnOrderVO = baseReturnOrderService.selectBaseReturnOrderById(new Long(processInstance.getBusinessKey()));
SysUser user = sysUserService.selectUserByLoginName(baseReturnOrderVO.getApplyUser());
baseReturnOrderVO.setApplyUserName(user.getUserName());
mmap.put("formData", baseReturnOrderVO);
mmap.put("taskId", taskId);
String verifyName = task.getTaskDefinitionKey().substring(0, 1).toUpperCase() + task.getTaskDefinitionKey().substring(1);
return prefix + "/task" + verifyName;
}
/**
* 自动绑定页面字段
*/
@ModelAttribute("preloadObj")
public BaseReturnOrderVO getObj(@RequestParam(value = "id", required = false) Long id, HttpSession session) {
if (id != null) {
return baseReturnOrderService.selectBaseReturnOrderById(id);
}
return new BaseReturnOrderVO();
}
/**
* 完成任务
*
* @return
*/
@RequestMapping(value = "/complete/{taskId}", method = {RequestMethod.POST, RequestMethod.GET})
@ResponseBody
public AjaxResult complete(@PathVariable("taskId") String taskId, @RequestParam(value = "saveEntity", required = false) String saveEntity,
@ModelAttribute("preloadObj") BaseReturnOrderVO baseReturnOrderVO, HttpServletRequest request) {
boolean saveEntityBoolean = BooleanUtils.toBoolean(saveEntity);
//获取实例id
String instanceId = baseReturnOrderVO.getInstanceId();
//获取实例类型
String instanceType = baseReturnOrderVO.getInstanceType();
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String verifyName = task.getTaskDefinitionKey().substring(0, 1).toUpperCase() + task.getTaskDefinitionKey().substring(1);
boolean approvedFlag = processService.complete(taskId, instanceId, baseReturnOrderVO.getApplyTitle(), baseReturnOrderVO.getBaseReturnOrderCode(),
"baseReturnOrder", new HashMap<String, Object>(), request);
if(!approvedFlag){
// 审核状态-审核拒绝
baseReturnOrderVO.setAuditStatus("2");
}
// 如果任务已结束更新业务表状态
boolean processIsFinish = processService.judgeProcessIsFinish(instanceId);
if (processIsFinish) {
if(!approvedFlag){
baseReturnOrderVO.setAuditStatus("2");
baseReturnOrderService.updateUnApproved(baseReturnOrderVO);
}else{
// 审核通过
baseReturnOrderVO.setAuditStatus("1");
// 提交
if("submit".equals(instanceType)){
// 使用状态-是
baseReturnOrderVO.setUseStatus("1");
}
baseReturnOrderService.updateApprovedInfo(baseReturnOrderVO);
}
}
baseReturnOrderService.updateBaseReturnOrder(baseReturnOrderVO);
// 驳回申请后继续申请,可能修改表单
return success("任务已完成");
}
}

5
ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BaseReturnOrderMapper.java

@ -2,6 +2,7 @@ package com.ruoyi.system.mapper;
import java.util.List;
import com.ruoyi.system.domain.BaseReturnOrder;
import com.ruoyi.system.domain.Vo.BaseReturnOrderVO;
/**
* 员工退料Mapper接口
@ -17,7 +18,7 @@ public interface BaseReturnOrderMapper
* @param id 员工退料ID
* @return 员工退料
*/
public BaseReturnOrder selectBaseReturnOrderById(Long id);
public BaseReturnOrderVO selectBaseReturnOrderById(Long id);
/**
* 查询员工退料列表
@ -25,7 +26,7 @@ public interface BaseReturnOrderMapper
* @param baseReturnOrder 员工退料
* @return 员工退料集合
*/
public List<BaseReturnOrder> selectBaseReturnOrderList(BaseReturnOrder baseReturnOrder);
public List<BaseReturnOrderVO> selectBaseReturnOrderList(BaseReturnOrderVO baseReturnOrder);
/**
* 新增员工退料

18
ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseReturnOrderService.java

@ -2,6 +2,9 @@ package com.ruoyi.system.service;
import java.util.List;
import com.ruoyi.system.domain.BaseReturnOrder;
import com.ruoyi.system.domain.MakeReturnOrder;
import com.ruoyi.system.domain.Vo.BaseReturnOrderVO;
import org.activiti.engine.runtime.ProcessInstance;
/**
* 员工退料Service接口
@ -17,15 +20,15 @@ public interface IBaseReturnOrderService
* @param id 员工退料ID
* @return 员工退料
*/
public BaseReturnOrder selectBaseReturnOrderById(Long id);
public BaseReturnOrderVO selectBaseReturnOrderById(Long id);
/**
* 查询员工退料列表
*
* @param baseReturnOrder 员工退料
* @param baseReturnOrderVO 员工退料
* @return 员工退料集合
*/
public List<BaseReturnOrder> selectBaseReturnOrderList(BaseReturnOrder baseReturnOrder);
public List<BaseReturnOrderVO> selectBaseReturnOrderList(BaseReturnOrderVO baseReturnOrderVO);
/**
* 新增员工退料
@ -72,4 +75,13 @@ public interface IBaseReturnOrderService
* @return
*/
int restoreBaseReturnOrderById(Long id);
/*发起提交审批流程*/
ProcessInstance submitApply(BaseReturnOrder baseReturnOrder);
/*审批通过后更新详情并生成品质单*/
int updateApprovedInfo(BaseReturnOrderVO baseReturnOrderVO);
/*更新审批拒绝*/
int updateUnApproved(BaseReturnOrderVO baseReturnOrderVO);
}

349
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseReturnOrderServiceImpl.java

@ -1,21 +1,41 @@
package com.ruoyi.system.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.github.pagehelper.Page;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.PageDomain;
import com.ruoyi.common.core.page.TableSupport;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.BusinessException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.process.general.service.IProcessService;
import com.ruoyi.process.todoitem.mapper.BizTodoItemMapper;
import com.ruoyi.quality.domain.QualityOrder;
import com.ruoyi.quality.domain.QualityOrderDetail;
import com.ruoyi.quality.mapper.QualityOrderDetailMapper;
import com.ruoyi.quality.mapper.QualityOrderMapper;
import com.ruoyi.system.domain.BaseReturnOrderDetail;
import com.ruoyi.system.domain.MakeReturnOrderDetail;
import com.ruoyi.system.domain.Vo.BaseReturnOrderVO;
import com.ruoyi.system.mapper.BaseReturnOrderDetailMapper;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.service.ISysRoleService;
import org.activiti.engine.TaskService;
import org.activiti.engine.impl.persistence.entity.TaskEntityImpl;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.BaseReturnOrderMapper;
import com.ruoyi.system.domain.BaseReturnOrder;
import com.ruoyi.system.service.IBaseReturnOrderService;
import com.ruoyi.common.core.text.Convert;
import org.springframework.transaction.annotation.Transactional;
/**
* 员工退料Service业务层处理
@ -35,6 +55,27 @@ public class BaseReturnOrderServiceImpl implements IBaseReturnOrderService
@Autowired
private BaseReturnOrderDetailMapper returnOrderDetailMapper;
@Autowired
private SysUserMapper userMapper;
@Autowired
private IProcessService processService;
@Autowired
private ISysRoleService roleService;
@Autowired
private TaskService taskService;
@Autowired
private BizTodoItemMapper todoItemMapper;
@Autowired
private QualityOrderMapper qualityOrderMapper;
@Autowired
private QualityOrderDetailMapper orderDetailMapper;
/**
* 查询员工退料
*
@ -42,7 +83,7 @@ public class BaseReturnOrderServiceImpl implements IBaseReturnOrderService
* @return 员工退料
*/
@Override
public BaseReturnOrder selectBaseReturnOrderById(Long id)
public BaseReturnOrderVO selectBaseReturnOrderById(Long id)
{
return baseReturnOrderMapper.selectBaseReturnOrderById(id);
}
@ -50,13 +91,70 @@ public class BaseReturnOrderServiceImpl implements IBaseReturnOrderService
/**
* 查询员工退料列表
*
* @param baseReturnOrder 员工退料
* @param baseReturnOrderVO 员工退料
* @return 员工退料
*/
@Override
public List<BaseReturnOrder> selectBaseReturnOrderList(BaseReturnOrder baseReturnOrder)
public List<BaseReturnOrderVO> selectBaseReturnOrderList(BaseReturnOrderVO baseReturnOrderVO)
{
return baseReturnOrderMapper.selectBaseReturnOrderList(baseReturnOrder);
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
// PageHelper 仅对第一个 List 分页
Page<BaseReturnOrderVO> list = (Page<BaseReturnOrderVO>) baseReturnOrderMapper.selectBaseReturnOrderList(baseReturnOrderVO);
Page<BaseReturnOrderVO> returnList = new Page<>();
for (BaseReturnOrderVO returnVo: list) {
SysUser sysUser = userMapper.selectUserByLoginName(returnVo.getCreateBy());
if (sysUser != null) {
returnVo.setCreateUserName(sysUser.getUserName());
}
SysUser sysUser2 = userMapper.selectUserByLoginName(returnVo.getApplyUser());
if (sysUser2 != null) {
returnVo.setApplyUserName(sysUser2.getUserName());
}
String instanceId = returnVo.getInstanceId();
// 当前环节
if (StringUtils.isNotBlank(instanceId)) {
List<Task> taskList = taskService.createTaskQuery()
.processInstanceId(instanceId)
// .singleResult();
.list(); // 例如请假会签,会同时拥有多个任务
if (!org.springframework.util.CollectionUtils.isEmpty(taskList)) {
TaskEntityImpl task = (TaskEntityImpl) taskList.get(0);
String taskId = task.getId();
returnVo.setTaskId(taskId);
// 设置待办用户
List<String> todoUserList = todoItemMapper.selectUndealTodoUserList(taskId);
if(!org.springframework.util.CollectionUtils.isEmpty(taskList)){
returnVo.setTodoUserId(String.join(",",todoUserList));
}
if (task.getSuspensionState() == 2) {
returnVo.setTaskName("已挂起");
returnVo.setSuspendState("2");
} else {
returnVo.setTaskName(task.getName());
returnVo.setSuspendState("1");
}
} else {
// 已办结或者已撤销
returnVo.setTaskName("已结束");
}
} else {
returnVo.setTaskName("未启动");
}
returnVo.setTaskStatus(returnVo.getTaskName());
if(returnVo.getAuditStatus().equals("1")){
returnVo.setTaskStatus("审核通过");
}else if(returnVo.getAuditStatus().equals("2")){
returnVo.setTaskStatus("审核拒绝");
}
returnList.add(returnVo);
}
returnList.setTotal(org.springframework.util.CollectionUtils.isEmpty(list) ? 0 : list.getTotal());
returnList.setPageNum(pageNum);
returnList.setPageSize(pageSize);
return returnList;
}
/**
@ -171,4 +269,245 @@ public class BaseReturnOrderServiceImpl implements IBaseReturnOrderService
{
return baseReturnOrderMapper.restoreBaseReturnOrderById(id);
}
/*发起提交审批流程*/
@Override
public ProcessInstance submitApply(BaseReturnOrder baseReturnOrder) {
SysUser user = ShiroUtils.getSysUser();
baseReturnOrder.setApplyUser(user.getLoginName());
baseReturnOrder.setApplyTime(DateUtils.getNowDate());
// 保存
insertBaseReturnOrder(baseReturnOrder);
// 启动流程
String applyTitle = user.getUserName()+"发起了员工退料单提交审批-"+DateUtils.dateTimeNow();
String instanceType = "submit";
ProcessInstance processInstance = startProcessInstance(applyTitle,instanceType,baseReturnOrder, user);
String processInstanceId = processInstance.getProcessInstanceId();
// 提交实例id
baseReturnOrder.setSubmitInstanceId(processInstanceId);
// 存在提交完就流程结束的情况
boolean processIsFinish = processService.judgeProcessIsFinish(processInstanceId);
if(processIsFinish){
// 审核状态-审核通过
baseReturnOrder.setAuditStatus("1");
BaseReturnOrderVO baseReturnOrderVO = baseReturnOrderMapper.selectBaseReturnOrderById(baseReturnOrder.getId());
updateApprovedInfo(baseReturnOrderVO);
}
baseReturnOrderMapper.updateBaseReturnOrder(baseReturnOrder);
return processInstance;
}
/**
* 创建审核流程
*/
private ProcessInstance startProcessInstance(String applyTitle, String instanceType, BaseReturnOrder baseReturnOrder, SysUser user) {
Long pickId = baseReturnOrder.getId();
String businessKey = pickId.toString(); // 实体类 ID,作为流程的业务 key
String key = "baseReturnOrder";
Map<String,Object> variables = new HashMap<>();
// 构造authority传参
buildAuthority(user, variables);
baseReturnOrder.setApplyTitle(applyTitle);
// 启动流程
ProcessInstance processInstance = processService.submitApply(user.getLoginName(), businessKey, applyTitle, baseReturnOrder.getBaseReturnOrderCode(), key, variables);
String processInstanceId = processInstance.getId();
baseReturnOrder.setInstanceId(processInstanceId); // 建立双向关系
baseReturnOrder.setInstanceType(instanceType);
return processInstance;
}
/**
* 发起人节点判断
* */
private void buildAuthority(SysUser user, Map<String, Object> variables) {
Set<String> roleKeys = roleService.selectRoleKeys(user.getUserId());
variables.put("authority",1);
variables.put("zgExist",false);
variables.put("jlExist",true);
variables.put("yfzjExist",false);
variables.put("fzjlExist",false);
//判断领料人的角色,进入相应的逻辑,设置节点审批人变量
if(roleKeys.contains("ywyRole")){
// 业务员/业务助理--->业务部经理
variables.put("bmjlRole","ywjlRole");
}else if(roleKeys.contains("jggcsRole")){
//结构工程师--->工程经理--->研发总监
variables.put("bmjlRole","gcjlRole");
variables.put("yfzjExist",true);
}else if(roleKeys.contains("dqgcsRole")){
//电气工程师--->电气主管--->研发总监
variables.put("bmzgRole","dqzgRole");
variables.put("jlExist",false);
variables.put("yfzjExist",true);
}else if(roleKeys.contains("rjgcsRole")||roleKeys.contains("csgcsRole")||roleKeys.contains("gcwyRole")
||roleKeys.contains("dqzgRole")||roleKeys.contains("gcjlRole")){
//软件工程师/测试工程师/工程文员--->研发总监
//电气主管 ---> 研发总监
//工程经理 ---> 研发总监
variables.put("jlExist",false);
variables.put("yfzjExist",true);
} else if(roleKeys.contains("cgyRole")){
// 采购员--->副总经理
variables.put("jlExist",false);
variables.put("fzjlExist",true);
}else if (roleKeys.contains("scyRole")){
// 生产员--->生产经理
variables.put("bmjlRole","scjlRole");
}else if(roleKeys.contains("pzwyRole")||roleKeys.contains("iqczyRole")||roleKeys.contains("ipqczyRole")||roleKeys.contains("fqczyRole")){
// IQC/IPQC/FQC/品质文员--->品质经理
variables.put("bmjlRole","pzjlRole");
}else if (roleKeys.contains("shgcsRole")){
// 售后工程师--->售后主管--->售后经理
variables.put("bmjlRole","shjlRole");
variables.put("bmzgRole","shzgRole");
variables.put("zgExist",true);
}else if (roleKeys.contains("shzgRole")){
// 售后主管--->售后经理
variables.put("bmjlRole","shjlRole");
} else if(roleKeys.contains("cgyyRole")){
// 仓库文员--->仓库主管
variables.put("bmzgRole","ckzgRole");
variables.put("zgExist",true);
variables.put("jlExist",false);
}else if(roleKeys.contains("hrzyRole")){
// 人事助理/专员--->人事经理
variables.put("bmjlRole","hrjlRole");
}else if (roleKeys.contains("cwzyRole")){
// 会计--->财务主管
variables.put("bmzgRole","cwzgRole");
variables.put("zgExist",true);
variables.put("jlExist",false);
}else if (roleKeys.contains("wwyRole")){
// 委外员--->委外主管--->委外经理
variables.put("bmzgRole","wwzgRole");
variables.put("bmjlRole","wwjlRole");
variables.put("zgExist",true);
}else if (roleKeys.contains("wwzgRole")){
// 委外主管--->委外经理
variables.put("bmjlRole","wwjlRole");
}
if(roleKeys.contains("admin")||roleKeys.contains("ywjlRole")||roleKeys.contains("yfzjRole")
||roleKeys.contains("fzjlRole")||roleKeys.contains("scjlRole")||roleKeys.contains("pzjlRole")
||roleKeys.contains("shjlRole")||roleKeys.contains("ckzgRole")||roleKeys.contains("hrjlRole")
||roleKeys.contains("cwzgRole")||roleKeys.contains("zjlRole")||roleKeys.contains("zozjRole")
||roleKeys.contains("wwjlRole")){
// 角色包含业务经理、研发总监、生产经理、品质经理、售后经理、仓库主管、人事经理、财务主管、副总经理、总经理、总经总助、admin
variables.put("authority",2);
}
}
/*审批通过后更新详情并生成品质单*/
@Transactional(rollbackFor = Exception.class)
@Override
public int updateApprovedInfo(BaseReturnOrderVO baseReturnOrderVO){
String returnOrderCode = baseReturnOrderVO.getBaseReturnOrderCode();
String pickNo = baseReturnOrderVO.getPickNo();
String loginName = ShiroUtils.getLoginName();
BaseReturnOrderDetail temp = new BaseReturnOrderDetail();
temp.setBaseReturnOrderCode(returnOrderCode);
List<BaseReturnOrderDetail> returnOrderDetails = returnOrderDetailMapper.selectBaseReturnOrderDetailList(temp);
if(StringUtils.isEmpty(returnOrderDetails)){
throw new BusinessException("退料单详情为空,更新失败");
}
int result = 0;
for (BaseReturnOrderDetail detail: returnOrderDetails) {
detail.setAuditStatus("1");//审核通过
detail.setUpdateBy(loginName);
detail.setUpdateTime(DateUtils.getNowDate());
int updateResult = returnOrderDetailMapper.updateBaseReturnOrderDetail(detail);
if(updateResult <= 0){
throw new BusinessException("退料单详情更新失败");
}
String qualityOrderCode = redisCache.generateBillNo("PZ");
int orderDetailResult = generateQualityOrderDetail(qualityOrderCode,detail);
if(orderDetailResult<=0){
throw new BusinessException("新增品质单详情失败!");
}
QualityOrder qualityOrder = createQualityOrder(qualityOrderCode, detail.getBaseReturnOrderCode(), loginName);
if(pickNo.startsWith("WWLL")){
qualityOrder.setQualityStorageStatus("9");//入库类型:委外退料
qualityOrder.setQualityOrderType("7");//委外退料单
}else if(pickNo.startsWith("YGLL")){
qualityOrder.setQualityStorageStatus("6");//入库类型:员工退料
qualityOrder.setQualityOrderType("4");//员工退料单
}
qualityOrder.setMaterialNo(detail.getMaterialNo());
qualityOrder.setMaterialName(detail.getMaterialName());
qualityOrder.setThisArrivedNum(detail.getReturnNum());//检验数
result += qualityOrderMapper.insertQualityOrder(qualityOrder);
}
return result;
}
private QualityOrder createQualityOrder(String code,String returnOrderCode, String loginName) {
QualityOrder qualityOrder = new QualityOrder();
qualityOrder.setQualityOrderCode(code);
qualityOrder.setRelatedOrderCode(returnOrderCode);
qualityOrder.setQualityStatus("0");
qualityOrder.setDeliveryInspectionTime(DateUtils.getNowDate());
qualityOrder.setQualityQualifiedNum(0);
qualityOrder.setQualityUnqualifiedNum(0);
qualityOrder.setPendingReviewNum(0);
qualityOrder.setCreateTime(DateUtils.getNowDate());
qualityOrder.setCreateBy(loginName);
return qualityOrder;
}
//根据退料单详情生成品质单详情
private int generateQualityOrderDetail(String qualityOrderCode, BaseReturnOrderDetail returnOrderDetail){
String pickNo = returnOrderDetail.getPickNo();
QualityOrderDetail qualityOrderDetail = new QualityOrderDetail();
qualityOrderDetail.setQualityOrderCode(qualityOrderCode);
qualityOrderDetail.setMaterialNo(returnOrderDetail.getMaterialNo());
qualityOrderDetail.setMaterialName(returnOrderDetail.getMaterialName());
qualityOrderDetail.setMaterialBrand(returnOrderDetail.getBrand());
qualityOrderDetail.setMaterialUnit(returnOrderDetail.getUnit());
qualityOrderDetail.setMaterialPhotourl(returnOrderDetail.getPhotoUrl());
qualityOrderDetail.setMaterialDescribe(returnOrderDetail.getDescribe());
qualityOrderDetail.setMaterialModel(returnOrderDetail.getMaterialModel());
qualityOrderDetail.setMaterialProcessMethod(returnOrderDetail.getProcessMethod());
qualityOrderDetail.setCheckNum(returnOrderDetail.getReturnNum());
qualityOrderDetail.setQualityStatus("0");
if(pickNo.startsWith("WWLL")){
qualityOrderDetail.setQualityStorageStatus("9");//入库类型:委外退料
qualityOrderDetail.setQualityOrderType("7");//委外退料单
}else if(pickNo.startsWith("YGLL")){
qualityOrderDetail.setQualityStorageStatus("6");//入库类型:员工退料
qualityOrderDetail.setQualityOrderType("4");//员工退料单
}
qualityOrderDetail.setRelatedOrderCode(returnOrderDetail.getBaseReturnOrderCode());
qualityOrderDetail.setDeliveryInspectionTime(DateUtils.getNowDate());
qualityOrderDetail.setCreateBy(ShiroUtils.getLoginName());
qualityOrderDetail.setCreateTime(DateUtils.getNowDate());
return orderDetailMapper.insertQualityOrderDetail(qualityOrderDetail);
}
/*更新审批拒绝*/
@Override
public int updateUnApproved(BaseReturnOrderVO baseReturnOrderVO){
String returnOrderCode = baseReturnOrderVO.getBaseReturnOrderCode();
String loginName = ShiroUtils.getLoginName();
BaseReturnOrderDetail temp = new BaseReturnOrderDetail();
temp.setBaseReturnOrderCode(returnOrderCode);
List<BaseReturnOrderDetail> returnOrderDetails = returnOrderDetailMapper.selectBaseReturnOrderDetailList(temp);
if(StringUtils.isEmpty(returnOrderDetails)){
throw new BusinessException("退料单详情为空,更新失败");
}
for (BaseReturnOrderDetail detail: returnOrderDetails) {
detail.setAuditStatus("2");//审核拒绝
detail.setUpdateBy(loginName);
detail.setUpdateTime(DateUtils.getNowDate());
int updateResult = returnOrderDetailMapper.updateBaseReturnOrderDetail(detail);
if(updateResult <= 0){
throw new BusinessException("退料单详情更新失败");
}
}
baseReturnOrderVO.setAuditStatus("2");
baseReturnOrderVO.setUpdateBy(loginName);
baseReturnOrderVO.setUpdateTime(DateUtils.getNowDate());
return baseReturnOrderMapper.updateBaseReturnOrder(baseReturnOrderVO);
}
}

2
ruoyi-admin/src/main/resources/mapper/system/BaseReturnOrderMapper.xml

@ -4,7 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.BaseReturnOrderMapper">
<resultMap type="BaseReturnOrder" id="BaseReturnOrderResult">
<resultMap type="BaseReturnOrderVO" id="BaseReturnOrderResult">
<result property="id" column="id" />
<result property="baseReturnOrderCode" column="base_return_order_code" />
<result property="pickNo" column="pick_no" />

Loading…
Cancel
Save