Browse Source

[feat] 新增请购单转请购计划方法。

请购单金额不超过3000,副总经理节点审核时可以直接通过结束流程。
dev
zhangsiqi 7 months ago
parent
commit
1e7d4cc075
  1. 5
      ruoyi-admin/src/main/java/com/ruoyi/system/controller/BaseRequisitioningOrderController.java
  2. 7
      ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BaseRequisitioningOrderChildMapper.java
  3. 3
      ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseRequisitioningOrderChildService.java
  4. 3
      ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseRequisitioningOrderService.java
  5. 5
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseRequisitioningOrderChildServiceImpl.java
  6. 97
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseRequisitioningOrderServiceImpl.java
  7. 5
      ruoyi-admin/src/main/resources/mapper/system/BaseRequisitioningOrderChildMapper.xml
  8. 2
      ruoyi-admin/src/main/resources/mapper/system/BaseRequisitioningOrderMapper.xml

5
ruoyi-admin/src/main/java/com/ruoyi/system/controller/BaseRequisitioningOrderController.java

@ -297,10 +297,9 @@ public class BaseRequisitioningOrderController extends BaseController
// 审核通过
baseRequisitioningOrderVo.setAuditStatus("1");
//查通过的审核订单
BaseRequisitioningOrderVo sysSalesOrderVo1 = baseRequisitioningOrderService.selectBaseRequisitioningOrderById(baseRequisitioningOrderVo.getRequisitioningId());
//生产订单生成
BaseRequisitioningOrder baseRequisitioningOrder = baseRequisitioningOrderService.selectBaseRequisitioningOrderById(baseRequisitioningOrderVo.getRequisitioningId());
//生产采购计划
baseRequisitioningOrder.setRequisitioningId(baseRequisitioningOrderVo.getRequisitioningId());
// 提交
if("submit".equals(instanceType)){
// 使用状态-是

7
ruoyi-admin/src/main/java/com/ruoyi/system/mapper/BaseRequisitioningOrderChildMapper.java

@ -43,6 +43,13 @@ public interface BaseRequisitioningOrderChildMapper
*/
public int updateBaseRequisitioningOrderChild(BaseRequisitioningOrderChild baseRequisitioningOrderChild);
/**
* 根据请购单编号查询请购单物料
* @param requisitioningCode
* @return
*/
public List<BaseRequisitioningOrderChild> selectBaseRequisitioningOrderChildByCode(String requisitioningCode);
/**
* 删除请购单
*

3
ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseRequisitioningOrderChildService.java

@ -76,4 +76,7 @@ public interface IBaseRequisitioningOrderChildService
Integer deleteBaseRequisitioningOrderChildByRequisitioningCode(String requisitioningCode);
Integer deleteBaseRequisitioningOrderChildByRequisitioningCodes(String requisitioningCodes);
List<BaseRequisitioningOrderChild> selectBaseRequisitioningOrderChildByCode(String requisitioningCode);
}

3
ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseRequisitioningOrderService.java

@ -97,4 +97,7 @@ public interface IBaseRequisitioningOrderService
public ProcessInstance submitApply(BaseRequisitioningOrder baseRequisitioningOrder);
Object getRequisitioningOrder();
/*生成采购计划*/
Integer generatePurchasePlan(BaseRequisitioningOrder baseRequisitioningOrder);
}

5
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseRequisitioningOrderChildServiceImpl.java

@ -132,4 +132,9 @@ public class BaseRequisitioningOrderChildServiceImpl implements IBaseRequisition
public Integer deleteBaseRequisitioningOrderChildByRequisitioningCodes(String requisitioningCodes) {
return baseRequisitioningOrderChildMapper.deleteBaseRequisitioningOrderChildByRequisitioningCodes(Convert.toStrArray(requisitioningCodes));
}
@Override
public List<BaseRequisitioningOrderChild> selectBaseRequisitioningOrderChildByCode(String requisitioningCode){
return baseRequisitioningOrderChildMapper.selectBaseRequisitioningOrderChildByCode(requisitioningCode);
}
}

97
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseRequisitioningOrderServiceImpl.java

@ -2,10 +2,7 @@ package com.ruoyi.system.service.impl;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import com.github.pagehelper.Page;
import com.ruoyi.common.core.domain.entity.SysUser;
@ -16,8 +13,12 @@ import com.ruoyi.common.service.ICommonService;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.erp.domain.ErpMaterialVo;
import com.ruoyi.process.general.service.IProcessService;
import com.ruoyi.process.todoitem.mapper.BizTodoItemMapper;
import com.ruoyi.purchase.domain.PurchasePlan;
import com.ruoyi.purchase.domain.PurchasePlanChild;
import com.ruoyi.purchase.service.IPurchasePlanService;
import com.ruoyi.system.domain.BaseRequisitioningOrderChild;
import com.ruoyi.system.domain.Vo.BaseRequisitioningOrderVo;
import com.ruoyi.system.mapper.BaseRequisitioningOrderChildMapper;
@ -81,6 +82,9 @@ public class BaseRequisitioningOrderServiceImpl implements IBaseRequisitioningOr
@Autowired
private IProcessService processService;
@Autowired
private IPurchasePlanService purchasePlanService;
/**
* 查询请购单
*
@ -90,7 +94,13 @@ public class BaseRequisitioningOrderServiceImpl implements IBaseRequisitioningOr
@Override
public BaseRequisitioningOrderVo selectBaseRequisitioningOrderById(Long requisitioningId)
{
return baseRequisitioningOrderMapper.selectBaseRequisitioningOrderById(requisitioningId);
BaseRequisitioningOrderVo baseRequisitioningOrderVo = baseRequisitioningOrderMapper.selectBaseRequisitioningOrderById(requisitioningId);
SysUser sysUser = userMapper.selectUserByLoginName(baseRequisitioningOrderVo.getApplyUser());
if (sysUser != null) {
baseRequisitioningOrderVo.setApplyUserName(sysUser.getUserName());
}
return baseRequisitioningOrderVo;
}
@ -415,21 +425,17 @@ public class BaseRequisitioningOrderServiceImpl implements IBaseRequisitioningOr
String key = "requisitioning";
Map<String,Object> variables = new HashMap<>();
BigDecimal rmbSum = baseRequisitioningOrder.getRmbSum();
BigDecimal surpassPrice = new BigDecimal(3000.00);
BigDecimal surpassPrice = new BigDecimal("3000.00");
int result = rmbSum.compareTo(surpassPrice);
Boolean surpass = false;
if (result > 0) {
surpass = true;
// rmbSum 大于 surpassPrice
variables.put("surpass",surpass);
variables.put("surpass",true);
} else if (result < 0) {
surpass = true;
// rmbSum 小于 surpassPrice
variables.put("surpass",surpass);
variables.put("surpass",false);
} else {
surpass = false;
// rmbSum 等于 surpassPrice
variables.put("surpass",surpass);
variables.put("surpass",false);
}
// 构造authority传参
buildAuthority(user, variables);
@ -445,51 +451,98 @@ public class BaseRequisitioningOrderServiceImpl implements IBaseRequisitioningOr
private void buildAuthority(SysUser user, Map<String, Object> variables) {
System.out.println("请购单启动流程");
System.out.println("user = " + user + ", variables = " + variables);
//查询当前请购人的角色
Set<String> roleKeys = roleService.selectRoleKeys(user.getUserId());
variables.put("authority",1);
//判断请购人的角色,进入相应的逻辑,设置节点审批人变量
if(roleKeys.contains("ywyRole") || roleKeys.contains("ywjlRole") || roleKeys.contains("ywzgRole")){
if(roleKeys.contains("ywyRole") || roleKeys.contains("ywjlRole") || roleKeys.contains("ywzgRole")) {
// 业务经理
variables.put("qgjlRole","ywjlRole");
// 业务主管
variables.put("qgzgRole","ywzgRole");
}else if(roleKeys.contains("cgyRole") || roleKeys.contains("cgjlRole") || roleKeys.contains("cgzgRole")){
}
else if(roleKeys.contains("cgyRole") || roleKeys.contains("cgjlRole") || roleKeys.contains("cgzgRole")){
// 采购经理
variables.put("qgjlRole","cgjlRole");
// 采购主管
variables.put("qgzgRole","cgzgRole");
}else if (roleKeys.contains("gcwyRole") || roleKeys.contains("gcjlRole") || roleKeys.contains("gczgRole")){
}
else if (roleKeys.contains("gcwyRole") || roleKeys.contains("gcjlRole") || roleKeys.contains("gczgRole")){
// 工程经理
variables.put("qgjlRole","gcjlRole");
// 工程主管
variables.put("qgzgRole","gczgRole");
} else if (roleKeys.contains("scyRole") || roleKeys.contains("scjlRole") || roleKeys.contains("sczgRole")){
}
else if (roleKeys.contains("scyRole") || roleKeys.contains("scjlRole") || roleKeys.contains("sczgRole")){
// 生产经理
variables.put("qgjlRole","scjlRoe");
// 生产主管
variables.put("qgzgRole","sczgRole");
}else if (roleKeys.contains("shgcsRole") || roleKeys.contains("shjlRole") || roleKeys.contains("shzgRole")){
}
else if (roleKeys.contains("shgcsRole") || roleKeys.contains("shjlRole") || roleKeys.contains("shzgRole")){
// 售后经理
variables.put("qgjlRole","shjlRole");
// 售后主管
variables.put("qgzgRole","shzgRole");
}else if(roleKeys.contains("cgyyRole") || roleKeys.contains("ckzgRole")){
}
else if(roleKeys.contains("cgyyRole") || roleKeys.contains("ckzgRole")){
variables.put("qgjlRole","shzgRole");
// 售后主管
variables.put("qgzgRole","shzgRole");
}else if (roleKeys.contains("cwRole") || roleKeys.contains("cwjlRole")){
}
else if (roleKeys.contains("cwRole") || roleKeys.contains("cwjlRole")){
variables.put("qgjlRole","cwjlRole");
// 售后主管
variables.put("qgzgRole","cwJlRole");
}else{
}
else{
variables.put("authority",2);
}
if(roleKeys.contains("admin") ){
// 角色包含业务经理、采购经理、工程经理、生产经理
variables.put("authority",2);
}
}
@Override
public Integer generatePurchasePlan(BaseRequisitioningOrder requisitioningOrder){
/*请购的物料信息,封装为采购计划需求的采购信息*/
List<BaseRequisitioningOrderChild> requisitioningOrderDetailList =
baseRequisitioningOrderChildMapper.selectBaseRequisitioningOrderChildByCode(requisitioningOrder.getRequisitioningCode());
//先将请购物料转换为采购物料需求
List<PurchasePlanChild> purchasePlanChildList = new ArrayList<>();
PurchasePlan purchasePlan = new PurchasePlan();
Long noRmbSum = 0L;
Long rmbSum = 0L;
Long materialAmount = Long.valueOf(requisitioningOrderDetailList.size());
Integer materialSum = 0;
//采购计划关联单号
purchasePlan.setCorrelationCode(requisitioningOrder.getRequisitioningCode());
purchasePlan.setPurchasePlanType("2");
purchasePlan.setMaterialAmount(materialAmount);
for (BaseRequisitioningOrderChild requisitioningOrderDetail : requisitioningOrderDetailList) {
PurchasePlanChild purchasePlanChild = new PurchasePlanChild();
purchasePlanChild.setWarehouseDept(requisitioningOrderDetail.getWarehouseDept());
purchasePlanChild.setMaterialCode(requisitioningOrderDetail.getMaterialCode());
purchasePlanChild.setMaterialName(requisitioningOrderDetail.getMaterialName());
purchasePlanChild.setDescribe(requisitioningOrderDetail.getDescribe());
purchasePlanChild.setBrand(requisitioningOrderDetail.getBrand());
purchasePlanChild.setMaterialNum(requisitioningOrderDetail.getMaterialNum());
purchasePlanChild.setMaterialType(requisitioningOrderDetail.getMaterialType());
purchasePlanChild.setMaterialNoRmb(requisitioningOrderDetail.getMaterialNoRmb());
purchasePlanChild.setMaterialRmb(requisitioningOrderDetail.getMaterialRmb());
noRmbSum = noRmbSum + Long.valueOf(String.valueOf(requisitioningOrderDetail.getMaterialNoRmb()));
rmbSum = rmbSum + Long.valueOf(String.valueOf(requisitioningOrderDetail.getMaterialRmbSum()));
purchasePlanChildList.add(purchasePlanChild);
}
purchasePlan.setNoRmbSum(noRmbSum);
purchasePlan.setRmbSum(rmbSum);
purchasePlan.setCreateBy(requisitioningOrder.getCreateBy());
purchasePlan.setCreateTime(DateUtils.getNowDate());
purchasePlan.setUpdateBy(requisitioningOrder.getUpdateBy());
purchasePlan.setUpdateTime(DateUtils.getNowDate());
return purchasePlanService.insertPurchasePlan(purchasePlan);
}
}

5
ruoyi-admin/src/main/resources/mapper/system/BaseRequisitioningOrderChildMapper.xml

@ -72,7 +72,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectBaseRequisitioningOrderChildVo"/>
where requisitioning_child_id = #{requisitioningChildId}
</select>
<select id="selectBaseRequisitioningOrderChildByCode" parameterType="String" resultMap="BaseRequisitioningOrderChildResult">
<include refid="selectBaseRequisitioningOrderChildVo"/>
where requisitioning_code = #{requisitioningCode}
</select>
<insert id="insertBaseRequisitioningOrderChild" parameterType="BaseRequisitioningOrderChild" useGeneratedKeys="true" keyProperty="requisitioningChildId">
insert into base_requisitioning_order_child
<trim prefix="(" suffix=")" suffixOverrides=",">

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

@ -35,7 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectBaseRequisitioningOrderVo">
select requisitioning_id, audit_status, requisitioning_status, requisitioning_code,
correlation_code, material_amount, materialSum, noRmbSum, rmbSum, apply_user,
correlation_code, material_amount, materialSum, noRmbSum, rmbSum,
create_by, create_time, update_by, update_time, remark, use_status,
instance_id, instance_type, submit_instance_id, cancel_instance_id, restore_instance_id,
apply_title, apply_user, apply_time, dept_name, post_name

Loading…
Cancel
Save