Compare commits

...

3 Commits

Author SHA1 Message Date
王晓迪 95ed223784 [feat] 1 month ago
王晓迪 cade08d55d [feat] 1 month ago
王晓迪 49d34307b4 [feat] 1 month ago
  1. 24
      ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingCheckout.java
  2. 42
      ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingCheckoutMaterial.java
  3. 69
      ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingMaterialProcess.java
  4. 12
      ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingUnqualifiedClass.java
  5. 56
      ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityManufacturingCheckoutServiceImpl.java
  6. 19
      ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingMaterialProcessMapper.xml
  7. 6
      ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingUnqualifiedClassMapper.xml
  8. 121
      ruoyi-admin/src/main/resources/templates/quality/manufacturingCheckout/add.html
  9. 145
      ruoyi-admin/src/main/resources/templates/quality/manufacturingCheckout/checkoutReport.html

24
ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingCheckout.java

@ -45,19 +45,19 @@ public class QualityManufacturingCheckout extends BaseEntity
/** 物料数合计 */
@Excel(name = "物料数合计")
private String materialTotal;
private int materialTotal;
/** 数量合计 */
@Excel(name = "数量合计")
private String numTotal;
private int numTotal;
/** 制程工序合格数 */
@Excel(name = "制程工序合格数")
private String processQualifiedNum;
private int processQualifiedNum;
/** 制程工序不合格数 */
@Excel(name = "制程工序不合格数")
private String processUnqualifiedNum;
private int processUnqualifiedNum;
/** 制程工序编号 */
private String manufacturingProcessCode;
@ -122,39 +122,39 @@ public class QualityManufacturingCheckout extends BaseEntity
{
return materialName;
}
public void setMaterialTotal(String materialTotal)
public void setMaterialTotal(int materialTotal)
{
this.materialTotal = materialTotal;
}
public String getMaterialTotal()
public int getMaterialTotal()
{
return materialTotal;
}
public void setNumTotal(String numTotal)
public void setNumTotal(int numTotal)
{
this.numTotal = numTotal;
}
public String getNumTotal()
public int getNumTotal()
{
return numTotal;
}
public void setProcessQualifiedNum(String processQualifiedNum)
public void setProcessQualifiedNum(int processQualifiedNum)
{
this.processQualifiedNum = processQualifiedNum;
}
public String getProcessQualifiedNum()
public int getProcessQualifiedNum()
{
return processQualifiedNum;
}
public void setProcessUnqualifiedNum(String processUnqualifiedNum)
public void setProcessUnqualifiedNum(int processUnqualifiedNum)
{
this.processUnqualifiedNum = processUnqualifiedNum;
}
public String getProcessUnqualifiedNum()
public int getProcessUnqualifiedNum()
{
return processUnqualifiedNum;
}

42
ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingCheckoutMaterial.java

@ -1,6 +1,8 @@
package com.ruoyi.quality.domain;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@ -67,23 +69,23 @@ public class QualityManufacturingCheckoutMaterial extends BaseEntity
/** 生产订单数 */
@Excel(name = "生产订单数")
private String makeTotal;
private int makeTotal;
/** 已检验数 */
@Excel(name = "已检验数")
private String checkedNum;
private int checkedNum;
/** 本次检验数 */
@Excel(name = "本次检验数")
private String currentCheckoutNum;
private int currentCheckoutNum;
/** 工序合格数 */
@Excel(name = "工序合格数")
private String processQualifiedNum;
private int processQualifiedNum;
/** 工序不合格数 */
@Excel(name = "工序不合格数")
private String processUnqualifiedNum;
private int processUnqualifiedNum;
/** 制程工序编号 */
@Excel(name = "制程工序编号")
@ -98,6 +100,8 @@ public class QualityManufacturingCheckoutMaterial extends BaseEntity
@Excel(name = "检验完成时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date checkoutCompletionTime;
List<QualityManufacturingMaterialProcess> materialProcessList;
public void setManufacturingCheckoutMaterialId(Long manufacturingCheckoutMaterialId)
{
this.manufacturingCheckoutMaterialId = manufacturingCheckoutMaterialId;
@ -206,48 +210,48 @@ public class QualityManufacturingCheckoutMaterial extends BaseEntity
{
return materialProcessMethod;
}
public void setMakeTotal(String makeTotal)
public void setMakeTotal(int makeTotal)
{
this.makeTotal = makeTotal;
}
public String getMakeTotal()
public int getMakeTotal()
{
return makeTotal;
}
public void setCheckedNum(String checkedNum)
public void setCheckedNum(int checkedNum)
{
this.checkedNum = checkedNum;
}
public String getCheckedNum()
public int getCheckedNum()
{
return checkedNum;
}
public void setCurrentCheckoutNum(String currentCheckoutNum)
public void setCurrentCheckoutNum(int currentCheckoutNum)
{
this.currentCheckoutNum = currentCheckoutNum;
}
public String getCurrentCheckoutNum()
public int getCurrentCheckoutNum()
{
return currentCheckoutNum;
}
public void setProcessQualifiedNum(String processQualifiedNum)
public void setProcessQualifiedNum(int processQualifiedNum)
{
this.processQualifiedNum = processQualifiedNum;
}
public String getProcessQualifiedNum()
public int getProcessQualifiedNum()
{
return processQualifiedNum;
}
public void setProcessUnqualifiedNum(String processUnqualifiedNum)
public void setProcessUnqualifiedNum(int processUnqualifiedNum)
{
this.processUnqualifiedNum = processUnqualifiedNum;
}
public String getProcessUnqualifiedNum()
public int getProcessUnqualifiedNum()
{
return processUnqualifiedNum;
}
@ -279,6 +283,14 @@ public class QualityManufacturingCheckoutMaterial extends BaseEntity
return checkoutCompletionTime;
}
public List<QualityManufacturingMaterialProcess> getMaterialProcessList() {
return materialProcessList;
}
public void setMaterialProcessList(List<QualityManufacturingMaterialProcess> materialProcessList) {
this.materialProcessList = materialProcessList;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

69
ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingMaterialProcess.java

@ -5,6 +5,8 @@ import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.List;
/**
* 品质管理制程检验物料生产工序对象 quality_manufacturing_material_process
*
@ -18,6 +20,10 @@ public class QualityManufacturingMaterialProcess extends BaseEntity
/** 物料生产工序Id */
private Long manufacturingMaterialProcessId;
/** 制程检验单号 */
@Excel(name = "制程检验单号")
private String manufacturingCheckoutCode;
/** 料号 */
@Excel(name = "料号")
private String materialNo;
@ -56,11 +62,54 @@ public class QualityManufacturingMaterialProcess extends BaseEntity
/** OK允收数 */
@Excel(name = "OK允收数")
private String okAcceptedNum;
private int okAcceptedNum;
/** 特采/让步数 */
@Excel(name = "特采/让步数")
private String specialConcessionsNum;
private int specialConcessionsNum;
/** OK允收报告 */
private String okAcceptedPhotourl;
/** 特采/让步报告 */
private String specialConcessionsPhotourl;
// 工序检验项目
private String processInspectionItem;
private List<QualityManufacturingUnqualifiedClass> unqualifiedClassList;
public String getManufacturingCheckoutCode() {
return manufacturingCheckoutCode;
}
public void setManufacturingCheckoutCode(String manufacturingCheckoutCode) {
this.manufacturingCheckoutCode = manufacturingCheckoutCode;
}
public String getOkAcceptedPhotourl() {
return okAcceptedPhotourl;
}
public void setOkAcceptedPhotourl(String okAcceptedPhotourl) {
this.okAcceptedPhotourl = okAcceptedPhotourl;
}
public String getSpecialConcessionsPhotourl() {
return specialConcessionsPhotourl;
}
public void setSpecialConcessionsPhotourl(String specialConcessionsPhotourl) {
this.specialConcessionsPhotourl = specialConcessionsPhotourl;
}
public String getProcessInspectionItem() {
return processInspectionItem;
}
public void setProcessInspectionItem(String processInspectionItem) {
this.processInspectionItem = processInspectionItem;
}
public void setManufacturingMaterialProcessId(Long manufacturingMaterialProcessId)
{
@ -152,25 +201,33 @@ public class QualityManufacturingMaterialProcess extends BaseEntity
{
return modName;
}
public void setOkAcceptedNum(String okAcceptedNum)
public void setOkAcceptedNum(int okAcceptedNum)
{
this.okAcceptedNum = okAcceptedNum;
}
public String getOkAcceptedNum()
public int getOkAcceptedNum()
{
return okAcceptedNum;
}
public void setSpecialConcessionsNum(String specialConcessionsNum)
public void setSpecialConcessionsNum(int specialConcessionsNum)
{
this.specialConcessionsNum = specialConcessionsNum;
}
public String getSpecialConcessionsNum()
public int getSpecialConcessionsNum()
{
return specialConcessionsNum;
}
public List<QualityManufacturingUnqualifiedClass> getUnqualifiedClassList() {
return unqualifiedClassList;
}
public void setUnqualifiedClassList(List<QualityManufacturingUnqualifiedClass> unqualifiedClassList) {
this.unqualifiedClassList = unqualifiedClassList;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

12
ruoyi-admin/src/main/java/com/ruoyi/quality/domain/QualityManufacturingUnqualifiedClass.java

@ -18,6 +18,10 @@ public class QualityManufacturingUnqualifiedClass extends BaseEntity
/** 工序不合格分类Id */
private Long manufacturingUnqualifiedClassId;
/** 制程检验单号 */
@Excel(name = "制程检验单号")
private String manufacturingCheckoutCode;
/** 制程工序编号 */
@Excel(name = "制程工序编号")
private String manufacturingProcessCode;
@ -93,6 +97,14 @@ public class QualityManufacturingUnqualifiedClass extends BaseEntity
return processBadNum;
}
public String getManufacturingCheckoutCode() {
return manufacturingCheckoutCode;
}
public void setManufacturingCheckoutCode(String manufacturingCheckoutCode) {
this.manufacturingCheckoutCode = manufacturingCheckoutCode;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

56
ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityManufacturingCheckoutServiceImpl.java

@ -12,11 +12,9 @@ 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.quality.domain.QualityManufacturingCheckoutMaterial;
import com.ruoyi.quality.domain.QualityManufacturingProcess;
import com.ruoyi.quality.domain.*;
import com.ruoyi.quality.domain.VO.CheckoutMaterialVO;
import com.ruoyi.quality.mapper.QualityManufacturingCheckoutMaterialMapper;
import com.ruoyi.quality.mapper.QualityManufacturingProcessMapper;
import com.ruoyi.quality.mapper.*;
import com.ruoyi.system.domain.SysMakeOrder;
import com.ruoyi.system.domain.SysMakeorderBom;
import com.ruoyi.system.domain.SysSalesOrderChild;
@ -26,8 +24,6 @@ import com.ruoyi.system.mapper.SysSalesOrderChildMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.quality.mapper.QualityManufacturingCheckoutMapper;
import com.ruoyi.quality.domain.QualityManufacturingCheckout;
import com.ruoyi.quality.service.IQualityManufacturingCheckoutService;
import com.ruoyi.common.core.text.Convert;
import org.springframework.transaction.annotation.Transactional;
@ -59,6 +55,13 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact
@Autowired
private SysSalesOrderChildMapper sysSalesOrderChildMapper;
@Autowired
private QualityManufacturingMaterialProcessMapper materialProcessMapper;
@Autowired
private QualityManufacturingUnqualifiedClassMapper unqualifiedClassMapper;
/**
* 查询品质管理制程检验
*
@ -96,7 +99,7 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact
String loginName = ShiroUtils.getLoginName();
//格式化日期格式
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String formatDate = df.format(new Date());
String formatDate = df.format(DateUtils.getNowDate());
//去除多余的 - 时间格式转换为yyyyMMdd
String prefix = "ZCJY" +formatDate.replace("-", "");
@ -104,21 +107,54 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact
//查询数据库中当前最大的编号
String maxCode = qualityManufacturingCheckoutMapper.findMaxRoundCode(prefix);
String newCode = generateNewCode(prefix, maxCode);
int numTotal = 0;
int processQualifiedNum = 0;
int processUnqualifiedNum = 0;
qualityManufacturingCheckout.setManufacturingCheckoutCode(newCode);
List<QualityManufacturingCheckoutMaterial> checkoutMaterialList = qualityManufacturingCheckout.getCheckoutMaterialList();
if (StringUtils.isEmpty(checkoutMaterialList)){
log.warn("与生产订单号有关的物料数据为空:{}",qualityManufacturingCheckout.getCheckoutMaterialList());
}
for (QualityManufacturingCheckoutMaterial qualityManufacturingCheckoutMaterial : checkoutMaterialList) {
numTotal += qualityManufacturingCheckoutMaterial.getCurrentCheckoutNum();
processQualifiedNum += qualityManufacturingCheckoutMaterial.getProcessQualifiedNum();
processUnqualifiedNum += qualityManufacturingCheckoutMaterial.getProcessUnqualifiedNum();
qualityManufacturingCheckoutMaterial.setMakeNo(qualityManufacturingCheckout.getMakeNo());
qualityManufacturingCheckoutMaterial.setManufacturingCheckoutCode(newCode);
qualityManufacturingCheckoutMaterial.setCreateBy(loginName);
qualityManufacturingCheckoutMaterial.setCreateTime(new Date());
qualityManufacturingCheckoutMaterial.setCreateTime(DateUtils.getNowDate());
qualityManufacturingCheckoutMaterial.setCheckoutTime(qualityManufacturingCheckout.getCheckoutTime());
List<QualityManufacturingMaterialProcess> materialProcessList = qualityManufacturingCheckoutMaterial.getMaterialProcessList();
if (StringUtils.isEmpty(materialProcessList)){
log.warn("与生产订单号有关的物料数据为空:{}",qualityManufacturingCheckout.getCheckoutMaterialList());
}else{
for (QualityManufacturingMaterialProcess process:materialProcessList) {
process.setManufacturingCheckoutCode(newCode);
process.setCreateBy(loginName);
process.setCreateTime(DateUtils.getNowDate());
List<QualityManufacturingUnqualifiedClass> unqualifiedClassList = process.getUnqualifiedClassList();
if (StringUtils.isEmpty(unqualifiedClassList)){
log.warn("与生产订单号有关的物料数据为空:{}",qualityManufacturingCheckout.getCheckoutMaterialList());
}else{
for (QualityManufacturingUnqualifiedClass unqualified:unqualifiedClassList) {
unqualified.setManufacturingCheckoutCode(newCode);
unqualified.setManufacturingProcessCode(process.getManufacturingProcessCode());
unqualified.setManufacturingProcessName(process.getManufacturingProcessName());
unqualified.setCreateBy(loginName);
unqualified.setCreateTime(DateUtils.getNowDate());
unqualifiedClassMapper.insertQualityManufacturingUnqualifiedClass(unqualified);
}
}
materialProcessMapper.insertQualityManufacturingMaterialProcess(process);
}
}
checkoutMaterialMapper.insertQualityManufacturingCheckoutMaterial(qualityManufacturingCheckoutMaterial);
}
qualityManufacturingCheckout.setMaterialTotal(checkoutMaterialList.size());
qualityManufacturingCheckout.setNumTotal(numTotal);
qualityManufacturingCheckout.setProcessQualifiedNum(processQualifiedNum);
qualityManufacturingCheckout.setProcessUnqualifiedNum(processUnqualifiedNum);
qualityManufacturingCheckout.setCreateBy(loginName);
qualityManufacturingCheckout.setCreateTime(DateUtils.getNowDate());
return qualityManufacturingCheckoutMapper.insertQualityManufacturingCheckout(qualityManufacturingCheckout);
@ -277,7 +313,7 @@ public class QualityManufacturingCheckoutServiceImpl implements IQualityManufact
checkoutMaterial.setMaterialNo(materialNo);
checkoutMaterial.setMaterialName(sysSalesOrderChild.getMaterialName());
checkoutMaterial.setMakeTotal(sysSalesOrderChild.getMaterialNum().toString());
checkoutMaterial.setMakeTotal(sysSalesOrderChild.getMaterialNum());
return checkoutMaterial;
}

19
ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingMaterialProcessMapper.xml

@ -6,6 +6,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="QualityManufacturingMaterialProcess" id="QualityManufacturingMaterialProcessResult">
<result property="manufacturingMaterialProcessId" column="manufacturing_material_process_id" />
<result property="manufacturingCheckoutCode" column="manufacturing_checkout_code" />
<result property="materialNo" column="material_no" />
<result property="materialName" column="material_name" />
<result property="manufacturingProcessCode" column="manufacturing_process_code" />
@ -22,10 +23,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="okAcceptedPhotourl" column="ok_accepted_photourl" />
<result property="specialConcessionsPhotourl" column="special_concessions_photourl" />
<result property="processInspectionItem" column="process_inspection_item" />
</resultMap>
<sql id="selectQualityManufacturingMaterialProcessVo">
select manufacturing_material_process_id, material_no, material_name, manufacturing_process_code, manufacturing_process_name, device_name, device_model_code, process_sequence, workshop_name, mod_name, ok_accepted_num, special_concessions_num, remark, create_by, create_time, update_by, update_time from quality_manufacturing_material_process
select manufacturing_material_process_id, manufacturing_checkout_code, material_no, material_name, manufacturing_process_code, manufacturing_process_name, device_name, device_model_code, process_sequence, workshop_name, mod_name, ok_accepted_num, special_concessions_num, remark, create_by, create_time, update_by, update_time, ok_accepted_photourl, special_concessions_photourl, process_inspection_item from quality_manufacturing_material_process
</sql>
<select id="selectQualityManufacturingMaterialProcessList" parameterType="QualityManufacturingMaterialProcess" resultMap="QualityManufacturingMaterialProcessResult">
@ -42,6 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<insert id="insertQualityManufacturingMaterialProcess" parameterType="QualityManufacturingMaterialProcess" useGeneratedKeys="true" keyProperty="manufacturingMaterialProcessId">
insert into quality_manufacturing_material_process
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="manufacturingCheckoutCode != null">manufacturing_checkout_code,</if>
<if test="materialNo != null">material_no,</if>
<if test="materialName != null">material_name,</if>
<if test="manufacturingProcessCode != null">manufacturing_process_code,</if>
@ -58,8 +64,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="okAcceptedPhotourl != null">ok_accepted_photourl,</if>
<if test="specialConcessionsPhotourl != null">special_concessions_photourl,</if>
<if test="processInspectionItem != null">process_inspection_item,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="manufacturingCheckoutCode != null">#{manufacturingCheckoutCode},</if>
<if test="materialNo != null">#{materialNo},</if>
<if test="materialName != null">#{materialName},</if>
<if test="manufacturingProcessCode != null">#{manufacturingProcessCode},</if>
@ -76,12 +86,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="okAcceptedPhotourl != null">#{okAcceptedPhotourl},</if>
<if test="specialConcessionsPhotourl != null">#{specialConcessionsPhotourl},</if>
<if test="processInspectionItem != null">#{processInspectionItem},</if>
</trim>
</insert>
<update id="updateQualityManufacturingMaterialProcess" parameterType="QualityManufacturingMaterialProcess">
update quality_manufacturing_material_process
<trim prefix="SET" suffixOverrides=",">
<if test="manufacturingCheckoutCode != null">manufacturing_checkout_code = #{manufacturingCheckoutCode},</if>
<if test="materialNo != null">material_no = #{materialNo},</if>
<if test="materialName != null">material_name = #{materialName},</if>
<if test="manufacturingProcessCode != null">manufacturing_process_code = #{manufacturingProcessCode},</if>
@ -98,6 +112,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="okAcceptedPhotourl != null">ok_accepted_photourl = #{okAcceptedPhotourl},</if>
<if test="specialConcessionsPhotourl != null">special_concessions_photourl = #{specialConcessionsPhotourl},</if>
<if test="processInspectionItem != null">process_inspection_item = #{processInspectionItem},</if>
</trim>
where manufacturing_material_process_id = #{manufacturingMaterialProcessId}
</update>

6
ruoyi-admin/src/main/resources/mapper/quality/QualityManufacturingUnqualifiedClassMapper.xml

@ -6,6 +6,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="QualityManufacturingUnqualifiedClass" id="QualityManufacturingUnqualifiedClassResult">
<result property="manufacturingUnqualifiedClassId" column="manufacturing_unqualified_class_id" />
<result property="manufacturingCheckoutCode" column="manufacturing_checkout_code" />
<result property="manufacturingProcessCode" column="manufacturing_process_code" />
<result property="manufacturingProcessName" column="manufacturing_process_name" />
<result property="processBadClassification" column="process_bad_classification" />
@ -19,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectQualityManufacturingUnqualifiedClassVo">
select manufacturing_unqualified_class_id, manufacturing_process_code, manufacturing_process_name, process_bad_classification, process_bad_grade, process_bad_num, remark, create_by, create_time, update_by, update_time from quality_manufacturing_unqualified_class
select manufacturing_unqualified_class_id, manufacturing_checkout_code, manufacturing_process_code, manufacturing_process_name, process_bad_classification, process_bad_grade, process_bad_num, remark, create_by, create_time, update_by, update_time from quality_manufacturing_unqualified_class
</sql>
<select id="selectQualityManufacturingUnqualifiedClassList" parameterType="QualityManufacturingUnqualifiedClass" resultMap="QualityManufacturingUnqualifiedClassResult">
@ -36,6 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<insert id="insertQualityManufacturingUnqualifiedClass" parameterType="QualityManufacturingUnqualifiedClass" useGeneratedKeys="true" keyProperty="manufacturingUnqualifiedClassId">
insert into quality_manufacturing_unqualified_class
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="manufacturingCheckoutCode != null">manufacturing_checkout_code,</if>
<if test="manufacturingProcessCode != null">manufacturing_process_code,</if>
<if test="manufacturingProcessName != null">manufacturing_process_name,</if>
<if test="processBadClassification != null">process_bad_classification,</if>
@ -48,6 +50,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="manufacturingCheckoutCode != null">#{manufacturingCheckoutCode},</if>
<if test="manufacturingProcessCode != null">#{manufacturingProcessCode},</if>
<if test="manufacturingProcessName != null">#{manufacturingProcessName},</if>
<if test="processBadClassification != null">#{processBadClassification},</if>
@ -64,6 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<update id="updateQualityManufacturingUnqualifiedClass" parameterType="QualityManufacturingUnqualifiedClass">
update quality_manufacturing_unqualified_class
<trim prefix="SET" suffixOverrides=",">
<if test="manufacturingCheckoutCode != null">manufacturing_checkout_code = #{manufacturingCheckoutCode},</if>
<if test="manufacturingProcessCode != null">manufacturing_process_code = #{manufacturingProcessCode},</if>
<if test="manufacturingProcessName != null">manufacturing_process_name = #{manufacturingProcessName},</if>
<if test="processBadClassification != null">process_bad_classification = #{processBadClassification},</if>

121
ruoyi-admin/src/main/resources/templates/quality/manufacturingCheckout/add.html

@ -47,7 +47,10 @@
<!--用于可以修改列表字段的插件-->
<th:block th:include="include :: bootstrap-table-editable-js" />
<script th:inline="javascript">
var prefix = ctx + "quality/manufacturingCheckout"
var prefix = ctx + "quality/manufacturingCheckout";
var checkoutProcessList = [];
var materialProcessList = [];
var processMethodDatas = [[${@dict.getType('processMethod')}]];
$("#form-manufacturingCheckout-add").validate({
focusCleanup: true
});
@ -67,7 +70,7 @@
$.modal.alertWarning("请至少添加一条物料数据后再保存!");
return;
}
console.log(table);
// console.log(table);
// 将表数据转换成与complaintNoticeData格式一致的数组
var materialDataList = table.map(function(item) {
// 根据实际字段名调整
@ -79,6 +82,7 @@
"materialUnit": item.materialUnit,
"materialBrand": item.materialBrand,
"materialDescribe": item.materialDescribe,
"materialProcessMethod": item.materialProcessMethod,
"makeTotal": item.makeTotal,
"checkedNum": item.checkedNum,
"currentCheckoutNum": item.currentCheckoutNum,
@ -87,7 +91,14 @@
// ...其他字段
};
});
materialDataList.forEach(function(item) {
item.materialProcessList = [];
materialProcessList.forEach(function (process){
if(process.materialNo === item.materialNo){
item.materialProcessList.push(process);
}
})
});
const combinedData = Object.assign({}, manufacturingCheckoutData, { checkoutMaterialList: materialDataList });
// 合并表单数据和表格数据
console.log(combinedData)
@ -174,6 +185,9 @@
{
title: '物料加工方式',
field: 'materialProcessMethod',
formatter: function(value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
}
},
{
title: '订单数',
@ -255,12 +269,28 @@
materialBrand: rowData.materialBrand,
materialUnit: rowData.materialUnit,
materialProcessMethod: rowData.materialProcessMethod,
makeTotal:rowData.makeTotal
makeTotal:rowData.makeTotal,
currentCheckoutNum: ""
}
})
layer.close(index);
}
// 按料号查找更新表格数据
function updateRowByMaterialNo(materialNo, newData) {
// 获取所有行的数据
var rows = $('#bootstrap-table').bootstrapTable('getData');
for (var i = 0; i < rows.length; i++) {
if (rows[i].materialNo === materialNo) {
rows[i] = Object.assign({}, rows[i], newData); // 合并新旧数据
$('#bootstrap-table').bootstrapTable('updateRow', {
index: i,
row: rows[i]
});
}
}
}
// 逻辑删除前端的一行数据
function removeRow(materialNo){
$("#bootstrap-table").bootstrapTable('remove', {
@ -269,12 +299,93 @@
})
}
// 在父页面中定义处理函数
function handleCheckoutReportData(index, layero){
var iframeWin = window[layero.find('iframe')[0]['name']];
var processQualifiedNum = 0;
var processUnqualifiedNum = 0;
var materialNo = iframeWin.$('#form-checkoutReport-add').find('input[name="materialNo"]').val();
var materialName = iframeWin.$('#form-checkoutReport-add').find('input[name="materialName"]').val();
var uniqueIdString = iframeWin.$('#uniqueIdList').val();
var uniqueIdList = uniqueIdString.split(',');
console.log(uniqueIdList);
iframeWin.$('.container.bordered-container').each(function(index, tableElement) {
var tableId = uniqueIdList[index];
var $processTable = iframeWin.$('#bootstrap-manufacturingProcess-table-'+tableId);
var rows = $processTable.bootstrapTable('getData');
var manufacturingProcessCode = $processTable.find('select[name="manufacturingProcessCode"]').val();
var okAcceptedNum = iframeWin.$('#form-manfa-'+tableId).find('input[name="okAcceptedNum"]').val();
okAcceptedNum = Number(okAcceptedNum);
var specialConcessionsNum = iframeWin.$('#form-manfa-'+tableId).find('input[name="specialConcessionsNum"]').val();
specialConcessionsNum = Number(specialConcessionsNum);
if (!isNaN(processQualifiedNum) && !isNaN(okAcceptedNum) && !isNaN(specialConcessionsNum)) {
processQualifiedNum = processQualifiedNum + okAcceptedNum + specialConcessionsNum;
console.log(processQualifiedNum);
} else {
console.log("One or more variables is not a valid number.");
}
var materialProcess = {
materialNo: materialNo,
materialName: materialName,
manufacturingProcessCode: manufacturingProcessCode,
manufacturingProcessName: rows[0].manufacturingProcessName,
deviceName: rows[0].deviceName,
deviceModelCode: rows[0].deviceModelCode,
processSequence: rows[0].processSequence,
workshopName: rows[0].workshopName,
modName: rows[0].modName,
processInspectionItem: rows[0].processInspectionItem,
okAcceptedNum: okAcceptedNum,
specialConcessionsNum: specialConcessionsNum,
unqualifiedClassList: []
};
var unqualifiedRows = iframeWin.$('#bootstrap-unqualifiedClass-table-'+tableId).bootstrapTable('getData');
for (var i = 0; i < unqualifiedRows.length; i++) {
var row = unqualifiedRows[i];
// 获取 '不良分类' 列的 <select> 元素的当前值
var processBadClassificationValue = iframeWin.$('#bootstrap-unqualifiedClass-table-' + tableId + ' tbody tr:eq(' + i + ') select[name="processBadClassification"]').val();
var processBadGradeValue = iframeWin.$('#bootstrap-unqualifiedClass-table-' + tableId + ' tbody tr:eq(' + i + ') select[name="processBadGrade"]').val();
// 更新原始数据对象
row.processBadClassification = processBadClassificationValue;
row.processBadGrade = processBadGradeValue;
var unquilifiedClass = {
processBadClassification: row.processBadClassification,
processBadGrade: row.processBadGrade,
processBadNum: row.processBadNum,
}
var processBadNum = Number(row.processBadNum);
if(!isNaN(processBadNum)){
processUnqualifiedNum += processBadNum;
}
materialProcess.unqualifiedClassList.push(unquilifiedClass);
console.log(materialProcess);
}
materialProcessList.push(materialProcess);
});
// console.log("processQualifiedNum: "+processQualifiedNum);
// console.log("processUnqualifiedNum: "+processUnqualifiedNum);
var newData = {
processQualifiedNum: processQualifiedNum,
processUnqualifiedNum: processUnqualifiedNum,
}
updateRowByMaterialNo(materialNo,newData);
layer.close(index);
}
/*检验报告*/
function checkoutReport(materialNo){
var makeNo = $('#makeNo').val(); //获取生产编号下拉框元素
var url = ctx + 'quality/manufacturingCheckout/checkoutReport/' + materialNo+'/'+makeNo;
$.modal.open("制程检验报告",url);
var options = {
title: '制程检验报告',
url: url,
callBack: handleCheckoutReportData
};
$.modal.openOptions(options);
}
</script>
</body>

145
ruoyi-admin/src/main/resources/templates/quality/manufacturingCheckout/checkoutReport.html

@ -30,7 +30,7 @@
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-checkoutMaterial-edit" th:object="${qualityManufacturingCheckoutMaterial}">
<form class="form-horizontal m" id="form-checkoutReport-add" th:object="${qualityManufacturingCheckoutMaterial}">
<input name="manufacturingCheckoutMaterialId" th:field="*{manufacturingCheckoutMaterialId}" type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">料号:</label>
@ -57,6 +57,10 @@
</div>
</div>
<div class="form-group" hidden="hidden">
<input id="uniqueIdList" name="uniqueIdList" class="form-control" type="text">
</div>
<div class="container mt-5">
<div class="btn-group-sm">
<span>选择制程工序</span>
@ -78,36 +82,20 @@
var manufacturingProcessNameDatas = [[${@dict.getType('manufacturing_process_name')}]];
var processBadClassificationDatas = [[${@dict.getType('process_bad_classification')}]];
var processBadGradeDatas = [[${@dict.getType('process_bad_grade')}]];
var prefix = ctx + "quality/checkoutMaterial";
var prefix = ctx + "quality/manufacturingCheckout";
var uniqueIdList = [];
var manufacturingProcessList = [];
var materialProcessList = [];
$("#form-checkoutMaterial-edit").validate({focusCleanup: true});
$("#form-checkoutReport-add").validate({focusCleanup: true});
function submitHandler() {
if ($.validate.form()) {
$.operate.save(prefix + "/edit", $('#form-checkoutMaterial-edit').serialize());
}
}
$("input[name='checkoutTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
$("input[name='checkoutCompletionTime']").datetimepicker({
format: "yyyy-mm-dd",
minView: "month",
autoclose: true
});
function insertRow() {
var currentTimeStamp = new Date().getTime(); // 获取当前时间的时间戳
var uniqueId = "ID_" + currentTimeStamp; // 为ID添加前缀并使用时间戳
console.log(uniqueId);
uniqueIdList.push(uniqueId);
$('#uniqueIdList').val(uniqueIdList);
// console.log(uniqueId);
var newItem =
"<div class='container bordered-container'>" +
"<div class='col-sm-12 my-3'>" +
@ -121,11 +109,11 @@
'<form id="form-manfa-'+ uniqueId +'"> ' +
"<div class='form-group'> "+
"<label for='okAcceptedNum'>OK允收数:</label>" +
"<input type='text' class='form-control' id='okAcceptedNum'>"+
"<input type='text' class='form-control' id='okAcceptedNum' name='okAcceptedNum'>"+
"</div>"+
" <div class='form-group'> "+
"<label for='qualifiedNum'>特采/让步数:</label>" +
"<input type='text' class='form-control' id='specialConcessionsNum' >"+
"<input type='text' class='form-control' id='specialConcessionsNum' name='specialConcessionsNum'>"+
"</div>"+
"</form>"+
"</div>" +
@ -161,7 +149,7 @@
formatter: function (value, row, index) {
var tableId = bootstarpId;
var selectId = 'select-manufacturingProcess-' + uniqueId;
var td = '<select onchange="handleManufacturingProcessChange(this, \'' + tableId + '\',\'' + selectId + '\',\'' + row + '\',\'' + index + '\')" name="manufacturingProcessCode" id="' + selectId + '"></select>';
var td = '<select class="form-control" onchange="handleManufacturingProcessChange(this, \'' + tableId + '\',\'' + selectId + '\',\'' + index + '\')" name="manufacturingProcessCode" id="' + selectId + '"></select>';
// 这里不需要直接调用selectProcess,而是在用户交互时由事件处理
return td;
}
@ -169,7 +157,9 @@
{
title: '制程工序名称',
field: 'manufacturingProcessName',
formatter:function (index,row,value){
return $.common.dictToSelect(manufacturingProcessNameDatas,value,'manufacturingProcessName');
}
},
{
title: '设备名称',
@ -191,7 +181,10 @@
title: '零件名称',
field: 'modName',
},
{
title: '工序检验项目',
field: 'processInspectionItem',
},
{
title: '操作',
align: 'center',
@ -264,7 +257,7 @@
modName: ''
}
});
selectProcessCode();
selectProcessCode(bootstarpId);
};
// 新增 insertUnqualifiedRow 函数
function insertUnqualifiedRow(tableId) {
@ -282,18 +275,23 @@
}
//查询所有的制程工序编号
function selectProcessCode(){
function selectProcessCode(tableId){
$.ajax({
url: ctx + 'quality/manufacturingCheckout/getProcessCodeList',
type: "post",
dataType: "json",
success: function (res) {
console.log(res);
// console.log(res);
var $select = $('#' + tableId).find('select[name="manufacturingProcessCode"]');
$select.empty();
$select.append(
"<option value=''>" + '请选择' + "</option>");
if (res.rows.length > 0) {
var usertData = res.rows;
for (let i in usertData) {
$("select[name='manufacturingProcessCode']").append(
$select.append(
"<option value='" + usertData[i].manufacturingProcessCode + "'>" + usertData[i].manufacturingProcessCode + "</option>");
manufacturingProcessList.push(usertData[i].manufacturingProcessCode);
}
}else {
$.modal.error("数据为空");
@ -301,7 +299,17 @@
}
});
}
// 重新初始化下拉框列表
function initSelector(tableId) {
var $select = $('#' + tableId).find('select[name="manufacturingProcessCode"]');
console.log($select);
$select.empty();
$select.append("<option value=''>" + '请选择' + "</option>");
for (let i in manufacturingProcessList) {
$select.append(
"<option value='" + manufacturingProcessList[i] + "'>" + manufacturingProcessList[i] + "</option>");
}
}
// 新增一个处理制程工序编号下拉改变的函数
// function handleManufacturingProcessChange(selectElement, tableId,selectId,row) {
@ -317,7 +325,7 @@
// }
function handleManufacturingProcessChange(selectElement, tableId, selectId, row,index) {
function handleManufacturingProcessChange(selectElement, tableId, selectId, index) {
var selectedValue = $(selectElement).val();
if (selectedValue) {
$.ajax({
@ -334,15 +342,21 @@
deviceModelCode: newData.deviceModelCode || '',
processSequence: newData.processSequence || '',
workshopName: newData.workshopName || '',
modName: newData.modName || ''
modName: newData.modName || '',
processInspectionItem: newData.processInspectionItem || '',
};
var processName = newData.manufacturingProcessName;
// 使用Bootstrap Table的updateRow方法更新表格数据,注意这里使用传入的索引
$('#' + tableId).bootstrapTable('updateRow', {
index: index, // 使用传递进来的索引
row: newRowData
});
// $('#' + tableId).find('select[name="manufacturingProcessCode"]').val(selectedValue);
// 重新初始化下拉框
initSelector(tableId);
// 下拉框赋值
$('#' + tableId).find('select[name="manufacturingProcessCode"]').val(selectedValue);
$('#' + tableId).find('select[name="manufacturingProcessName"]').val(processName);
} else {
console.error('后端请求数据为空');
}
@ -365,12 +379,63 @@
function removeUnqualifiedClassRow(id) {
alert("实施删除不合格分类行操作,id: " + id); // 实现删除逻辑
}
function selectProcess(tableId,selectId){
console.log(tableId);
console.log(selectId);
}
// function submitHandler() {
// var materialNo = $('#form-checkoutReport-add').find('input[name="materialNo"]').val();
// var materialName = $('#form-checkoutReport-add').find('input[name="materialName"]').val();
// $('.container.bordered-container').each(function(index, tableElement) {
// var tableId = uniqueIdList[index];
// var $processTable = $('#bootstrap-manufacturingProcess-table-'+tableId);
// var rows = $processTable.bootstrapTable('getData');
// var manufacturingProcessCode = $processTable.find('select[name="manufacturingProcessCode"]').val();
//
// var okAcceptedNum = $('#form-manfa-'+tableId).find('input[name="okAcceptedNum"]').val();
// var specialConcessionsNum = $('#form-manfa-'+tableId).find('input[name="specialConcessionsNum"]').val();
// var materialProcess = {
// materialNo: materialNo,
// materialName: materialName,
// manufacturingProcessCode: manufacturingProcessCode,
// manufacturingProcessName: rows[0].manufacturingProcessName,
// deviceName: rows[0].deviceName,
// deviceModelCode: rows[0].deviceModelCode,
// processSequence: rows[0].processSequence,
// workshopName: rows[0].workshopName,
// modName: rows[0].modName,
// okAcceptedNum: okAcceptedNum,
// specialConcessionsNum: specialConcessionsNum,
// unqualifiedClassList: []
// };
// // console.log("okAcceptedNum:"+okAcceptedNum+"specialConcessionsNum:"+specialConcessionsNum);
//
// var unqualifiedRows = $('#bootstrap-unqualifiedClass-table-'+tableId).bootstrapTable('getData');
// for (var i = 0; i < unqualifiedRows.length; i++) {
// var row = unqualifiedRows[i];
// // 获取 '不良分类' 列的 <select> 元素的当前值
// var processBadClassificationValue = $('#bootstrap-unqualifiedClass-table-' + tableId + ' tbody tr:eq(' + i + ') select[name="processBadClassification"]').val();
// var processBadGradeValue = $('#bootstrap-unqualifiedClass-table-' + tableId + ' tbody tr:eq(' + i + ') select[name="processBadGrade"]').val();
//
// // 更新原始数据对象
// row.processBadClassification = processBadClassificationValue;
// row.processBadGrade = processBadGradeValue;
//
// var unquilifiedClass = {
// processBadClassification: row.processBadClassification,
// processBadGrade: row.processBadGrade,
// processBadNum: row.processBadNum,
// }
// materialProcess.unqualifiedClassList.push(unquilifiedClass);
// }
// materialProcessList.push(materialProcess);
// });
// localStorage.setItem('materialProcessList'+materialNo,JSON.stringify(materialProcessList));
// // $.operate.saveJson(prefix + '/checkoutReport',JSON.stringify(materialProcessList));
// }
</script>
</body>
</html>

Loading…
Cancel
Save