Browse Source

[fix]

委外加工 委外领料
修改添加委外领料页面,修改物料表格定义,添加子表定义,新增子表初始化方法,补全子表字段;
修改合并重复的material的记录方法和物料对象初始化语句,添加计划详情id字段;
修改页面提交函数,根据层级不同分别循环处理对象数据,拼接字符串返回后台;
修改委外领料详情、委外经理、委外主管审批页面显示结构,添加主子表初始化方法;
修改委外领料详情对象,数值类型改为Integer,新增父级id、阶层、审批状态、委外计划详情id字段;
修改审批完成controller方法,新增根据父级iD查询委外领料详情controller方法;
新增根据父级iD查询委外领料详情service方法;
修改查询、新增委外领料、更新审批后信息、启动流程、新增委外领料详情信息service方法;
修改mapper对应方法,新增字段,新增插入和更新详情mapper方法;
dev
王晓迪 2 months ago
parent
commit
77dc2f8142
  1. 22
      ruoyi-admin/src/main/java/com/ruoyi/system/controller/OutsourceRequisitionController.java
  2. 69
      ruoyi-admin/src/main/java/com/ruoyi/system/domain/OutsourceRequisitionDetail.java
  3. 8
      ruoyi-admin/src/main/java/com/ruoyi/system/mapper/OutsourceRequisitionMapper.java
  4. 5
      ruoyi-admin/src/main/java/com/ruoyi/system/service/IOutsourceRequisitionService.java
  5. 69
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/OutsourceRequisitionServiceImpl.java
  6. 126
      ruoyi-admin/src/main/resources/mapper/system/OutsourceRequisitionMapper.xml
  7. 173
      ruoyi-admin/src/main/resources/templates/system/outsource_order/addRequisition.html
  8. 98
      ruoyi-admin/src/main/resources/templates/system/outsource_requisition/detail.html
  9. 14
      ruoyi-admin/src/main/resources/templates/system/outsource_requisition/outsource_requisition.html
  10. 98
      ruoyi-admin/src/main/resources/templates/system/outsource_requisition/taskWwjlVerify.html
  11. 104
      ruoyi-admin/src/main/resources/templates/system/outsource_requisition/taskWwzgVerify.html

22
ruoyi-admin/src/main/java/com/ruoyi/system/controller/OutsourceRequisitionController.java

@ -5,10 +5,7 @@ import java.util.List;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.process.general.service.IProcessService;
import com.ruoyi.system.domain.OutsourceOrder;
import com.ruoyi.system.domain.OutsourceQuoteChild;
import com.ruoyi.system.domain.OutsourceRequisition;
import com.ruoyi.system.domain.OutsourceRequisitionDetail;
import com.ruoyi.system.domain.*;
import com.ruoyi.system.domain.Vo.OutsourceOrderVO;
import com.ruoyi.system.domain.Vo.OutsourceQuoteVO;
import com.ruoyi.system.domain.Vo.OutsourceRequisitionVO;
@ -149,7 +146,6 @@ public class OutsourceRequisitionController extends BaseController
String processInstanceId = task.getProcessInstanceId();
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
OutsourceRequisitionVO outsourceRequisitionVO = outsourceRequisitionService.selectOutsourceRequisitionByOutsourceRequisitionId(new Long(processInstance.getBusinessKey()));
System.out.println(outsourceRequisitionVO);
mmap.put("formData", outsourceRequisitionVO);
mmap.put("taskId", taskId);
String verifyName = task.getTaskDefinitionKey().substring(0, 1).toUpperCase() + task.getTaskDefinitionKey().substring(1);
@ -188,6 +184,10 @@ public class OutsourceRequisitionController extends BaseController
// 如果任务已结束更新业务表状态
boolean processIsFinish = processService.judgeProcessIsFinish(instanceId);
if (processIsFinish) {
if(!approvedFlag){
// 审核状态-审核拒绝
outsourceRequisitionVO.setAuditStatus("2");
}else{
// 审核通过
outsourceRequisitionVO.setAuditStatus("1");
OutsourceRequisitionVO requisitionVO = outsourceRequisitionService.selectOutsourceRequisitionByOutsourceRequisitionId(outsourceRequisitionVO.getOutsourceRequisitionId());
@ -208,6 +208,7 @@ public class OutsourceRequisitionController extends BaseController
// erpBomVo.setUseStatus("1");
}
}
}
outsourceRequisitionService.updateAuditRequisition(outsourceRequisitionVO);
// 驳回申请后继续申请,可能修改表单
if (saveEntityBoolean) {
@ -263,4 +264,15 @@ public class OutsourceRequisitionController extends BaseController
mmap.put("outsourceRequisition", outsourceRequisition);
return prefix + "/detail";
}
/**
* 查询委外领料详情
*/
@PostMapping("/getRequisitionMaterial")
@ResponseBody
public TableDataInfo getRequisitionMaterial(OutsourceRequisitionDetail requisitionDetail)
{
List<OutsourceRequisitionDetail> list = outsourceRequisitionService.selectOutsourceRequisitionDetailList(requisitionDetail);
return getDataTable(list);
}
}

69
ruoyi-admin/src/main/java/com/ruoyi/system/domain/OutsourceRequisitionDetail.java

@ -1,5 +1,6 @@
package com.ruoyi.system.domain;
import io.swagger.models.auth.In;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
@ -62,11 +63,11 @@ public class OutsourceRequisitionDetail extends BaseEntity
/** 计划委外数 */
@Excel(name = "计划委外数",sort = 10)
private BigDecimal plannedOutsourceAmount;
private Integer plannedOutsourceAmount;
// 实际委外数
@Excel(name = "实际委外数",sort = 11)
private BigDecimal actualOutsourceAmount;
private Integer actualOutsourceAmount;
// 关联单号
private String correlationCodes;
@ -88,11 +89,23 @@ public class OutsourceRequisitionDetail extends BaseEntity
/** 已委外领料数 */
@Excel(name = "已委外领料数",sort = 12)
private BigDecimal takenMaterial;
private Integer takenMaterial;
/** 本次委外领料数 */
@Excel(name = "本次委外领料数",sort = 13)
private BigDecimal takingMaterial;
private Integer takingMaterial;
/** 父级id*/
private Long parentId;
/** 阶层*/
private int level;
/** 审批状态*/
private String auditStatus;
/** 委外计划详情id*/
private Long planDetailId;
public void setOutsourceRequisitionDetailId(Long outsourceRequisitionDetailId)
{
@ -121,21 +134,21 @@ public class OutsourceRequisitionDetail extends BaseEntity
{
return materialNo;
}
public void setTakenMaterial(BigDecimal takenMaterial)
public void setTakenMaterial(Integer takenMaterial)
{
this.takenMaterial = takenMaterial;
}
public BigDecimal getTakenMaterial()
public Integer getTakenMaterial()
{
return takenMaterial;
}
public void setTakingMaterial(BigDecimal takingMaterial)
public void setTakingMaterial(Integer takingMaterial)
{
this.takingMaterial = takingMaterial;
}
public BigDecimal getTakingMaterial()
public Integer getTakingMaterial()
{
return takingMaterial;
}
@ -204,19 +217,19 @@ public class OutsourceRequisitionDetail extends BaseEntity
this.processMethod = processMethod;
}
public BigDecimal getPlannedOutsourceAmount() {
public Integer getPlannedOutsourceAmount() {
return plannedOutsourceAmount;
}
public void setPlannedOutsourceAmount(BigDecimal plannedOutsourceAmount) {
public void setPlannedOutsourceAmount(Integer plannedOutsourceAmount) {
this.plannedOutsourceAmount = plannedOutsourceAmount;
}
public BigDecimal getActualOutsourceAmount() {
public Integer getActualOutsourceAmount() {
return actualOutsourceAmount;
}
public void setActualOutsourceAmount(BigDecimal actualOutsourceAmount) {
public void setActualOutsourceAmount(Integer actualOutsourceAmount) {
this.actualOutsourceAmount = actualOutsourceAmount;
}
@ -276,6 +289,38 @@ public class OutsourceRequisitionDetail extends BaseEntity
this.correlationCodes = correlationCodes;
}
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public String getAuditStatus() {
return auditStatus;
}
public void setAuditStatus(String auditStatus) {
this.auditStatus = auditStatus;
}
public Long getPlanDetailId() {
return planDetailId;
}
public void setPlanDetailId(Long planDetailId) {
this.planDetailId = planDetailId;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

8
ruoyi-admin/src/main/java/com/ruoyi/system/mapper/OutsourceRequisitionMapper.java

@ -34,10 +34,10 @@ public interface OutsourceRequisitionMapper
/**
* 查询委外领料详情列表
*
* @param outsourceRequisitionNo 委外领料编号
* @param requisitionDetail 委外领料编号
* @return 委外领料详情集合
*/
public List<OutsourceRequisitionDetail> selectOutsourceRequisitionDetailList(String outsourceRequisitionNo);
public List<OutsourceRequisitionDetail> selectOutsourceRequisitionDetailList(OutsourceRequisitionDetail requisitionDetail);
/**
* 新增委外领料
@ -100,4 +100,8 @@ public interface OutsourceRequisitionMapper
public List<OutsourceRequisitionDetail> selectRequisitionDetailByNo(OutsourceRequisitionDetail outsourceRequisitionDetail);
public List<OutsourceRequisitionDetail> selectOutsourceRequisitionDetailByCodes(String[] requisitionNos);
public int insertOutsourceRequisitionDetail(OutsourceRequisitionDetail outsourceRequisitionDetail);
public int updateOutsourceRequisitionDetail(OutsourceRequisitionDetail outsourceRequisitionDetail);
}

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

@ -1,6 +1,7 @@
package com.ruoyi.system.service;
import com.ruoyi.system.domain.OutsourceRequisition;
import com.ruoyi.system.domain.OutsourceRequisitionDetail;
import com.ruoyi.system.domain.Vo.OutsourceQuoteVO;
import com.ruoyi.system.domain.Vo.OutsourceRequisitionVO;
import org.activiti.engine.runtime.ProcessInstance;
@ -76,4 +77,8 @@ public interface IOutsourceRequisitionService
public int generateWarehouseOutOrder(OutsourceRequisitionVO outsourceRequisitionVO);
/** 查询委外领料详情列表*/
public List<OutsourceRequisitionDetail> selectOutsourceRequisitionDetailList(OutsourceRequisitionDetail requisitionDetail);
}

69
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/OutsourceRequisitionServiceImpl.java

@ -83,9 +83,14 @@ public class OutsourceRequisitionServiceImpl implements IOutsourceRequisitionSer
public OutsourceRequisitionVO selectOutsourceRequisitionByOutsourceRequisitionId(Long outsourceRequisitionId)
{
OutsourceRequisitionVO outsourceRequisitionVO = outsourceRequisitionMapper.selectOutsourceRequisitionByOutsourceRequisitionId(outsourceRequisitionId);
if(outsourceRequisitionMapper.selectOutsourceRequisitionDetailList(outsourceRequisitionVO.getOutsourceRequisitionNo())!=null){
List<OutsourceRequisitionDetail> details = outsourceRequisitionMapper.selectOutsourceRequisitionDetailList(outsourceRequisitionVO.getOutsourceRequisitionNo());
outsourceRequisitionVO.setOutsourceRequisitionDetailList(details);
OutsourceRequisitionDetail tempDetail = new OutsourceRequisitionDetail();
tempDetail.setOutsourceRequisitionNo(outsourceRequisitionVO.getOutsourceRequisitionNo());
List<OutsourceRequisitionDetail> details = outsourceRequisitionMapper.selectOutsourceRequisitionDetailList(tempDetail);
List<OutsourceRequisitionDetail> filtDetails = details.stream().filter(item ->item.getLevel() == 0).collect(Collectors.toList());
if(StringUtils.isNotEmpty(filtDetails)){
outsourceRequisitionVO.setOutsourceRequisitionDetailList(filtDetails);
}
return outsourceRequisitionVO;
}
@ -183,6 +188,17 @@ public class OutsourceRequisitionServiceImpl implements IOutsourceRequisitionSer
if(rows<=0){
throw new BusinessException("新增委外领料单数据失败");
}
List<OutsourceRequisitionDetail> requisitionDetails = outsourceRequisitionVO.getOutsourceRequisitionDetailList();
for (OutsourceRequisitionDetail detail: requisitionDetails) {
if(detail.getLevel()==1){
int hasPickNum = Optional.of(detail.getTakenMaterial()).orElse(0);
int pickNum = Optional.of(detail.getTakingMaterial()).orElse(0);
int actualNum = Optional.of(detail.getActualOutsourceAmount()).orElse(0);
if(hasPickNum + pickNum > actualNum){
throw new BusinessException("物料"+detail.getMaterialNo()+"总领料数超出计划委外数,请检查");
}
}
}
insertOutsourceRequisitionDetail(outsourceRequisitionVO);
return rows;
}
@ -230,14 +246,28 @@ public class OutsourceRequisitionServiceImpl implements IOutsourceRequisitionSer
}
// 更新审批后信息
@Transactional
@Transactional(rollbackFor = Exception.class)
@Override
public int updateAuditRequisition(OutsourceRequisitionVO outsourceRequisitionVO){
outsourceRequisitionVO.setUpdateBy(ShiroUtils.getLoginName());
outsourceRequisitionVO.setUpdateTime(DateUtils.getNowDate());
int rows = outsourceRequisitionMapper.updateOutsourceRequisition(outsourceRequisitionVO);
OutsourceRequisitionDetail tempDetail = new OutsourceRequisitionDetail();
tempDetail.setOutsourceRequisitionNo(outsourceRequisitionVO.getOutsourceRequisitionNo());
List<OutsourceRequisitionDetail> requisitionDetails = outsourceRequisitionMapper.selectRequisitionDetailByNo(tempDetail);
if(StringUtils.isNotEmpty(requisitionDetails)){
for (OutsourceRequisitionDetail detail: requisitionDetails) {
detail.setAuditStatus(outsourceRequisitionVO.getAuditStatus());
detail.setUpdateBy(ShiroUtils.getLoginName());
detail.setUpdateTime(DateUtils.getNowDate());
outsourceRequisitionMapper.updateOutsourceRequisitionDetail(detail);
}
}
return rows;
}
/**
* 批量删除委外领料
*
@ -268,6 +298,7 @@ public class OutsourceRequisitionServiceImpl implements IOutsourceRequisitionSer
}
@Override
@Transactional(rollbackFor = Exception.class)
public ProcessInstance submitApply(OutsourceRequisitionVO outsourceRequisitionVO) {
SysUser user = ShiroUtils.getSysUser();
outsourceRequisitionVO.setApplyUser(user.getLoginName());
@ -286,6 +317,8 @@ public class OutsourceRequisitionServiceImpl implements IOutsourceRequisitionSer
if(processIsFinish){
// 审核状态-审核通过
outsourceRequisitionVO.setAuditStatus("1");
updateAuditRequisition(outsourceRequisitionVO);
generateWarehouseOutOrder(outsourceRequisitionVO);
}
outsourceRequisitionMapper.updateOutsourceRequisition(outsourceRequisitionVO);
return processInstance;
@ -324,7 +357,7 @@ public class OutsourceRequisitionServiceImpl implements IOutsourceRequisitionSer
variables.put("authority",1);
}else if(roleKeys.contains("wwjlRole")){
variables.put("authority",2);
}else if(roleKeys.contains("wwzgRole")){
}else if(roleKeys.contains("wwzgRole")||roleKeys.contains("admin")){
variables.put("authority",3);
}
}
@ -338,17 +371,22 @@ public class OutsourceRequisitionServiceImpl implements IOutsourceRequisitionSer
{
List<OutsourceRequisitionDetail> outsourceRequisitionDetailList = outsourceRequisitionVO.getOutsourceRequisitionDetailList();
String outsourceRequisitionNo = outsourceRequisitionVO.getOutsourceRequisitionNo();
Long parentId = 0L;
if (StringUtils.isNotNull(outsourceRequisitionDetailList))
{
List<OutsourceRequisitionDetail> list = new ArrayList<OutsourceRequisitionDetail>();
for (OutsourceRequisitionDetail outsourceRequisitionDetail : outsourceRequisitionDetailList)
for (OutsourceRequisitionDetail detail : outsourceRequisitionDetailList)
{
outsourceRequisitionDetail.setOutsourceRequisitionNo(outsourceRequisitionNo);
list.add(outsourceRequisitionDetail);
detail.setOutsourceRequisitionNo(outsourceRequisitionNo);
detail.setCreateBy(ShiroUtils.getLoginName());
detail.setCreateTime(DateUtils.getNowDate());
detail.setAuditStatus("0");
if(detail.getLevel() == 0){
outsourceRequisitionMapper.insertOutsourceRequisitionDetail(detail);
parentId = detail.getOutsourceRequisitionDetailId();
}else if(detail.getLevel() == 1){
detail.setParentId(parentId);
outsourceRequisitionMapper.insertOutsourceRequisitionDetail(detail);
}
if (list.size() > 0)
{
outsourceRequisitionMapper.batchOutsourceRequisitionDetail(list);
}
}
}
@ -419,4 +457,11 @@ public class OutsourceRequisitionServiceImpl implements IOutsourceRequisitionSer
warehouseOutOrderDetail.setCreateTime(DateUtils.getNowDate());
return warehouseOutOrderDetail;
}
/** 查询委外领料详情列表*/
@Override
public List<OutsourceRequisitionDetail> selectOutsourceRequisitionDetailList(OutsourceRequisitionDetail requisitionDetail){
return outsourceRequisitionMapper.selectOutsourceRequisitionDetailList(requisitionDetail);
}
}

126
ruoyi-admin/src/main/resources/mapper/system/OutsourceRequisitionMapper.xml

@ -55,17 +55,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="deliveryTimeInfo" column="delivery_time_info" />
<result property="takenMaterial" column="taken_material" />
<result property="takingMaterial" column="taking_material" />
<result property="parentId" column="parent_id" />
<result property="level" column="level" />
<result property="planDetailId" column="plan_detail_id" />
<result property="auditStatus" column="audit_status" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectOutsourceRequisitionVo">
select outsource_requisition_id, outsource_requisition_no, outsource_order_no, requisition_person, create_by, create_time, update_by, update_time, material_amount, total_amount, audit_status,requisition_status,instance_id, instance_type, submit_instance_id, apply_title, apply_time, apply_user, cancel_instance_id, restore_instance_id from outsource_requisition
select outsource_requisition_id, outsource_requisition_no, outsource_order_no,
requisition_person, create_by, create_time, update_by, update_time,
material_amount, total_amount, audit_status,requisition_status,instance_id,
instance_type, submit_instance_id, apply_title, apply_time, apply_user,
cancel_instance_id, restore_instance_id from outsource_requisition
</sql>
<sql id="selectOutsourceRequisitionDetail">
select outsource_requisition_detail_id, outsource_requisition_no, outsource_order_no, material_no, material_name, material_type,
material_photo_url, description, brand, unit, process_method, planned_outsource_amount, actual_outsource_amount,
outsource_process_info, charge_unit_info, single_material_info, supplier_info, delivery_time_info,
taken_material, taking_material, correlation_codes
taken_material, taking_material, correlation_codes, parent_id, level,
create_by, create_time, update_by, update_time, audit_status, plan_detail_id
from outsource_requisition_detail
</sql>
@ -86,9 +99,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where outsource_requisition_id = #{outsourceRequisitionId}
</select>
<select id="selectOutsourceRequisitionDetailList" parameterType="String" resultMap="OutsourceRequisitionDetailResult">
<select id="selectOutsourceRequisitionDetailList" parameterType="outsourceRequisitionDetail" resultMap="OutsourceRequisitionDetailResult">
<include refid="selectOutsourceRequisitionDetail"/>
where outsource_requisition_no = #{outsourceRequisitionNo}
<where>
<if test="outsourceRequisitionNo != null and outsourceRequisitionNo != ''"> and outsource_requisition_no = #{outsourceRequisitionNo}</if>
<if test="outsourceOrderNo != null and outsourceOrderNo != ''"> and outsource_order_no = #{outsourceOrderNo}</if>
<if test="parentId != null and parentId != ''"> and parent_id = #{parentId}</if>
<if test="planDetailId != null and planDetailId != ''"> and plan_detail_id = #{planDetailId}</if>
</where>
</select>
<insert id="insertOutsourceRequisition" parameterType="OutsourceRequisitionVO" useGeneratedKeys="true" keyProperty="outsourceRequisitionId">
@ -213,4 +231,104 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{outsourceRequisitionNo}
</foreach>
</select>
<insert id="insertOutsourceRequisitionDetail" parameterType="OutsourceRequisitionDetail" useGeneratedKeys="true" keyProperty="outsourceRequisitionDetailId">
insert into outsource_requisition_detail
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="outsourceRequisitionNo != null and outsourceRequisitionNo != ''">outsource_requisition_no,</if>
<if test="outsourceOrderNo != null and outsourceOrderNo != ''">outsource_order_no,</if>
<if test="materialNo != null">material_no,</if>
<if test="materialName != null">material_name,</if>
<if test="materialType != null">material_type,</if>
<if test="materialPhotoUrl != null">material_photo_url,</if>
<if test="description != null">description,</if>
<if test="brand != null">brand,</if>
<if test="unit != null">unit,</if>
<if test="processMethod != null">process_method,</if>
<if test="plannedOutsourceAmount != null">planned_outsource_amount,</if>
<if test="actualOutsourceAmount != null">actual_outsource_amount,</if>
<if test="correlationCodes != null">correlation_codes,</if>
<if test="outsourceProcessInfo != null">outsource_process_info,</if>
<if test="chargeUnitInfo != null">charge_unit_info,</if>
<if test="singleMaterialInfo != null">single_material_info,</if>
<if test="supplierInfo != null">supplier_info,</if>
<if test="deliveryTimeInfo != null">delivery_time_info,</if>
<if test="takenMaterial != null">taken_material,</if>
<if test="takingMaterial != null">taking_material,</if>
<if test="parentId != null">parent_id,</if>
<if test="level != null">`level`,</if>
<if test="planDetailId != null">plan_detail_id,</if>
<if test="auditStatus != null">audit_status,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="outsourceRequisitionNo != null and outsourceRequisitionNo != ''">#{outsourceRequisitionNo},</if>
<if test="outsourceOrderNo != null and outsourceOrderNo != ''">#{outsourceOrderNo},</if>
<if test="materialNo != null">#{materialNo},</if>
<if test="materialName != null">#{materialName},</if>
<if test="materialType != null">#{materialType},</if>
<if test="materialPhotoUrl != null">#{materialPhotoUrl},</if>
<if test="description != null">#{description},</if>
<if test="brand != null">#{brand},</if>
<if test="unit != null">#{unit},</if>
<if test="processMethod != null">#{processMethod},</if>
<if test="plannedOutsourceAmount != null">#{plannedOutsourceAmount},</if>
<if test="actualOutsourceAmount != null">#{actualOutsourceAmount},</if>
<if test="correlationCodes != null">#{correlationCodes},</if>
<if test="outsourceProcessInfo != null">#{outsourceProcessInfo},</if>
<if test="chargeUnitInfo != null">#{chargeUnitInfo},</if>
<if test="singleMaterialInfo != null">#{singleMaterialInfo},</if>
<if test="supplierInfo != null">#{supplierInfo},</if>
<if test="deliveryTimeInfo != null">#{deliveryTimeInfo},</if>
<if test="takenMaterial != null">#{takenMaterial},</if>
<if test="takingMaterial != null">#{takingMaterial},</if>
<if test="parentId != null">#{parentId},</if>
<if test="level != null">#{level},</if>
<if test="planDetailId != null">#{planDetailId},</if>
<if test="auditStatus != null">#{auditStatus},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateOutsourceRequisitionDetail" parameterType="OutsourceRequisitionDetail">
update outsource_requisition_detail
<trim prefix="SET" suffixOverrides=",">
<if test="outsourceRequisitionNo != null and outsourceRequisitionNo != ''">outsource_requisition_no = #{outsourceRequisitionNo},</if>
<if test="outsourceOrderNo != null and outsourceOrderNo != ''">outsource_order_no = #{outsourceOrderNo},</if>
<if test="materialNo != null">material_no = #{materialNo},</if>
<if test="materialName != null">material_name = #{materialName},</if>
<if test="materialType != null">material_type = #{materialType},</if>
<if test="materialPhotoUrl != null">material_photo_url = #{materialPhotoUrl},</if>
<if test="description != null">description = #{description},</if>
<if test="brand != null">brand = #{brand},</if>
<if test="unit != null">unit = #{unit},</if>
<if test="processMethod != null">process_method = #{processMethod},</if>
<if test="plannedOutsourceAmount != null">planned_outsource_amount = #{plannedOutsourceAmount},</if>
<if test="actualOutsourceAmount != null">actual_outsource_amount = #{actualOutsourceAmount},</if>
<if test="correlationCodes != null">correlation_codes = #{correlationCodes},</if>
<if test="outsourceProcessInfo != null">outsource_process_info = #{outsourceProcessInfo},</if>
<if test="chargeUnitInfo != null">charge_unit_info = #{chargeUnitInfo},</if>
<if test="singleMaterialInfo != null">single_material_info = #{singleMaterialInfo},</if>
<if test="supplierInfo != null">supplier_info = #{supplierInfo},</if>
<if test="deliveryTimeInfo != null">delivery_time_info = #{deliveryTimeInfo},</if>
<if test="takenMaterial != null">taken_material = #{takenMaterial},</if>
<if test="takingMaterial != null">taking_material = #{takingMaterial},</if>
<if test="parentId != null">parent_id = #{parentId},</if>
<if test="level != null">`level` = #{level},</if>
<if test="planDetailId != null">plan_detail_id = #{planDetailId},</if>
<if test="auditStatus != null">audit_status = #{auditStatus},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where outsource_requisition_detail_id = #{outsourceRequisitionDetailId}
</update>
</mapper>

173
ruoyi-admin/src/main/resources/templates/system/outsource_order/addRequisition.html

@ -7,9 +7,9 @@
<th:block th:include="include :: bootstrap-editable-css" />
</head>
<style>
.col-sm-12.material-table{
height: 75px;
}
/*.col-sm-12.material-table{*/
/* height: 200px;*/
/*}*/
.hr-line-dashed {
border-top: 1px dashed #ddd;
margin-top: 20px; /* 调整间距 */
@ -73,16 +73,19 @@
<th:block th:include="include :: bootstrap-table-editable-js" />
<script th:inline="javascript">
var prefix = ctx + "system/outsource_requisition";
var planPrefix = ctx + "system/outsource_plan";
$("#form-order-outsourceRequisition-add").validate({focusCleanup: true});
var processMethodDatas = [[${@dict.getType('processMethod')}]];
var materialTypeDatas = [[${@category.getChildByCode('materialType')}]];
var levelDatas = [[${@dict.getType('bomLevel')}]];
var outsourcePlanDetailList = [];
// var chargeUnitDatas = [[${@dict.getType("charge_unit")}]]
// var formId = "form-plan-outsourceOrder-add";
var outsourcePlanCode = '';
var outsoutceOrderNo = '';
var materialList = [];
var tableIdList = [];
var supplierList = [];
var childTableList = [];
var $processContent;
var $supplierheaderContent;
var materials;
@ -92,11 +95,8 @@
var originMaterial = []
$(function() {
// console.log(outsourceOrderList);
originMaterial = outsourceOrderList[0].materials;
outsoutceOrderNo = outsourceOrderList[0].outsourceOrderNo;
$("input[name='outsourcePlanCode']").val(outsourceOrderList[0].outsourcePlanCode);
// 根据料号去重
materials = mergeRecords(originMaterial);
@ -105,6 +105,8 @@
materials.forEach(function (material, index) {
var tableId = 'materialNo-' + (index+1);
var materialTable = "bootstrap-table_" + tableId;
var childTableId = "material_child_" + tableId;
childTableList.push(childTableId);
tableIdList.push(tableId);
// 创建物料信息的容器
var $tableWrapper = $('<div id="material-' + tableId + '"></div>');
@ -140,6 +142,7 @@
unit: material.unit,
brand: material.brand,
processMethod: material.processMethod,
planDetailId: material.planDetailId,
correlationCodes: material.correlationCodes,
actualOutsourceAmount: material.orderDetails[0].actualOutsourceAmount,
alreadyRequisitionAmount: 0,
@ -147,10 +150,10 @@
};
var materialData = [materialObj]; // Bootstrap Table需要一个数组作为数据源
materialList.push(material);
tables(materialTable, materialData);
tables(materialTable,childTableId, materialData);
var $MaterialNumDiv =
$('<div class="row" style="margin-top: 20px;margin-left: 10px;">' +
$('<div class="row" style="margin-top: 5px;margin-left: 10px;">' +
'<div class="col-xs-12">' +
'<h3>' +
'<span><strong>供应商</strong></span>' +
@ -244,7 +247,7 @@
});
});
function tables(tableId, data) {
function tables(tableId,childTableId,data) {
$('#' + tableId).bootstrapTable({
showExport: false,
showFooter: false,
@ -252,8 +255,15 @@
showRefresh: false,
showColumns: false,
showToggle: false,
height: 200,
data: data,
detailView: true,
onExpandRow : function(index,row,$detail){
$detail.html('<table class="table-container" id="'+childTableId+'"></table>').find('table');
initChildTable(index,row,$detail,childTableId);
},
columns: [
{title: '计划详情id', field: 'planDetailId',visible:false,},
{title: '料号', field: 'materialNo'},
{title: '图片', field: 'materialPhotourl', formatter: function (value, row, index) {
return $.table.imageView(value);
@ -273,20 +283,86 @@
},
{title: '计划委外数', field: 'plannedOutsourceAmount'},
{title: '实际委外数', field: 'actualOutsourceAmount'},
{title: '已委外领料数', field: 'alreadyRequisitionAmount'},
// {title: '已委外领料数', field: 'alreadyRequisitionAmount'},
// {
// title: '<span class="is-required">本次领料数</span>',
// field: 'nowRequisitionAmount',
// formatter: function(value, row, index) {
// var html = $.common.sprintf("<input class='form-control' type='number' name='nowRequisitionAmount' id = 'nowRequisitionAmount_"+tableId+"'>", index, value);
// return html;
// }
// },
],
});
$("#"+tableId).bootstrapTable('expandRow', 0);
};
initChildTable = function(index, row, $detail,childTableId) {
var parentRow = row;
$("#"+childTableId).bootstrapTable({
url: planPrefix + "/getRequisitionMaterial",
method: 'post',
id: childTableId,
sidePagination: "server",
contentType: "application/x-www-form-urlencoded",
queryParams : {
parentId: parentRow.planDetailId,
outsoutceOrderNo: outsoutceOrderNo,
},
columns: [
{
title: '阶层',
field: 'level',
formatter: function(value, row, index) {
return $.table.selectDictLabel(levelDatas, value);
}
},
{title: '委外计划详情id', field: 'outsourcePlanDetailId',visible:false,},
{title: '料号', field: 'materialNo'},
{title: '图片', field: 'materialPhotourl', formatter: function (value, row, index) {
return $.table.imageView(value);
}
},
{title: '物料类型',field: 'materialType',
formatter: function(value, row, index) {return $.table.selectCategoryLabel(materialTypeDatas, value);}
},
{title: '物料名称', field: 'materialName'},
{title: '物料描述', field: 'description'},
{title: '品牌', field: 'brand'},
{title: '单位', field: 'unit', align: 'center', },
{title: '加工方式', field: 'processMethod', align: 'center',
formatter: function (value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
}
},
{title: '计划委外数', field: 'plannedOutsourceAmount',
formatter: function (value, row, index) {
if(value === null || value === ''||value === undefined){
value = parentRow.plannedOutsourceAmount;
}
return value;
}
},
{title: '实际委外数', field: 'actualOutsourceAmount',
formatter: function (value, row, index) {
if(value === null || value === ''||value === undefined){
value = parentRow.actualOutsourceAmount;
}
return value;
}
},
{title: '已委外领料数', field: 'pickedNum'},
{
title: '<span class="is-required">本次领料数</span>',
field: 'nowRequisitionAmount',
field: 'pickingNum',
formatter: function(value, row, index) {
var html = $.common.sprintf("<input class='form-control' type='number' name='nowRequisitionAmount' id = 'nowRequisitionAmount_"+tableId+"'>", index, value);
var html = $.common.sprintf("<input class='form-control' type='number' oninput='calculateTotal()' name='nowRequisitionAmount' id = 'pickNum_"+ childTableId +"_"+ index +"'>", index, value);
return html;
}
},
],
});
$('input[name="nowRequisitionAmount"]').on('input', function() {
calculateTotal();
});
};
// 计算总领料数
function calculateTotal() {
@ -297,7 +373,6 @@
var value = parseFloat($(this).val()) || 0; // 将输入框的值转换为数字,默认为0
total += value;
});
// console.log("总领料数:" + total);
$("#outsourceMaterialAmount").val(total);
};
// 函数用于合并重复的material的记录
@ -323,6 +398,7 @@
unit: current.unit,
brand: current.brand,
processMethod: current.processMethod,
planDetailId: current.planDetailId,
// correlationCodes: current.correlationCodes,
plannedOutsourceAmount: current.plannedOutsourceAmount,
orderDetails: [
@ -347,27 +423,17 @@
$('.table-materialNo').each(function(index, tableElement) {
var tableId = tableIdList[index];
let materialObj = materialList[index];
var childTableId = childTableList[index];
var childDatas = $("#"+childTableId).bootstrapTable("getData");
if(childDatas.length <= 0) return;
if (typeof materialObj === 'undefined') return;
var rows = $("#" + "bootstrap-table_" + tableId).bootstrapTable('getData').length;
if(rows != 0) {
var data = $("#" + "bootstrap-table_" + tableId).bootstrapTable('getData')[0];
var amountId = "nowRequisitionAmount_bootstrap-table_" + tableId;
if($('[id^="' + amountId + '"]').val() === ""){
return;
}else{
hasValue = true;
materialAmount++;
let value = Number($('[id^="' + amountId + '"]').val());
if (!isNaN(value)) {
var hasReValue = Number(data.alreadyRequisitionAmount);
if(hasReValue + value>data.actualOutsourceAmount){
hasError = true;
}
requisitionSum += value;
}
var correlationCodes = $("#correlationCodes-" + tableId).text().trim();
$('#' + 'material-' + tableId).find('.process_card').each(function(processIndex, processCard) {
// console.log("1111");
var processNo = $(processCard).find('.processNo').text().trim();
var processName = $(processCard).find('.processName').text().trim();
var chargeUnitInfo = $(processCard).find('.chargeUnitInfo').text().trim();
@ -379,6 +445,7 @@
var deliveryTimeInfo = $(processCard).find("input[name='deliveryTime']").val();
var requisitionDetail = {
materialNo: data.materialNo,
planDetailId: data.planDetailId,
materialPhotourl: data.materialPhotourl,
materialName: data.materialName,
description: data.description,
@ -386,11 +453,10 @@
unit: data.unit,
processMethod: data.processMethod,
materialType: data.materialType,
level: 0,
plannedOutsourceAmount: data.plannedOutsourceAmount,
actualOutsourceAmount: data.actualOutsourceAmount,
outsourceOrderNo: outsourceRequisition.outsourceOrderNo,
takenMaterial:data.alreadyRequisitionAmount,
takingMaterial: value,
outsourceProcessInfo: processInfo,
chargeUnitInfo: chargeUnitInfo,
singleMaterialInfo: singleMaterialInfo,
@ -400,7 +466,44 @@
};
outsourceRequisition.outsourceRequisitionDetailList.push(requisitionDetail);
});
childDatas.forEach(function (material,index){
var inputId = "pickNum_" + childTableId + "_" + index;
if($("#"+inputId).val() === ""||$("#"+inputId).val() === "0"){
return;
}else{
hasValue = true;
materialAmount++;
let value = Number($("#"+inputId).val());
if (!isNaN(value)) {
var hasReValue = Number(material.alreadyRequisitionAmount);
if(hasReValue + value>material.actualOutsourceAmount){
hasError = true;
}
requisitionSum += value;
};
var requisitionDetail = {
materialNo: material.materialNo,
planDetailId: material.outsourcePlanDetailId,
materialPhotourl: material.materialPhotourl,
materialName: material.materialName,
description: material.description,
brand: material.brand,
unit: material.unit,
level: 1,
processMethod: material.processMethod,
materialType: material.materialType,
plannedOutsourceAmount: data.plannedOutsourceAmount,
actualOutsourceAmount: data.actualOutsourceAmount,
outsourceOrderNo: outsourceRequisition.outsourceOrderNo,
takenMaterial:material.pickedNum,
takingMaterial: value,
correlationCodes: correlationCodes,
};
outsourceRequisition.outsourceRequisitionDetailList.push(requisitionDetail);
}
});
}
outsourceRequisition.materialAmount = materialAmount;
});

98
ruoyi-admin/src/main/resources/templates/system/outsource_requisition/detail.html

@ -7,9 +7,6 @@
<th:block th:include="include :: bootstrap-editable-css" />
</head>
<style>
.col-sm-12.material-table{
height: 75px;
}
.hr-line-dashed {
border-top: 1px dashed #ddd;
margin-top: 20px; /* 调整间距 */
@ -65,7 +62,10 @@
var outsourceProcessAmount = 0;
var actualOutsourceAmount = 0;
var outsourceRequisition = [[${outsourceRequisition}]];
var originMaterial = []
var originMaterial = [];
var levelDatas = [[${@dict.getType('bomLevel')}]];
var processMethodDatas = [[${@dict.getType('processMethod')}]];
var materialTypeDatas = [[${@category.getChildByCode('materialType')}]];
$(function() {
originMaterial = outsourceRequisition.outsourceRequisitionDetailList;
@ -102,6 +102,7 @@
// console.log(outsourceOrderList[0].outsourceOrderNo);
var materialObj = {
outsourceRequisitionNo: material.outsourceRequisitionNo,
outsourceRequisitionDetailId: material.outsourceRequisitionDetailId,
materialNo: material.materialNo,
materialPhotourl: material.materialPhotourl,
materialName: material.materialName,
@ -121,7 +122,7 @@
tables(materialTable, materialData);
var $MaterialNumDiv =
$('<div class="row" style="margin-top: 20px;margin-left: 10px;">' +
$('<div class="row" style="margin-top: 5px;margin-left: 10px;">' +
'<div class="col-xs-12">' +
'<h3>' +
'<span><strong>供应商</strong></span>' +
@ -192,6 +193,7 @@
});
function tables(tableId, data) {
var childTableId = 'childTable_' + tableId;
$('#' + tableId).bootstrapTable({
showExport: false,
showFooter: false,
@ -199,10 +201,18 @@
showRefresh: false,
showColumns: false,
showToggle: false,
height: 200,
detailView: true,
onExpandRow : function(index,row,$detail){
$detail.html('<table class="table-container" id="'+childTableId+'"></table>').find('table');
initChildTable(index,row,$detail,childTableId);
},
data: data,
columns: [
{title: '详情id', field: 'outsourceRequisitionDetailId',},
{title: '料号', field: 'materialNo'},
{title: '图片', field: 'materialPhotourl', formatter: function (value, row, index) {
{title: '图片', field: 'materialPhotourl',
formatter: function (value, row, index) {
return $.table.imageView(value);
}
},
@ -210,15 +220,81 @@
{title: '物料描述', field: 'description'},
{title: '品牌', field: 'brand'},
{title: '单位', field: 'unit', align: 'center', },
{title: '加工方式', field: 'processMethod', align: 'center',},
{title: '加工方式', field: 'processMethod', align: 'center',
formatter: function (value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
}
},
{title: '计划委外数', field: 'plannedOutsourceAmount'},
{title: '实际委外数', field: 'actualOutsourceAmount'},
{title: '已委外领料数', field: 'alreadyRequisitionAmount'},
{title: '本次领料数', field: 'nowRequisitionAmount',
},
],
});
$("#"+tableId).bootstrapTable('expandRow', 0);
}
initChildTable = function(index, row, $detail,childTableId) {
var parentRow = row;
$("#"+childTableId).bootstrapTable({
url: prefix + "/getRequisitionMaterial",
method: 'post',
id: childTableId,
sidePagination: "server",
contentType: "application/x-www-form-urlencoded",
queryParams : {
parentId: parentRow.outsourceRequisitionDetailId
},
columns: [
{
title: '阶层',
field: 'level',
formatter: function(value, row, index) {
return $.table.selectDictLabel(levelDatas, value);
}
},
{title: '料号', field: 'materialNo'},
{title: '图片', field: 'materialPhotourl', formatter: function (value, row, index) {
return $.table.imageView(value);
}
},
{title: '物料类型',field: 'materialType',
formatter: function(value, row, index) {
return $.table.selectCategoryLabel(materialTypeDatas, value);
}
},
{title: '物料名称', field: 'materialName'},
{title: '物料描述', field: 'description'},
{title: '品牌', field: 'brand'},
{title: '单位', field: 'unit', align: 'center', },
{title: '加工方式', field: 'processMethod', align: 'center',
formatter: function (value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
}
},
{title: '计划委外数', field: 'plannedOutsourceAmount',
formatter: function (value, row, index) {
if(value === null || value === ''||value === undefined){
value = parentRow.plannedOutsourceAmount;
}
return value;
}
},
{title: '实际委外数', field: 'actualOutsourceAmount',
formatter: function (value, row, index) {
if(value === null || value === ''||value === undefined){
value = parentRow.actualOutsourceAmount;
}
return value;
}
},
{title: '已委外领料数', field: 'takenMaterial'},
{
title: '本次领料数',
field: 'takingMaterial',
},
],
});
};
// 函数用于合并重复的material的记录
function mergeRecords(items) {
return items.reduce((merged, current) => {
@ -227,6 +303,7 @@
if (!existingRecord.processList) {
existingRecord.processList = [];
}
existingRecord.outsourceRequisitionDetailId = current.outsourceRequisitionDetailId;
existingRecord.processList.push({
outsourceProcessInfo: current.outsourceProcessInfo,
chargeUnitInfo: current.chargeUnitInfo,
@ -237,6 +314,7 @@
} else {
merged.push({
outsourceRequisitionNo: current.outsourceRequisitionNo,
outsourceRequisitionDetailId: current.outsourceRequisitionDetailId,
materialNo: current.materialNo,
materialPhotourl: current.materialPhotourl,
materialName: current.materialName,

14
ruoyi-admin/src/main/resources/templates/system/outsource_requisition/outsource_requisition.html

@ -216,17 +216,19 @@
var todoUserIdList = row.todoUserId.split(",");
if (todoUserIdList.includes(loginName) || loginName == 'admin') {
var nodeName = row.taskName == '驳回调整' ? ' 调整申请' : ' 审批';
actions.push('<a class="btn btn-success btn-xs" href="javascript:void(0)" onclick="showVerifyDialog(\'' + prefix + '\',\'' + row.taskId + '\', \'' + row.taskName + "-" + "申请" + '\')"><i class="fa fa-edit"></i> ' + nodeName + '</a> ');
actions.push('<a href="javascript:void(0)" onclick="showVerifyDialog(\'' + prefix + '\',\'' + row.taskId + '\', \'' + row.taskName + "-" + "申请" + '\')"><i class="fa fa-edit"></i> ' + nodeName + '</a> ');
}
}
// 审批历史
actions.push('<a class="btn btn-warning btn-xs" href="javascript:void(0)" onclick="showHistoryDialog(\'' + row.instanceId + '\')"><i class="fa fa-list"></i> 审批历史</a> ');
actions.push('<a href="javascript:void(0)" onclick="showHistoryDialog(\'' + row.instanceId + '\')"><i class="fa fa-list"></i> 审批历史</a> ');
// 进度查看
actions.push('<a class="btn btn-info btn-xs" href="javascript:void(0)" onclick="showProcessImgDialog(\'' + row.instanceId + '\')"><i class="fa fa-image"></i> 进度</a> ');
actions.push('<a href="javascript:void(0)" onclick="showProcessImgDialog(\'' + row.instanceId + '\')"><i class="fa fa-image"></i> 进度</a> ');
}
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.outsourceRequisitionId + '\')"><i class="fa fa-edit"></i> 编辑</a> ');
actions.push('<a class="btn btn-info btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="$.operate.detail(\'' + row.outsourceRequisitionId + '\')"><i class="fa fa-eye"></i>详情</a>');
return actions.join('');
// actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.outsourceRequisitionId + '\')"><i class="fa fa-edit"></i> 编辑</a> ');
actions.push('<a class="' + detailFlag + '" href="javascript:void(0)" onclick="$.operate.detail(\'' + row.outsourceRequisitionId + '\')"><i class="fa fa-eye"></i>详情</a>');
var actionLinks = actions.join('');
return $.table.dropdownToggle(actionLinks);
}
}],
rowStyle: function (row, index) {

98
ruoyi-admin/src/main/resources/templates/system/outsource_requisition/taskWwjlVerify.html

@ -6,9 +6,6 @@
<th:block th:include="include :: summernote-css" />
</head>
<style>
.col-sm-12.material-table{
height: 75px;
}
.hr-line-dashed {
border-top: 1px dashed #ddd;
margin-top: 20px; /* 调整间距 */
@ -110,7 +107,10 @@
var outsourceProcessAmount = 0;
var actualOutsourceAmount = 0;
var outsourceRequisition = [[${formData}]];
var originMaterial = []
var originMaterial = [];
var levelDatas = [[${@dict.getType('bomLevel')}]];
var processMethodDatas = [[${@dict.getType('processMethod')}]];
var materialTypeDatas = [[${@category.getChildByCode('materialType')}]];
function submitHandler() {
if ($.validate.form()) {
@ -157,6 +157,7 @@
// console.log(outsourceOrderList[0].outsourceOrderNo);
var materialObj = {
outsourceRequisitionNo: material.outsourceRequisitionNo,
outsourceRequisitionDetailId: material.outsourceRequisitionDetailId,
materialNo: material.materialNo,
materialPhotourl: material.materialPhotourl,
materialName: material.materialName,
@ -176,7 +177,7 @@
tables(materialTable, materialData);
var $MaterialNumDiv =
$('<div class="row" style="margin-top: 20px;margin-left: 10px;">' +
$('<div class="row" style="margin-top: 5px;margin-left: 10px;">' +
'<div class="col-xs-12">' +
'<h3>' +
'<span><strong>供应商</strong></span>' +
@ -247,6 +248,7 @@
});
function tables(tableId, data) {
var childTableId = 'childTable_' + tableId;
$('#' + tableId).bootstrapTable({
showExport: false,
showFooter: false,
@ -254,10 +256,18 @@
showRefresh: false,
showColumns: false,
showToggle: false,
height: 200,
detailView: true,
onExpandRow : function(index,row,$detail){
$detail.html('<table class="table-container" id="'+childTableId+'"></table>').find('table');
initChildTable(index,row,$detail,childTableId);
},
data: data,
columns: [
{title: '详情id', field: 'outsourceRequisitionDetailId',},
{title: '料号', field: 'materialNo'},
{title: '图片', field: 'materialPhotourl', formatter: function (value, row, index) {
{title: '图片', field: 'materialPhotourl',
formatter: function (value, row, index) {
return $.table.imageView(value);
}
},
@ -265,15 +275,81 @@
{title: '物料描述', field: 'description'},
{title: '品牌', field: 'brand'},
{title: '单位', field: 'unit', align: 'center', },
{title: '加工方式', field: 'processMethod', align: 'center',},
{title: '加工方式', field: 'processMethod', align: 'center',
formatter: function (value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
}
},
{title: '计划委外数', field: 'plannedOutsourceAmount'},
{title: '实际委外数', field: 'actualOutsourceAmount'},
{title: '已委外领料数', field: 'alreadyRequisitionAmount'},
{title: '本次领料数', field: 'nowRequisitionAmount',
},
],
});
$("#"+tableId).bootstrapTable('expandRow', 0);
}
initChildTable = function(index, row, $detail,childTableId) {
var parentRow = row;
$("#"+childTableId).bootstrapTable({
url: prefix + "/getRequisitionMaterial",
method: 'post',
id: childTableId,
sidePagination: "server",
contentType: "application/x-www-form-urlencoded",
queryParams : {
parentId: parentRow.outsourceRequisitionDetailId
},
columns: [
{
title: '阶层',
field: 'level',
formatter: function(value, row, index) {
return $.table.selectDictLabel(levelDatas, value);
}
},
{title: '料号', field: 'materialNo'},
{title: '图片', field: 'materialPhotourl', formatter: function (value, row, index) {
return $.table.imageView(value);
}
},
{title: '物料类型',field: 'materialType',
formatter: function(value, row, index) {
return $.table.selectCategoryLabel(materialTypeDatas, value);
}
},
{title: '物料名称', field: 'materialName'},
{title: '物料描述', field: 'description'},
{title: '品牌', field: 'brand'},
{title: '单位', field: 'unit', align: 'center', },
{title: '加工方式', field: 'processMethod', align: 'center',
formatter: function (value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
}
},
{title: '计划委外数', field: 'plannedOutsourceAmount',
formatter: function (value, row, index) {
if(value === null || value === ''||value === undefined){
value = parentRow.plannedOutsourceAmount;
}
return value;
}
},
{title: '实际委外数', field: 'actualOutsourceAmount',
formatter: function (value, row, index) {
if(value === null || value === ''||value === undefined){
value = parentRow.actualOutsourceAmount;
}
return value;
}
},
{title: '已委外领料数', field: 'takenMaterial'},
{
title: '本次领料数',
field: 'takingMaterial',
},
],
});
};
// 函数用于合并重复的material的记录
function mergeRecords(items) {
return items.reduce((merged, current) => {
@ -282,6 +358,7 @@
if (!existingRecord.processList) {
existingRecord.processList = [];
}
existingRecord.outsourceRequisitionDetailId = current.outsourceRequisitionDetailId;
existingRecord.processList.push({
outsourceProcessInfo: current.outsourceProcessInfo,
chargeUnitInfo: current.chargeUnitInfo,
@ -292,6 +369,7 @@
} else {
merged.push({
outsourceRequisitionNo: current.outsourceRequisitionNo,
outsourceRequisitionDetailId: current.outsourceRequisitionDetailId,
materialNo: current.materialNo,
materialPhotourl: current.materialPhotourl,
materialName: current.materialName,

104
ruoyi-admin/src/main/resources/templates/system/outsource_requisition/taskWwzgVerify.html

@ -1,14 +1,14 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('委外经理审核委外领料单')" />
<th:block th:include="include :: header('委外主管审核委外领料单')" />
<th:block th:include="include :: datetimepicker-css" />
<th:block th:include="include :: summernote-css" />
</head>
<style>
.col-sm-12.material-table{
height: 75px;
}
/*.col-sm-12.material-table{*/
/* height: 75px;*/
/*}*/
.hr-line-dashed {
border-top: 1px dashed #ddd;
margin-top: 20px; /* 调整间距 */
@ -111,6 +111,10 @@
var actualOutsourceAmount = 0;
var outsourceRequisition = [[${formData}]];
var originMaterial = [];
var originMaterial = [];
var levelDatas = [[${@dict.getType('bomLevel')}]];
var processMethodDatas = [[${@dict.getType('processMethod')}]];
var materialTypeDatas = [[${@category.getChildByCode('materialType')}]];
function submitHandler() {
if ($.validate.form()) {
@ -156,6 +160,7 @@
// console.log(outsourceOrderList[0].outsourceOrderNo);
var materialObj = {
outsourceRequisitionNo: material.outsourceRequisitionNo,
outsourceRequisitionDetailId: material.outsourceRequisitionDetailId,
materialNo: material.materialNo,
materialPhotourl: material.materialPhotourl,
materialName: material.materialName,
@ -175,7 +180,7 @@
tables(materialTable, materialData);
var $MaterialNumDiv =
$('<div class="row" style="margin-top: 20px;margin-left: 10px;">' +
$('<div class="row" style="margin-top: 5px;margin-left: 10px;">' +
'<div class="col-xs-12">' +
'<h3>' +
'<span><strong>供应商</strong></span>' +
@ -246,6 +251,7 @@
});
function tables(tableId, data) {
var childTableId = 'childTable_' + tableId;
$('#' + tableId).bootstrapTable({
showExport: false,
showFooter: false,
@ -253,10 +259,18 @@
showRefresh: false,
showColumns: false,
showToggle: false,
height: 200,
detailView: true,
onExpandRow : function(index,row,$detail){
$detail.html('<table class="table-container" id="'+childTableId+'"></table>').find('table');
initChildTable(index,row,$detail,childTableId);
},
data: data,
columns: [
{title: '详情id', field: 'outsourceRequisitionDetailId',},
{title: '料号', field: 'materialNo'},
{title: '图片', field: 'materialPhotourl', formatter: function (value, row, index) {
{title: '图片', field: 'materialPhotourl',
formatter: function (value, row, index) {
return $.table.imageView(value);
}
},
@ -264,15 +278,81 @@
{title: '物料描述', field: 'description'},
{title: '品牌', field: 'brand'},
{title: '单位', field: 'unit', align: 'center', },
{title: '加工方式', field: 'processMethod', align: 'center',},
{title: '加工方式', field: 'processMethod', align: 'center',
formatter: function (value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
}
},
{title: '计划委外数', field: 'plannedOutsourceAmount'},
{title: '实际委外数', field: 'actualOutsourceAmount'},
{title: '已委外领料数', field: 'alreadyRequisitionAmount'},
{title: '本次领料数', field: 'nowRequisitionAmount',
},
],
});
$("#"+tableId).bootstrapTable('expandRow', 0);
}
initChildTable = function(index, row, $detail,childTableId) {
var parentRow = row;
$("#"+childTableId).bootstrapTable({
url: prefix + "/getRequisitionMaterial",
method: 'post',
id: childTableId,
sidePagination: "server",
contentType: "application/x-www-form-urlencoded",
queryParams : {
parentId: parentRow.outsourceRequisitionDetailId
},
columns: [
{
title: '阶层',
field: 'level',
formatter: function(value, row, index) {
return $.table.selectDictLabel(levelDatas, value);
}
},
{title: '料号', field: 'materialNo'},
{title: '图片', field: 'materialPhotourl', formatter: function (value, row, index) {
return $.table.imageView(value);
}
},
{title: '物料类型',field: 'materialType',
formatter: function(value, row, index) {
return $.table.selectCategoryLabel(materialTypeDatas, value);
}
},
{title: '物料名称', field: 'materialName'},
{title: '物料描述', field: 'description'},
{title: '品牌', field: 'brand'},
{title: '单位', field: 'unit', align: 'center', },
{title: '加工方式', field: 'processMethod', align: 'center',
formatter: function (value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
}
},
{title: '计划委外数', field: 'plannedOutsourceAmount',
formatter: function (value, row, index) {
if(value === null || value === ''||value === undefined){
value = parentRow.plannedOutsourceAmount;
}
return value;
}
},
{title: '实际委外数', field: 'actualOutsourceAmount',
formatter: function (value, row, index) {
if(value === null || value === ''||value === undefined){
value = parentRow.actualOutsourceAmount;
}
return value;
}
},
{title: '已委外领料数', field: 'takenMaterial'},
{
title: '本次领料数',
field: 'takingMaterial',
},
],
});
};
// 函数用于合并重复的material的记录
function mergeRecords(items) {
return items.reduce((merged, current) => {
@ -280,7 +360,8 @@
if (existingRecord) {
if (!existingRecord.processList) {
existingRecord.processList = [];
}
};
existingRecord.outsourceRequisitionDetailId = current.outsourceRequisitionDetailId;
existingRecord.processList.push({
outsourceProcessInfo: current.outsourceProcessInfo,
chargeUnitInfo: current.chargeUnitInfo,
@ -291,6 +372,7 @@
} else {
merged.push({
outsourceRequisitionNo: current.outsourceRequisitionNo,
outsourceRequisitionDetailId: current.outsourceRequisitionDetailId,
materialNo: current.materialNo,
materialPhotourl: current.materialPhotourl,
materialName: current.materialName,

Loading…
Cancel
Save