Merge remote-tracking branch 'origin/master'

master
mengjiao 1 year ago
commit 04e77146ea

@ -89,4 +89,10 @@ public class QcDefectTypeController extends BaseController {
public AjaxResult remove(@PathVariable String[] defectIds) {
return toAjax(qcDefectTypeService.deleteQcDefectTypeByDefectIds(defectIds));
}
@GetMapping("/getDefectTypeListByDefectType/{defectType}")
public TableDataInfo getDefectTypeListByDefectType(@PathVariable("defectType") String defectType) {
List<QcDefectType> list = qcDefectTypeService.getDefectTypeListByDefectType(defectType);
return getDataTable(list);
}
}

@ -74,7 +74,13 @@ public class QcMaterialGroupDetailController extends BaseController {
@Log(title = "物料组成员", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody QcMaterialGroupDetail qcMaterialGroupDetail) {
return toAjax(qcMaterialGroupDetailService.insertQcMaterialGroupDetail(qcMaterialGroupDetail));
Boolean isNotUnique = qcMaterialGroupDetailService.validationGroupDetailData(qcMaterialGroupDetail.getMaterialCode());
if (isNotUnique) {
return AjaxResult.error("此物料已在组中,请重新选择!");
} else {
return toAjax(qcMaterialGroupDetailService.insertQcMaterialGroupDetail(qcMaterialGroupDetail));
}
}
/**

@ -158,14 +158,13 @@ public class QuaController extends BaseController {
*
*/
@GetMapping(value = "getCheckTaskList")
public TableDataInfo getCheckTaskList(QcCheckTaskIncome qcCheckTaskIncome) {
public List<QcCheckTaskIncome> getCheckTaskList(QcCheckTaskIncome qcCheckTaskIncome) {
if(StringUtils.isNotBlank(qcCheckTaskIncome.getCheckStatus())){
qcCheckTaskIncome.setCheckStatus("'"+ qcCheckTaskIncome.getCheckStatus().replace(",","','")+"'");
}
startPage();
List<QcCheckTaskIncome> list = qcProCheckService.getCheckTaskList(qcCheckTaskIncome);
return getDataTable(list);
return list;
}
/**
*
@ -186,10 +185,11 @@ public class QuaController extends BaseController {
*/
@PostMapping(value = "commitCheckResults")
public AjaxResult commitCheckResults(@RequestBody QcCheckTaskIncome qcCheckTaskIncome) {
DynamicDataSourceContextHolder.push(qcCheckTaskIncome.getFactoryCode());
if(CollectionUtils.isEmpty(qcCheckTaskIncome.getQcCheckTaskDetails())){
return error("[List<QcCheckTaskDetail>]不能为空");
}
return success(qcCheckTaskIncomeService.commitCheckResults(qcCheckTaskIncome));
return toAjax(qcCheckTaskIncomeService.commitCheckResults(qcCheckTaskIncome));
}
/**
*

@ -82,7 +82,7 @@ public class QcCheckTaskDetail extends BaseEntity {
/** 删除标识1删除0正常 */
private String delFlag;
private String remark;
private String projectId;
private String projectNo;
private Integer sort;
@ -99,6 +99,16 @@ public class QcCheckTaskDetail extends BaseEntity {
private String fileListStr;
private List<BaseFile> files;
@Override
public String getRemark() {
return remark;
}
@Override
public void setRemark(String remark) {
this.remark = remark;
}
public List<BaseFile> getFiles() {
return files;
}

@ -149,6 +149,15 @@ public class QcCheckTaskProduce extends BaseEntity {
private BigDecimal cNoOkquality;
private String checkName;
private List<QcStaticTable> checkInfos;
private List<QcCheckTaskDefect> defects;
public List<QcCheckTaskDefect> getDefects() {
return defects;
}
public void setDefects(List<QcCheckTaskDefect> defects) {
this.defects = defects;
}
public List<QcStaticTable> getCheckInfos() {
return checkInfos;

@ -88,6 +88,24 @@ public class QcCheckUnqualified extends BaseEntity {
private String checkResult;
private String requestid;
private String typeCode;
private String sampleQuality;
private String noOkQuality;
public String getSampleQuality() {
return sampleQuality;
}
public void setSampleQuality(String sampleQuality) {
this.sampleQuality = sampleQuality;
}
public String getNoOkQuality() {
return noOkQuality;
}
public void setNoOkQuality(String noOkQuality) {
this.noOkQuality = noOkQuality;
}
public String getTypeCode() {
return typeCode;

@ -0,0 +1,69 @@
package com.op.quality.mapper;
import java.util.List;
import com.op.quality.domain.QcCheckTaskDefect;
import org.apache.ibatis.annotations.Mapper;
/**
* --Mapper
*
* @author Open Platform
* @date 2024-01-11
*/
@Mapper
public interface QcCheckTaskDefectMapper {
/**
* --
*
* @param recordId --
* @return --
*/
public QcCheckTaskDefect selectQcCheckTaskDefectByRecordId(String recordId);
/**
* --
*
* @param qcCheckTaskDefect --
* @return --
*/
public List<QcCheckTaskDefect> selectQcCheckTaskDefectList(QcCheckTaskDefect qcCheckTaskDefect);
/**
* --
*
* @param qcCheckTaskDefect --
* @return
*/
public int insertQcCheckTaskDefect(QcCheckTaskDefect qcCheckTaskDefect);
/**
* --
*
* @param qcCheckTaskDefect --
* @return
*/
public int updateQcCheckTaskDefect(QcCheckTaskDefect qcCheckTaskDefect);
/**
* --
*
* @param recordId --
* @return
*/
public int deleteQcCheckTaskDefectByRecordId(String recordId);
/**
* --
*
* @param recordIds
* @return
*/
public int deleteQcCheckTaskDefectByRecordIds(String[] recordIds);
public int deleteQcCheckTaskDefectByBelongTo(String belongTo);
public List<QcCheckTaskDefect> selectDefectByBelongTo(String belongTo);
}

@ -67,4 +67,6 @@ public interface QcDefectTypeMapper {
*/
int selectSerialNumber();
public List<QcDefectType> getDefectTypeListByDefectType(String defectType);
}

@ -64,4 +64,6 @@ public interface QcMaterialGroupDetailMapper {
public QcMaterialGroupDetail getGroupByMaterial(String materialCode);
public List<QcMaterialGroupDetail> validationData(String materialCode);
public List<QcMaterialGroupDetail> validationGroupDetailData(String materialCode);
}

@ -0,0 +1,64 @@
package com.op.quality.service;
import java.util.List;
import com.op.quality.domain.QcCheckTaskDefect;
/**
* --Service
*
* @author Open Platform
* @date 2024-01-11
*/
public interface IQcCheckTaskDefectService {
/**
* --
*
* @param recordId --
* @return --
*/
public QcCheckTaskDefect selectQcCheckTaskDefectByRecordId(String recordId);
/**
* --
*
* @param qcCheckTaskDefect --
* @return --
*/
public List<QcCheckTaskDefect> selectQcCheckTaskDefectList(QcCheckTaskDefect qcCheckTaskDefect);
/**
* --
*
* @param qcCheckTaskDefect --
* @return
*/
public int insertQcCheckTaskDefect(QcCheckTaskDefect qcCheckTaskDefect);
/**
* --
*
* @param qcCheckTaskDefect --
* @return
*/
public int updateQcCheckTaskDefect(QcCheckTaskDefect qcCheckTaskDefect);
/**
* --
*
* @param recordIds --
* @return
*/
public int deleteQcCheckTaskDefectByRecordIds(String[] recordIds);
/**
* --
*
* @param recordId --
* @return
*/
public int deleteQcCheckTaskDefectByRecordId(String recordId);
public int deleteQcCheckTaskDefectByBelongTo(String belongTo);
public List<QcCheckTaskDefect> selectDefectByBelongTo(String belongTo);
}

@ -59,4 +59,6 @@ public interface IQcDefectTypeService {
* @return
*/
public int deleteQcDefectTypeByDefectId(String defectId);
public List<QcDefectType> getDefectTypeListByDefectType(String defectType);
}

@ -58,5 +58,17 @@ public interface IQcMaterialGroupDetailService {
*/
public int deleteQcMaterialGroupDetailById(String id);
public boolean validationData(String id);
/**
*
* @param materialCode
* @return
*/
public boolean validationData(String materialCode);
/**
*
* @param materialCode
* @return
*/
public boolean validationGroupDetailData(String materialCode);
}

@ -0,0 +1,117 @@
package com.op.quality.service.impl;
import java.util.List;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.op.common.core.utils.DateUtils;
import com.op.common.core.utils.uuid.IdUtils;
import com.op.common.security.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.op.quality.mapper.QcCheckTaskDefectMapper;
import com.op.quality.domain.QcCheckTaskDefect;
import com.op.quality.service.IQcCheckTaskDefectService;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
/**
* --Service
*
* @author Open Platform
* @date 2024-01-11
*/
@Service
public class QcCheckTaskDefectServiceImpl implements IQcCheckTaskDefectService {
@Autowired
private QcCheckTaskDefectMapper qcCheckTaskDefectMapper;
/**
* --
*
* @param recordId --
* @return --
*/
@Override
@DS("#header.poolName")
public QcCheckTaskDefect selectQcCheckTaskDefectByRecordId(String recordId) {
return qcCheckTaskDefectMapper.selectQcCheckTaskDefectByRecordId(recordId);
}
/**
* --
*
* @param qcCheckTaskDefect --
* @return --
*/
@Override
@DS("#header.poolName")
public List<QcCheckTaskDefect> selectQcCheckTaskDefectList(QcCheckTaskDefect qcCheckTaskDefect) {
return qcCheckTaskDefectMapper.selectQcCheckTaskDefectList(qcCheckTaskDefect);
}
/**
* --
*
* @param qcCheckTaskDefect --
* @return
*/
@Override
@DS("#header.poolName")
public int insertQcCheckTaskDefect(QcCheckTaskDefect qcCheckTaskDefect) {
qcCheckTaskDefect.setRecordId(IdUtils.fastSimpleUUID());
qcCheckTaskDefect.setCreateBy(SecurityUtils.getUsername());
qcCheckTaskDefect.setCreateTime(DateUtils.getNowDate());
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String key = "#header.poolName";
qcCheckTaskDefect.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_",""));
return qcCheckTaskDefectMapper.insertQcCheckTaskDefect(qcCheckTaskDefect);
}
/**
* --
*
* @param qcCheckTaskDefect --
* @return
*/
@Override
@DS("#header.poolName")
public int updateQcCheckTaskDefect(QcCheckTaskDefect qcCheckTaskDefect) {
qcCheckTaskDefect.setUpdateTime(DateUtils.getNowDate());
qcCheckTaskDefect.setUpdateBy(SecurityUtils.getUsername());
return qcCheckTaskDefectMapper.updateQcCheckTaskDefect(qcCheckTaskDefect);
}
/**
* --
*
* @param recordIds --
* @return
*/
@Override
public int deleteQcCheckTaskDefectByRecordIds(String[] recordIds) {
return qcCheckTaskDefectMapper.deleteQcCheckTaskDefectByRecordIds(recordIds);
}
/**
* --
*
* @param recordId --
* @return
*/
@Override
public int deleteQcCheckTaskDefectByRecordId(String recordId) {
return qcCheckTaskDefectMapper.deleteQcCheckTaskDefectByRecordId(recordId);
}
@Override
public int deleteQcCheckTaskDefectByBelongTo(String belongTo) {
return qcCheckTaskDefectMapper.deleteQcCheckTaskDefectByBelongTo(belongTo);
}
@Override
public List<QcCheckTaskDefect> selectDefectByBelongTo(String belongTo) {
return qcCheckTaskDefectMapper.selectDefectByBelongTo(belongTo);
}
}

@ -388,105 +388,12 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService {
unqualified.setCreateBy(qcCheckTaskIncome.getUpdateBy());
unqualified.setFactoryCode(factoryCode);
unqualified.setType(qcCheckTaskIncome.getCheckType());
qcCheckTaskIncome.setUpdateBy(SecurityUtils.getUsername());
AjaxResult oaR = new AjaxResult();
if("material".equals(qcCheckTaskIncome.getTypeCode())) {
qcCheckTaskIncome.setRecordId(qcCheckTaskIncome.getRecordId());//检验任务主表id
oaR = this.createLLOA(qcCheckTaskIncome);
}else if("produce".equals(qcCheckTaskIncome.getTypeCode())){
oaR = this.createProduceOA(qcCheckTaskIncome);
}else if("product".equals(qcCheckTaskIncome.getTypeCode())) {
//TODO;不走OA
oaR.put("code","200");
}
if((oaR.get("code").toString()).equals("200")){
/**qc_check_unqualified**/
qcCheckTaskIncome.setFactoryCode(factoryCode);
unqualified.setRequestid(oaR.get("data").toString());
qcCheckUnqualifiedMapper.insertQcCheckUnqualified(unqualified);
}
qcCheckUnqualifiedMapper.insertQcCheckUnqualified(unqualified);
}
return n ;
}
/*OA
* CQ OEMCM LLLB 01MATNR MAKTX suppliernum
* supplier CHARG comeQty testDate JYBH
* BJY OEMWLLY ZCF ZCOEMCM OEM
* memo PZGLBZG QC
*/
private AjaxResult createLLOA(QcCheckTaskIncome qcCheckTaskIncome){
QcCheckTaskIncome detailInfo = qcCheckTaskIncomeMapper.getTaskInfo(qcCheckTaskIncome.getRecordId());
//发起来料检验OA流程
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("user",qcCheckTaskIncome.getUpdateBy());//提交人工号
paramMap.put("requestLevel",0);//流程紧急度
paramMap.put("requestName","ZL0020-来料检验不合格审批流程(订单:"+qcCheckTaskIncome.getOrderNo()+")");//流程名称
paramMap.put("workflowId",26235);//该流程对应的唯- workFlowld
StringBuffer mainObject = new StringBuffer();
mainObject.append("{");
mainObject.append("\"CQ\":"+qcCheckTaskIncome.getFactoryCode());//厂区
mainObject.append(",\"LLLB\":"+0);//来料类别【0、1】
mainObject.append(",\"MATNR\":"+"\""+detailInfo.getMaterialCode()+"\"");//物料编码
mainObject.append(",\"MAKTX\":"+"\""+detailInfo.getMaterialName()+"\"");//物料名称
mainObject.append(",\"suppliernum\":"+"\""+detailInfo.getSupplierCode()+"\"");//供应商编码
mainObject.append(",\"supplier\":"+"\""+detailInfo.getSupplierName()+"\"");//供应商名称
mainObject.append(",\"CHARG\":"+"\""+detailInfo.getIncomeBatchNo()+"\"");//生产批号
mainObject.append(",\"comeQty\":"+"\""+detailInfo.getQuality()+"\"");//来料数量
mainObject.append(",\"memo\":"+"\""+detailInfo.getRemark()+"\"");//不合格情况描述
mainObject.append("}");
paramMap.put("mainObject",mainObject.toString());
logger.info("流程Id 26235:"+ JSONObject.toJSONString(paramMap));
AjaxResult oaR = remoteOpenService.OAInspection(paramMap);
logger.info("流程Id 26235:"+ JSONObject.toJSONString(oaR));
return oaR;
}
/*OA
* ZL0020-:"workflowId": 26234
*
* ---------------
* PGBCJ /SSCJ /ZRPSN/GJZ/SCLX/OEM OEM/DH /DW/MEMO01 /
* MEMO03 /SFXZG QC/PGZG QC
* PGZRJL
* -------------
* {"colNames":"PROCODE,PRONAME,SCCODE......","details":[{"PROCODE":"","PRONAME":"",.....},{},{},.....]}
* PROCODE PRONAME SCCODE SCTOTAL
* BJDATE JYCODE JYDATE JYRESULT0 2
* PROCODEBAK BZ CPCYS PCJYBHGMS */
private AjaxResult createProduceOA(QcCheckTaskIncome qcCheckTaskIncome){
QcCheckTaskIncome detailInfo = qcCheckTaskIncomeMapper.getTaskInfo(qcCheckTaskIncome.getRecordId());
//发起来料检验OA流程
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("user",qcCheckTaskIncome.getUpdateBy());//提交人工号qcCheckTaskIncome.getUpdateBy()
paramMap.put("requestLevel",0);//流程紧急度
paramMap.put("requestName","ZL0010-成品检验控制流程(订单:"+qcCheckTaskIncome.getOrderNo()+")");//流程名称
paramMap.put("workflowId",26234);//该流程对应的唯- workFlowld
StringBuffer mainObject = new StringBuffer();
mainObject.append("{");
mainObject.append("\"SSCJ\":"+detailInfo.getSupplierName());//所属车间
mainObject.append(",\"ZRPSN\":"+"\""+qcCheckTaskIncome.getUpdateBy()+"\"");//报检人
mainObject.append(",\"OEM\":"+"\""+qcCheckTaskIncome.getFactoryCode()+"\"");//OEM厂名
mainObject.append(",\"DH\":"+"\""+qcCheckTaskIncome.getWorkorderCodeSap()+"\"");//单号
mainObject.append(",\"MEMO01\":"+"\""+detailInfo.getRemark()+"\"");//不合格情况描述
mainObject.append("}");
paramMap.put("mainObject",mainObject.toString());
logger.info("流程Id 26234:"+ JSONObject.toJSONString(paramMap));
AjaxResult oaR = remoteOpenService.OAInspection(paramMap);
logger.info("流程Id 26234:"+ JSONObject.toJSONString(oaR));
return oaR;
}
@Override
@DS("#header.poolName")
public List<QcDefectType> getDefectList(QcDefectType qcDefectType) {
@ -548,9 +455,10 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService {
}
@Override
@Transactional(rollbackFor = Exception.class)
public int commitCheckResults(QcCheckTaskIncome qcCheckTaskIncome) {
List<QcCheckTaskDetail> details = qcCheckTaskIncome.getQcCheckTaskDetails();
DynamicDataSourceContextHolder.push(qcCheckTaskIncome.getFactoryCode());
Date nowTime = DateUtils.getNowDate();
String factoryCode = qcCheckTaskIncome.getFactoryCode();
String updateBy = qcCheckTaskIncome.getUpdateBy();
@ -643,23 +551,6 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService {
unqualified.setCreateBy(updateBy);
unqualified.setFactoryCode(factoryCode);
unqualified.setType(checkType);
//发起来料检验OA流程
AjaxResult oaR = new AjaxResult();
if("material".equals(qcCheckTaskIncome.getTypeCode())) {
qcCheckTaskIncome.setRecordId(belongId);//检验任务主表id
oaR = this.createLLOA(qcCheckTaskIncome);
}else if("produce".equals(qcCheckTaskIncome.getTypeCode())){
qcCheckTaskIncome.setRecordId(belongId);//检验任务主表id
oaR = this.createProduceOA(qcCheckTaskIncome);
}else if("product".equals(qcCheckTaskIncome.getTypeCode())) {
//TODO;不走OA
oaR.put("code","200");
}
if((oaR.get("code").toString()).equals("200")){
/**qc_check_unqualified**/
unqualified.setRequestid(oaR.get("data").toString());
}
n = qcCheckUnqualifiedMapper.insertQcCheckUnqualified(unqualified);
logger.info("qc_check_unqualified:" + n);
}

@ -21,6 +21,7 @@ import com.op.common.core.web.domain.AjaxResult;
import com.op.common.security.utils.SecurityUtils;
import com.op.quality.domain.*;
import com.op.quality.mapper.*;
import com.op.quality.service.IQcCheckTaskDefectService;
import com.op.quality.service.IQcCheckTaskUserService;
import com.op.system.api.RemoteUserService;
import com.op.system.api.domain.SysUser;
@ -74,6 +75,9 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService
@Autowired
private QcCheckTaskIncomeMapper qcCheckTaskIncomeMapper;
@Autowired
private IQcCheckTaskDefectService qcCheckTaskDefectService;
/**
*
*
@ -86,12 +90,18 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService
QcCheckTaskProduce qcCheckTaskProduce = qcCheckTaskProduceMapper.selectQcCheckTaskProduceByRecordId(recordId);
//获取拼接好的检验人员信息
QcCheckTaskUser qcCheckTaskUser = qcCheckTaskUserService.selectQcCheckTaskUserByBelongTo(recordId);
if (StringUtils.isNotBlank(qcCheckTaskUser.getManNames())) {
if (qcCheckTaskUser != null && StringUtils.isNotBlank(qcCheckTaskUser.getManNames())) {
qcCheckTaskProduce.setCheckManName(qcCheckTaskUser.getManNames());
}
if (StringUtils.isNotBlank(qcCheckTaskUser.getManCodes())) {
if (qcCheckTaskUser != null && StringUtils.isNotBlank(qcCheckTaskUser.getManCodes())) {
qcCheckTaskProduce.setCheckManCode(qcCheckTaskUser.getManCodes());
}
//获取不良品检验信息
List<QcCheckTaskDefect> qcCheckTaskDefectList = qcCheckTaskDefectService.selectDefectByBelongTo(recordId);
if (!CollectionUtils.isEmpty(qcCheckTaskDefectList)) {
qcCheckTaskProduce.setDefects(qcCheckTaskDefectList);
}
return qcCheckTaskProduce;
}
@ -204,7 +214,17 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService
logger.info("检查人新增"+m+"成功");
}
}
/**qc_check_task**/
/** 不良品数据插入 */
List<QcCheckTaskDefect> defectList = qcCheckTaskProduce.getDefects();
if (CollectionUtils.isEmpty(defectList)) {
return 0;
} else {
for (QcCheckTaskDefect defect : defectList) {
defect.setBelongTo(beLongId);
qcCheckTaskDefectService.insertQcCheckTaskDefect(defect);
}
}
/**qc_check_task**/
qcCheckTaskProduceMapper.insertQcCheckTaskProduce(qcCheckTaskProduce);
/**qc_check_task_detail**/
@ -246,6 +266,19 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService
qcCheckTaskUserList.add(qcCheckTaskUser);
}
qcCheckTaskUserService.updateQcCheckTaskUser(qcCheckTaskUserList);
/** 不良品数据修改 **/
List<QcCheckTaskDefect> defectList = qcCheckTaskProduce.getDefects();
if (CollectionUtils.isEmpty(defectList)) {
return 0;
} else {
String belongTo = qcCheckTaskProduce.getRecordId();
qcCheckTaskDefectService.deleteQcCheckTaskDefectByBelongTo(belongTo);
for (QcCheckTaskDefect defect : defectList) {
defect.setBelongTo(belongTo);
qcCheckTaskDefectService.insertQcCheckTaskDefect(defect);
}
}
return qcCheckTaskProduceMapper.updateQcCheckTaskProduce(qcCheckTaskProduce);
}

@ -166,4 +166,10 @@ public class QcDefectTypeServiceImpl implements IQcDefectTypeService {
public int deleteQcDefectTypeByDefectId(String defectId) {
return qcDefectTypeMapper.deleteQcDefectTypeByDefectId(defectId);
}
@Override
@DS("#header.poolName")
public List<QcDefectType> getDefectTypeListByDefectType(String defectType) {
return qcDefectTypeMapper.getDefectTypeListByDefectType(defectType);
}
}

@ -111,4 +111,9 @@ public class QcMaterialGroupDetailServiceImpl implements IQcMaterialGroupDetailS
public boolean validationData(String materialCode) {
return qcMaterialGroupDetailMapper.validationData(materialCode).size() > 0;
}
@Override
public boolean validationGroupDetailData(String materialCode) {
return qcMaterialGroupDetailMapper.validationGroupDetailData(materialCode).size() > 0;
}
}

@ -0,0 +1,134 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.op.quality.mapper.QcCheckTaskDefectMapper">
<resultMap type="QcCheckTaskDefect" id="QcCheckTaskDefectResult">
<result property="recordId" column="record_id" />
<result property="defectCode" column="defect_code" />
<result property="defectSubclass" column="defect_subclass" />
<result property="attr1" column="attr1" />
<result property="attr2" column="attr2" />
<result property="attr3" column="attr3" />
<result property="attr4" column="attr4" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="factoryCode" column="factory_code" />
<result property="delFlag" column="del_flag" />
<result property="belongTo" column="belong_to" />
<result property="okQuality" column="ok_quality" />
<result property="noOkQuality" column="noOk_quality" />
</resultMap>
<sql id="selectQcCheckTaskDefectVo">
select record_id, defect_code, defect_subclass, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time, factory_code, del_flag, belong_to, ok_quality, noOk_quality from qc_check_task_defect
</sql>
<select id="selectQcCheckTaskDefectList" parameterType="QcCheckTaskDefect" resultMap="QcCheckTaskDefectResult">
<include refid="selectQcCheckTaskDefectVo"/>
<where>
<if test="defectCode != null and defectCode != ''"> and defect_code = #{defectCode}</if>
<if test="defectSubclass != null and defectSubclass != ''"> and defect_subclass = #{defectSubclass}</if>
<if test="attr1 != null and attr1 != ''"> and attr1 = #{attr1}</if>
<if test="attr2 != null and attr2 != ''"> and attr2 = #{attr2}</if>
<if test="attr3 != null and attr3 != ''"> and attr3 = #{attr3}</if>
<if test="attr4 != null and attr4 != ''"> and attr4 = #{attr4}</if>
<if test="factoryCode != null and factoryCode != ''"> and factory_code = #{factoryCode}</if>
<if test="belongTo != null and belongTo != ''"> and belong_to = #{belongTo}</if>
<if test="okQuality != null "> and ok_quality = #{okQuality}</if>
<if test="noOkQuality != null "> and noOk_quality = #{noOkQuality}</if>
</where>
</select>
<select id="selectQcCheckTaskDefectByRecordId" parameterType="String" resultMap="QcCheckTaskDefectResult">
<include refid="selectQcCheckTaskDefectVo"/>
where record_id = #{recordId}
</select>
<insert id="insertQcCheckTaskDefect" parameterType="QcCheckTaskDefect">
insert into qc_check_task_defect
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="recordId != null">record_id,</if>
<if test="defectCode != null">defect_code,</if>
<if test="defectSubclass != null">defect_subclass,</if>
<if test="attr1 != null">attr1,</if>
<if test="attr2 != null">attr2,</if>
<if test="attr3 != null">attr3,</if>
<if test="attr4 != null">attr4,</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>
<if test="factoryCode != null and factoryCode != ''">factory_code,</if>
<if test="delFlag != null">del_flag,</if>
<if test="belongTo != null">belong_to,</if>
<if test="okQuality != null">ok_quality,</if>
<if test="noOkQuality != null">noOk_quality,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="recordId != null">#{recordId},</if>
<if test="defectCode != null">#{defectCode},</if>
<if test="defectSubclass != null">#{defectSubclass},</if>
<if test="attr1 != null">#{attr1},</if>
<if test="attr2 != null">#{attr2},</if>
<if test="attr3 != null">#{attr3},</if>
<if test="attr4 != null">#{attr4},</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>
<if test="factoryCode != null and factoryCode != ''">#{factoryCode},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="belongTo != null">#{belongTo},</if>
<if test="okQuality != null">#{okQuality},</if>
<if test="noOkQuality != null">#{noOkQuality},</if>
</trim>
</insert>
<update id="updateQcCheckTaskDefect" parameterType="QcCheckTaskDefect">
update qc_check_task_defect
<trim prefix="SET" suffixOverrides=",">
<if test="defectCode != null">defect_code = #{defectCode},</if>
<if test="defectSubclass != null">defect_subclass = #{defectSubclass},</if>
<if test="attr1 != null">attr1 = #{attr1},</if>
<if test="attr2 != null">attr2 = #{attr2},</if>
<if test="attr3 != null">attr3 = #{attr3},</if>
<if test="attr4 != null">attr4 = #{attr4},</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>
<if test="factoryCode != null and factoryCode != ''">factory_code = #{factoryCode},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="belongTo != null">belong_to = #{belongTo},</if>
<if test="okQuality != null">ok_quality = #{okQuality},</if>
<if test="noOkQuality != null">noOk_quality = #{noOkQuality},</if>
</trim>
where record_id = #{recordId}
</update>
<delete id="deleteQcCheckTaskDefectByRecordId" parameterType="String">
delete from qc_check_task_defect where record_id = #{recordId}
</delete>
<delete id="deleteQcCheckTaskDefectByRecordIds" parameterType="String">
delete from qc_check_task_defect where record_id in
<foreach item="recordId" collection="array" open="(" separator="," close=")">
#{recordId}
</foreach>
</delete>
<delete id="deleteQcCheckTaskDefectByBelongTo" parameterType="String">
delete from qc_check_task_defect where belong_to = #{belongTo}
</delete>
<select id="selectDefectByBelongTo" parameterType="QcCheckTaskDefect" resultMap="QcCheckTaskDefectResult">
<include refid="selectQcCheckTaskDefectVo"/>
where belong_to = #{belongTo}
order by defect_code
</select>
</mapper>

@ -51,9 +51,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
qct.supplier_code, qct.supplier_name, qct.income_time, qct.check_loc, qct.check_status,
qct.check_man_code, qct.check_man_name,qct.check_time, qct.check_result, qct.status,
qct.create_by,qct.create_time, qct.update_by, qct.update_time,qct.check_type,qct.noOk_quality,
q.type_code
qct.type_code
from qc_check_task qct
left join qc_check_type q on q.id = qct.check_type
<where>
<if test="checkNo != null and checkNo != ''"> and qct.check_no = #{checkNo}</if>
<if test="incomeBatchNo != null and incomeBatchNo != ''"> and qct.income_batch_no = #{incomeBatchNo}</if>
@ -76,7 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="checkTimeStart != null "> and CONVERT(varchar(30),qct.check_time, 120) >= #{checkTimeStart}</if>
<if test="checkTimeEnd != null "> and #{checkTimeEnd} > CONVERT(varchar(30),qct.check_time, 120)</if>
<if test="checkType != null "> and qct.check_type = #{checkType} </if>
<if test="typeCode != null "> and q.type_code = #{typeCode} </if>
<if test="typeCode != null "> and qct.type_code = #{typeCode} </if>
</where>
</select>
@ -294,7 +293,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
actual_value = #{item.actualValue},
status = #{item.status},
update_by = #{item.updateBy},
update_time = #{item.updateTime}
update_time = #{item.updateTime},
remark = #{item.remark}
where
record_id = #{item.recordId}
</foreach>

@ -36,6 +36,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="sampleQuality" column="sample_quality" />
<result property="checkName" column="check_name" />
<result property="checkType" column="check_type"/>
<result property="noOkQuality" column="noOk_quality"/>
</resultMap>
<resultMap type="QcCheckReportIncome" id="QcCheckReportIncomeResult">
@ -90,7 +92,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
qct.check_man_code, qct.check_man_name,qct.check_time, qct.check_result, qct.status,
qct.create_by,qct.create_time, qct.update_by, qct.update_time,
qct.check_type,qct.sample_quality,qct.noOk_quality,
qct.aNoOkquality,qct.bNoOkquality,qct.cNoOkquality,
q.type_code,q.check_name
from qc_check_task qct
left join qc_check_type q on q.id = qct.check_type
@ -140,7 +141,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select
id,check_name checkName
from qc_check_type
where type_code = #{typeCode} and del_flag='0'
where del_flag='0'
<if test="typeCode != null">and type_code = #{typeCode} </if>
</select>
<select id="getOrderWorks" resultType="com.op.quality.domain.QcCheckTaskProduce">
select qct.factory_code factoryCode,
@ -158,7 +160,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join pro_order_workorder pow on qct.order_no = pow.workorder_code
where check_type = 'checkTypeSCXJ'
and CONVERT(varchar(10),income_time, 120) = CONVERT(varchar(10),GETDATE(), 120)
and pow.status = 'w2'
and pow.status = 'w2' and pow.parent_order = '0'
group by qct.factory_code,
qct.order_no,qct.material_code,qct.material_name,
qct.quality,qct.unit,qct.supplier_code,qct.supplier_name,
@ -354,6 +356,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
GROUP BY qct.order_no, qct.material_code, qct.material_name, qct.quality, qct.unit,
qct.supplier_code, qct.supplier_name, qct.income_time, qct.check_type,CONVERT(varchar(10),qct.create_time, 120)
) t order by t.order_no,t.createTimeStr desc
) t
where 1=1
<if test="checkType != null ">
and t.check_type = #{checkType}
</if>
order by t.order_no,t.createTimeStr desc
</select>
</mapper>

@ -34,7 +34,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
qcu.create_time createTime,
qct.check_type checkType,qtn.check_name checkName,qct.check_no checkNo,qct.income_batch_no incomeBatchNo,qct.order_no orderNo,
qct.material_code materialCode,qct.material_name materialName,qct.quality,qct.unit,qct.supplier_code supplierCode,
qct.supplier_name supplierName,qct.income_time incomeTime,qct.check_loc checkLoc,qct.check_status checkStatus,qct.check_man_code checkManCode,
qct.supplier_name supplierName,qct.income_time incomeTime,qct.check_loc checkLoc,qct.check_status checkStatus,
qct.check_man_code checkManCode,qct.sample_quality sampleQuality,qct.noOk_quality noOkQuality,
qct.check_man_name checkManName,qct.check_time checkTime,qct.check_result checkResult
from qc_check_unqualified qcu
left join qc_check_task qct on qcu.task_id = qct.record_id

@ -128,4 +128,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{defectId}
</foreach>
</delete>
<select id="getDefectTypeListByDefectType" parameterType="String" resultMap="QcDefectTypeResult">
select defect_code, defect_subclass
from qc_defect_type
where defect_type = #{defectType}
order by defect_code
</select>
</mapper>

@ -110,4 +110,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from qc_check_type_project
where material_code = #{materialCode}
</select>
<select id="validationGroupDetailData" parameterType="String" resultMap="QcMaterialGroupDetailResult">
<include refid="selectQcMaterialGroupDetailVo"></include>
where material_code = #{materialCode}
</select>
</mapper>

@ -3,7 +3,6 @@ package com.op.wms.controller;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.op.wms.domain.BaseBomComponent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

@ -139,6 +139,40 @@ public class BaseBom extends BaseEntity {
@Excel(name = "含损耗用量")
private Long cilosses;
//虚拟字段
private Boolean hasChildren;
private String handle;
private String bomBo;
private Integer number;
public void setNumber(Integer number) {
this.number = number;
}
public Integer getNumber() {
return number;
}
public void setBomBo(String bomBo) {
this.bomBo = bomBo;
}
public String getBomBo() {
return bomBo;
}
public void setHasChildren(Boolean hasChildren) {
this.hasChildren = hasChildren;
}
public Boolean getHasChildren() {
return hasChildren;
}
public void setHandle(String handle) {
this.handle = handle;
}
public String getHandle() {
return handle;
}
public void setFactoryCode(String factoryCode) {
this.factoryCode = factoryCode;
}

@ -25,7 +25,9 @@ public interface BaseBomMapper {
* @param baseBom BOM
* @return BOM
*/
public List<BaseBom> selectBaseBomList(BaseBom baseBom);
public List<BaseBom> selectBaseBomList0(BaseBom baseBom);
public List<BaseBom> selectBaseBomList1(BaseBom baseBom);
public List<BaseBom> selectBaseBomList2(BaseBom baseBom);
/**
* BOM
@ -58,4 +60,11 @@ public interface BaseBomMapper {
* @return
*/
public int deleteBaseBomByFactoryCodes(String[] factoryCodes);
//查询层级
String selectLevels();
//查询子节点多少个
Integer selectChildNodes(BaseBom baseBom);
}

@ -2,7 +2,6 @@ package com.op.wms.service;
import java.util.List;
import com.op.wms.domain.BaseBom;
import com.op.wms.domain.BaseBomComponent;
/**
* BOMService
@ -26,8 +25,6 @@ public interface IBaseBomService {
* @return BOM
*/
public List<BaseBom> selectBaseBomList(BaseBom baseBom);
//public List<BaseBom> selectBaseBomList(BaseBom baseBom, BaseBomComponent baseBomComponent, List<BaseBomComponent> list);
// public List<BaseBomComponent> selectBaseBomComponentList(BaseBomComponent baseBomComponent);
/**
* BOM

@ -1,13 +1,9 @@
package com.op.wms.service.impl;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.op.common.core.utils.DateUtils;
import com.op.wms.domain.BaseBomComponent;
import com.op.common.core.utils.uuid.IdUtils;
import com.op.wms.mapper.BaseBomComponentMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -49,7 +45,49 @@ public class BaseBomServiceImpl implements IBaseBomService {
@Override
@DS("#header.poolName")
public List<BaseBom> selectBaseBomList(BaseBom baseBom) {
return baseBomMapper.selectBaseBomList(baseBom);
//bom表
//主表 第0层
if(baseBom.getBomHierarchy().equals("0")){
List<BaseBom> list = baseBomMapper.selectBaseBomList0(baseBom);
//判断 是否有HasChildren
for(BaseBom baseBom1 : list){
if(baseBom1.getNumber() > 1){
baseBom1.setHasChildren(Boolean.TRUE);
}else{
baseBom1.setHasChildren(Boolean.FALSE);
}
}
return list;
}else if(baseBom.getBomHierarchy().equals("1")){
List<BaseBom> list = baseBomMapper.selectBaseBomList1(baseBom);
for(BaseBom baseBom1 : list){
if(baseBom1.getHandle() == null){
baseBom1.setHandle(IdUtils.fastSimpleUUID());
}
Integer childNodes = baseBomMapper.selectChildNodes(baseBom1);
if(childNodes > 0){
baseBom1.setHasChildren(Boolean.TRUE);
}else{
baseBom1.setHasChildren(Boolean.FALSE);
}
}
return list;
}else{
//2层以及以上 多条list
List<BaseBom> list = baseBomMapper.selectBaseBomList2(baseBom);
for(BaseBom baseBom1 : list){
if(baseBom1.getHandle() == null){
baseBom1.setHandle(IdUtils.fastSimpleUUID());
}
Integer childNodes = baseBomMapper.selectChildNodes(baseBom1);
if(childNodes > 0){
baseBom1.setHasChildren(Boolean.TRUE);
}else{
baseBom1.setHasChildren(Boolean.FALSE);
}
}
return list;
}
}
/**

@ -35,8 +35,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select factory_code, production_version, bom_code, optional_bom, optional_bom_text, pvvd, pved, bom_calculate_number, bom_calculate_unit, bom_base_number, bom_base_unit, component_unit, component_pro_flag, msi, sanka, attr1, attr2, attr3, create_by, create_time, update_by, update_time, remark, current_version from base_bom
</sql>
<select id="selectBaseBomList" parameterType="BaseBom" resultType="com.op.wms.domain.BaseBom">
<select id="selectBaseBomList0" parameterType="BaseBom" resultType="com.op.wms.domain.BaseBom">
select
count(bb.bom_bo) AS number,
bbc.bom_code as bomCode,
bb.bom_bo as handle,
b1.product_desc_zh as productDescZh,
bbc.product_code as productCode
from base_bom_component bbc
left join base_product b1 on right(b1.product_code,11) = bbc.product_code
left join base_bom bb on bb.bom_code = bbc.bom_code
left join base_product bp on right(bp.product_code,11) = bbc.component
<where>
<if test="bomCode != null and bomCode != ''"> and bbc.bom_code like concat('%', #{bomCode}, '%')</if>
<if test="productDescZh != null and productDescZh != ''"> and b1.product_desc_zh like concat('%', #{productDescZh}, '%')</if>
<if test="productCode != null and productCode != ''"> and bbc.product_code like concat('%', #{productCode}, '%')</if>
</where>
GROUP BY bbc.bom_code,bb.bom_bo,b1.product_desc_zh,bbc.product_code
order by bbc.bom_code desc
</select>
<!--第一层-->
<select id="selectBaseBomList1" parameterType="BaseBom" resultType="com.op.wms.domain.BaseBom">
select
bbc.handle as handle,
bb.factory_code as factoryCode,
bb.production_version as productionVersion,
bb.bom_code as bomCode,
@ -72,13 +94,64 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bbc.loss_rate as lossRate,
bbc.loss_amount as lossAmount,
bbc.cilosses as cilosses
from base_bom bb
left join base_bom_component bbc on bb.bom_code = bbc.bom_code
from base_bom_component bbc
left join base_product b1 on right(b1.product_code,11) = bbc.product_code
left join base_product bp on right(bp.product_code,11) = bbc.component
left join base_bom bb on bbc.bom_code = bb.bom_code
<where>
<if test="factoryCode != null and factoryCode != ''"> and factory_code = #{factoryCode}</if>
<if test="bomCode != null and bomCode != ''"> and bb.bom_code like concat('%', #{bomCode}, '%')</if>
<if test="bomCode != null and bomCode != ''"> and bbc.bom_code like concat('%', #{bomCode}, '%')</if>
<if test="bomHierarchy != null and bomHierarchy != ''"> and bbc.bom_hierarchy = #{bomHierarchy}</if>
</where>
</select>
<!--第二层以及以上-->
<select id="selectBaseBomList2" parameterType="BaseBom" resultType="com.op.wms.domain.BaseBom">
select
bbc.handle as handle,
bb.factory_code as factoryCode,
bb.production_version as productionVersion,
bb.bom_code as bomCode,
bb.optional_bom as optionalBom,
bb.optional_bom_text as optionalBomText,
bb.pvvd as pvvd,
bb.pved as pved,
bb.bom_calculate_number as bomCalculateNumber,
bb.bom_calculate_unit as bomCalculateUnit,
bb.bom_base_number as bomBaseNumber,
bb.bom_base_unit as bomBaseUnit,
bb.component_unit as componentUnit,
bb.component_pro_flag as componentProFlag,
bb.msi as msi,
bb.sanka as sanka,
bb.attr1 as attr1,
bb.attr2 as attr2,
bb.attr3 as attr3,
bb.create_by as createBy,
bb.create_time as createTime,
bb.update_by as updateBy,
bb.update_time,
bb.remark as remark,
bb.current_version as currentVersion,
bbc.product_code as productCode,
b1.product_desc_zh as productDescZh,
bp.product_desc_zh as componentDescZh,
bbc.cumc as cumc,
bbc.component as component,
bbc.bom_hierarchy as bomHierarchy,
bbc.project_no as projectNo,
bbc.standard_dosage as standardDosage,
bbc.loss_rate as lossRate,
bbc.loss_amount as lossAmount,
bbc.cilosses as cilosses
from base_bom_component bbc
left join base_product b1 on right(b1.product_code,11) = bbc.product_code
left join base_product bp on right(bp.product_code,11) = bbc.component
left join base_bom bb on bbc.bom_code = bb.bom_code
<where>
<if test="bomCode != null and bomCode != ''"> and bbc.bom_code like concat('%', #{bomCode}, '%')</if>
and bbc.cumc = #{component}
<if test="handle != null and handle != ''"> and bbc.handle = #{handle}</if>
<if test="bomHierarchy != null and bomHierarchy != ''"> and bbc.bom_hierarchy = #{bomHierarchy}</if>
</where>
</select>
@ -183,4 +256,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{factoryCode}
</foreach>
</delete>
<select id="selectLevels" parameterType="String" resultType="String">
select max( bom_hierarchy ) AS levels
from base_bom_component
</select>
<select id="selectChildNodes" parameterType="com.op.wms.domain.BaseBom" resultType="Integer">
select count(*) as number
from base_bom_component
where cumc = #{component}
and bom_code = #{bomCode}
</select>
</mapper>
Loading…
Cancel
Save