Pārlūkot izejas kodu

质检接口 PDA
1.获取质检批号
2.获取质检库位
3.提交质检结果

k 2 gadi atpakaļ
vecāks
revīzija
2b337b72ab

+ 72 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/pda/PdaDocQcController.java

@@ -1,9 +1,20 @@
 package com.ruoyi.web.controller.warewms.pda;
 
+import com.ruoyi.ams.qc.domain.vo.DocQcListVo;
+import com.ruoyi.ams.qc.service.IDocQcDetailsService;
+import com.ruoyi.ams.qc.service.IDocQcHeaderService;
+import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 /**
  * @author JWK
  * @version 1.0
@@ -14,9 +25,64 @@ import org.springframework.web.bind.annotation.RestController;
 public class PdaDocQcController {
 
 
+    @Autowired
+    private IDocQcHeaderService iDocQcHeaderService;
+
+    @Autowired
+    private IDocQcDetailsService iDocQcDetailsService;
+
+
+    /**
+     * 获取质检列表(根据库存)
+     *
+     * @return
+     */
+    @GetMapping("/getQcList")
+    public AjaxResult getQcListByInvLotLocId() {
+        List<DocQcListVo> qcListByInvLotLocId = iDocQcHeaderService.getQcListByInvLotLocId();
+        if (qcListByInvLotLocId.size() == 0) {
+            return AjaxResult.error("没有需要质检的库存!");
+        }
+        return AjaxResult.success("获取成功!", qcListByInvLotLocId);
+    }
+
+    /**
+     * 获取库位列表(根据批号)
+     *
+     * @return
+     */
+    @GetMapping("/getLocList")
+    public AjaxResult getLocationListByLotNumber(String lotNumber) {
+        if (StringUtils.isEmpty(lotNumber)) {
+            return AjaxResult.error("批号不能为空!");
+        }
+        List<DocQcListVo> qcListByInvLotLocId = iDocQcHeaderService.getLocationListByLotNumber(lotNumber);
+        if (qcListByInvLotLocId.size() == 0) {
+            return AjaxResult.error("没有需要质检的库存!");
+        }
+        return AjaxResult.success("获取成功!", qcListByInvLotLocId);
+    }
+
+
     /**
      * 质检提交
      *
+     * @param lotNumber     批号
+     * @param qualityStatus 质量状态
+     * @param description   结果说明
+     * @param updateBy      操作人
+     * @return
+     */
+    @Log(title = "PDA质检提交(根据库存质检)", businessType = BusinessType.UPDATE)
+    @PostMapping("/submit")
+    public AjaxResult qcSubmit(String lotNumber, String qualityStatus, String description, String updateBy) {
+
+        return iDocQcHeaderService.qcSubmit(lotNumber, qualityStatus, description, updateBy);
+    }
+
+    /**
+     * 质检提交 此接口暂时作废(暂时不用验收单质检)
+     *
      * @param qcNo
      * @param qcLineNo
      * @param qualityStatus 质量状态
@@ -24,8 +90,12 @@ public class PdaDocQcController {
      * @param updateBy      操作人
      * @return
      */
-    public AjaxResult commit(String qcNo, String qcLineNo, String qualityStatus, String description, String updateBy) {
+    @Log(title = "PDA质检提交", businessType = BusinessType.UPDATE)
+    @PostMapping("/submit0")
+    public AjaxResult qcSubmit(String qcNo, String qcLineNo, String qualityStatus
+            , String description, String updateBy) {
 
-        return AjaxResult.success("");
+        return iDocQcDetailsService.qcSubmit(qcNo, qcLineNo, qualityStatus
+                , description, updateBy);
     }
 }

+ 24 - 0
warewms-ams/src/main/java/com/ruoyi/ams/inv/mapper/InvLotLocIdMapper.java

@@ -187,10 +187,34 @@ public interface InvLotLocIdMapper {
 
     /**
      * 解绑库存
+     *
      * @param locationId
      * @param sku
      * @param customerId
      * @return
      */
     AjaxResult unlockInv(@Param("locationId") Long locationId, @Param("sku") String sku, @Param("customerId") String customerId);
+
+    /**
+     * 获取质检列表
+     *
+     * @return
+     */
+    List<InvLotLocIdLotattVO> getQualityInspectionList();
+
+    /**
+     * 获取质检库位列表根据批号
+     *
+     * @param lotNumber 批号
+     * @return
+     */
+    List<InvLotLocIdLotattVO> getQualityLocationListByLotNumber(String lotNumber);
+
+    /**
+     * 修改质量状态根据批号
+     *
+     * @param lotNumber
+     * @return
+     */
+    int updateQualityStatusByLotNumber(String lotNumber, String qualityStatus);
 }

+ 12 - 1
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/IInvLotLocIdService.java

@@ -30,6 +30,17 @@ public interface IInvLotLocIdService {
      */
     InvLotLocId selectInvLotLocIdByLotnum(String lotnum);
 
+    /**
+     * 根据主键查询
+     *
+     * @param locationId
+     * @param customerId
+     * @param sku
+     * @param lotnum
+     * @return
+     */
+    InvLotLocId selectInvLotLocIdById(String locationId, String customerId, String sku, String lotnum);
+
     /**
      * 查询库位库存信息列表
      *
@@ -196,5 +207,5 @@ public interface IInvLotLocIdService {
      * @param palletNo
      * @return
      */
-    AjaxResult unLockInvByPalletNo(String palletNo,String sn);
+    AjaxResult unLockInvByPalletNo(String palletNo, String sn);
 }

+ 15 - 0
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/impl/InvLotLocIdServiceImpl.java

@@ -56,6 +56,21 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
         return invLotLocIdMapper.selectInvLotLocIdByLotnum(lotnum);
     }
 
+    @Override
+    public InvLotLocId selectInvLotLocIdById(String locationId, String customerId, String sku, String lotnum) {
+        InvLotLocId invLotLocId = new InvLotLocId();
+        invLotLocId.setLocationId(locationId);
+        invLotLocId.setCustomerId(customerId);
+        invLotLocId.setSku(sku);
+        invLotLocId.setLotnum(lotnum);
+        List<InvLotLocId> list = invLotLocIdMapper.selectInvLotLocIdList(invLotLocId);
+        if (list != null && list.size() > 0) {
+            return list.get(0);
+        } else {
+            return null;
+        }
+    }
+
     /**
      * 查询库位库存信息列表
      *

+ 57 - 57
warewms-ams/src/main/java/com/ruoyi/ams/qc/domain/DocQcDetails.java

@@ -1,16 +1,16 @@
 package com.ruoyi.ams.qc.domain;
 
-import java.math.BigDecimal;
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.math.BigDecimal;
+import java.util.Date;
 
 /**
- * 质检对象 doc_qc_details
- * 
+ * 质检对象 wms_doc_qc_details
+ *
  * @author ruoyi
  * @date 2022-11-14
  */
@@ -116,228 +116,228 @@ public class DocQcDetails extends BaseEntity
     @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
     private String transactionid;
 
-    public void setQcno(String qcno) 
+    public void setQcno(String qcno)
     {
         this.qcno = qcno;
     }
 
-    public String getQcno() 
+    public String getQcno()
     {
         return qcno;
     }
-    public void setQclineno(String qclineno) 
+    public void setQclineno(String qclineno)
     {
         this.qclineno = qclineno;
     }
 
-    public String getQclineno() 
+    public String getQclineno()
     {
         return qclineno;
     }
-    public void setLinestatus(String linestatus) 
+    public void setLinestatus(String linestatus)
     {
         this.linestatus = linestatus;
     }
 
-    public String getLinestatus() 
+    public String getLinestatus()
     {
         return linestatus;
     }
-    public void setPalineno(BigDecimal palineno) 
+    public void setPalineno(BigDecimal palineno)
     {
         this.palineno = palineno;
     }
 
-    public BigDecimal getPalineno() 
+    public BigDecimal getPalineno()
     {
         return palineno;
     }
-    public void setCustomerid(String customerid) 
+    public void setCustomerid(String customerid)
     {
         this.customerid = customerid;
     }
 
-    public String getCustomerid() 
+    public String getCustomerid()
     {
         return customerid;
     }
-    public void setSku(String sku) 
+    public void setSku(String sku)
     {
         this.sku = sku;
     }
 
-    public String getSku() 
+    public String getSku()
     {
         return sku;
     }
-    public void setLotnum(String lotnum) 
+    public void setLotnum(String lotnum)
     {
         this.lotnum = lotnum;
     }
 
-    public String getLotnum() 
+    public String getLotnum()
     {
         return lotnum;
     }
-    public void setPaqtyExpected(BigDecimal paqtyExpected) 
+    public void setPaqtyExpected(BigDecimal paqtyExpected)
     {
         this.paqtyExpected = paqtyExpected;
     }
 
-    public BigDecimal getPaqtyExpected() 
+    public BigDecimal getPaqtyExpected()
     {
         return paqtyExpected;
     }
-    public void setQcqtyExpected(BigDecimal qcqtyExpected) 
+    public void setQcqtyExpected(BigDecimal qcqtyExpected)
     {
         this.qcqtyExpected = qcqtyExpected;
     }
 
-    public BigDecimal getQcqtyExpected() 
+    public BigDecimal getQcqtyExpected()
     {
         return qcqtyExpected;
     }
-    public void setQcqtyCompleted(BigDecimal qcqtyCompleted) 
+    public void setQcqtyCompleted(BigDecimal qcqtyCompleted)
     {
         this.qcqtyCompleted = qcqtyCompleted;
     }
 
-    public BigDecimal getQcqtyCompleted() 
+    public BigDecimal getQcqtyCompleted()
     {
         return qcqtyCompleted;
     }
-    public void setUserdefine1(String userdefine1) 
+    public void setUserdefine1(String userdefine1)
     {
         this.userdefine1 = userdefine1;
     }
 
-    public String getUserdefine1() 
+    public String getUserdefine1()
     {
         return userdefine1;
     }
-    public void setUserdefine2(String userdefine2) 
+    public void setUserdefine2(String userdefine2)
     {
         this.userdefine2 = userdefine2;
     }
 
-    public String getUserdefine2() 
+    public String getUserdefine2()
     {
         return userdefine2;
     }
-    public void setUserdefine3(String userdefine3) 
+    public void setUserdefine3(String userdefine3)
     {
         this.userdefine3 = userdefine3;
     }
 
-    public String getUserdefine3() 
+    public String getUserdefine3()
     {
         return userdefine3;
     }
-    public void setUserdefine4(String userdefine4) 
+    public void setUserdefine4(String userdefine4)
     {
         this.userdefine4 = userdefine4;
     }
 
-    public String getUserdefine4() 
+    public String getUserdefine4()
     {
         return userdefine4;
     }
-    public void setUserdefine5(String userdefine5) 
+    public void setUserdefine5(String userdefine5)
     {
         this.userdefine5 = userdefine5;
     }
 
-    public String getUserdefine5() 
+    public String getUserdefine5()
     {
         return userdefine5;
     }
-    public void setQcdescr(String qcdescr) 
+    public void setQcdescr(String qcdescr)
     {
         this.qcdescr = qcdescr;
     }
 
-    public String getQcdescr() 
+    public String getQcdescr()
     {
         return qcdescr;
     }
-    public void setQcresult(String qcresult) 
+    public void setQcresult(String qcresult)
     {
         this.qcresult = qcresult;
     }
 
-    public String getQcresult() 
+    public String getQcresult()
     {
         return qcresult;
     }
-    public void setFilecontent(String filecontent) 
+    public void setFilecontent(String filecontent)
     {
         this.filecontent = filecontent;
     }
 
-    public String getFilecontent() 
+    public String getFilecontent()
     {
         return filecontent;
     }
-    public void setNotes(String notes) 
+    public void setNotes(String notes)
     {
         this.notes = notes;
     }
 
-    public String getNotes() 
+    public String getNotes()
     {
         return notes;
     }
-    public void setAddtime(Date addtime) 
+    public void setAddtime(Date addtime)
     {
         this.addtime = addtime;
     }
 
-    public Date getAddtime() 
+    public Date getAddtime()
     {
         return addtime;
     }
-    public void setAddwho(String addwho) 
+    public void setAddwho(String addwho)
     {
         this.addwho = addwho;
     }
 
-    public String getAddwho() 
+    public String getAddwho()
     {
         return addwho;
     }
-    public void setEdittime(Date edittime) 
+    public void setEdittime(Date edittime)
     {
         this.edittime = edittime;
     }
 
-    public Date getEdittime() 
+    public Date getEdittime()
     {
         return edittime;
     }
-    public void setEditwho(String editwho) 
+    public void setEditwho(String editwho)
     {
         this.editwho = editwho;
     }
 
-    public String getEditwho() 
+    public String getEditwho()
     {
         return editwho;
     }
-    public void setPackid(String packid) 
+    public void setPackid(String packid)
     {
         this.packid = packid;
     }
 
-    public String getPackid() 
+    public String getPackid()
     {
         return packid;
     }
-    public void setTransactionid(String transactionid) 
+    public void setTransactionid(String transactionid)
     {
         this.transactionid = transactionid;
     }
 
-    public String getTransactionid() 
+    public String getTransactionid()
     {
         return transactionid;
     }

+ 40 - 40
warewms-ams/src/main/java/com/ruoyi/ams/qc/domain/DocQcHeader.java

@@ -9,8 +9,8 @@ import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
 
 /**
- * 质检对象 doc_qc_header
- * 
+ * 质检对象 wms_doc_qc_header
+ *
  * @author ruoyi
  * @date 2022-11-14
  */
@@ -96,174 +96,174 @@ public class DocQcHeader extends BaseEntity
     /** 质检信息 */
     private List<DocQcDetails> docQcDetailsList;
 
-    public void setQcno(String qcno) 
+    public void setQcno(String qcno)
     {
         this.qcno = qcno;
     }
 
-    public String getQcno() 
+    public String getQcno()
     {
         return qcno;
     }
-    public void setPano(String pano) 
+    public void setPano(String pano)
     {
         this.pano = pano;
     }
 
-    public String getPano() 
+    public String getPano()
     {
         return pano;
     }
-    public void setCustomerid(String customerid) 
+    public void setCustomerid(String customerid)
     {
         this.customerid = customerid;
     }
 
-    public String getCustomerid() 
+    public String getCustomerid()
     {
         return customerid;
     }
-    public void setQcreference1(String qcreference1) 
+    public void setQcreference1(String qcreference1)
     {
         this.qcreference1 = qcreference1;
     }
 
-    public String getQcreference1() 
+    public String getQcreference1()
     {
         return qcreference1;
     }
-    public void setQcreference2(String qcreference2) 
+    public void setQcreference2(String qcreference2)
     {
         this.qcreference2 = qcreference2;
     }
 
-    public String getQcreference2() 
+    public String getQcreference2()
     {
         return qcreference2;
     }
-    public void setQcreference3(String qcreference3) 
+    public void setQcreference3(String qcreference3)
     {
         this.qcreference3 = qcreference3;
     }
 
-    public String getQcreference3() 
+    public String getQcreference3()
     {
         return qcreference3;
     }
-    public void setQcreference4(String qcreference4) 
+    public void setQcreference4(String qcreference4)
     {
         this.qcreference4 = qcreference4;
     }
 
-    public String getQcreference4() 
+    public String getQcreference4()
     {
         return qcreference4;
     }
-    public void setQcreference5(String qcreference5) 
+    public void setQcreference5(String qcreference5)
     {
         this.qcreference5 = qcreference5;
     }
 
-    public String getQcreference5() 
+    public String getQcreference5()
     {
         return qcreference5;
     }
-    public void setQctype(String qctype) 
+    public void setQctype(String qctype)
     {
         this.qctype = qctype;
     }
 
-    public String getQctype() 
+    public String getQctype()
     {
         return qctype;
     }
-    public void setQcstatus(String qcstatus) 
+    public void setQcstatus(String qcstatus)
     {
         this.qcstatus = qcstatus;
     }
 
-    public String getQcstatus() 
+    public String getQcstatus()
     {
         return qcstatus;
     }
-    public void setQccreationtime(Date qccreationtime) 
+    public void setQccreationtime(Date qccreationtime)
     {
         this.qccreationtime = qccreationtime;
     }
 
-    public Date getQccreationtime() 
+    public Date getQccreationtime()
     {
         return qccreationtime;
     }
-    public void setUserdefine1(String userdefine1) 
+    public void setUserdefine1(String userdefine1)
     {
         this.userdefine1 = userdefine1;
     }
 
-    public String getUserdefine1() 
+    public String getUserdefine1()
     {
         return userdefine1;
     }
-    public void setUserdefine2(String userdefine2) 
+    public void setUserdefine2(String userdefine2)
     {
         this.userdefine2 = userdefine2;
     }
 
-    public String getUserdefine2() 
+    public String getUserdefine2()
     {
         return userdefine2;
     }
-    public void setUserdefine3(String userdefine3) 
+    public void setUserdefine3(String userdefine3)
     {
         this.userdefine3 = userdefine3;
     }
 
-    public String getUserdefine3() 
+    public String getUserdefine3()
     {
         return userdefine3;
     }
-    public void setUserdefine4(String userdefine4) 
+    public void setUserdefine4(String userdefine4)
     {
         this.userdefine4 = userdefine4;
     }
 
-    public String getUserdefine4() 
+    public String getUserdefine4()
     {
         return userdefine4;
     }
-    public void setUserdefine5(String userdefine5) 
+    public void setUserdefine5(String userdefine5)
     {
         this.userdefine5 = userdefine5;
     }
 
-    public String getUserdefine5() 
+    public String getUserdefine5()
     {
         return userdefine5;
     }
-    public void setNotes(String notes) 
+    public void setNotes(String notes)
     {
         this.notes = notes;
     }
 
-    public String getNotes() 
+    public String getNotes()
     {
         return notes;
     }
-    public void setQcPrintFlag(String qcPrintFlag) 
+    public void setQcPrintFlag(String qcPrintFlag)
     {
         this.qcPrintFlag = qcPrintFlag;
     }
 
-    public String getQcPrintFlag() 
+    public String getQcPrintFlag()
     {
         return qcPrintFlag;
     }
-    public void setWarehouseid(String warehouseid) 
+    public void setWarehouseid(String warehouseid)
     {
         this.warehouseid = warehouseid;
     }
 
-    public String getWarehouseid() 
+    public String getWarehouseid()
     {
         return warehouseid;
     }

+ 23 - 0
warewms-ams/src/main/java/com/ruoyi/ams/qc/domain/vo/DocQcListVo.java

@@ -0,0 +1,23 @@
+package com.ruoyi.ams.qc.domain.vo;
+
+import lombok.Data;
+
+/**
+ * 质检列表
+ *
+ * @author JWK
+ * @version 1.0
+ * @date 2022/11/16 16:36
+ */
+@Data
+public class DocQcListVo {
+
+    private String lotatt01;
+
+    private String locationNo;
+
+    public DocQcListVo(String locationNo, String lotatt01) {
+        this.locationNo = locationNo;
+        this.lotatt01 = lotatt01;
+    }
+}

+ 17 - 16
warewms-ams/src/main/java/com/ruoyi/ams/qc/mapper/DocQcDetailsMapper.java

@@ -1,61 +1,62 @@
 package com.ruoyi.ams.qc.mapper;
 
 import java.util.List;
+
 import com.ruoyi.ams.qc.domain.DocQcDetails;
 
 /**
  * 质检Mapper接口
- * 
+ *
  * @author ruoyi
  * @date 2022-11-14
  */
-public interface DocQcDetailsMapper 
-{
+public interface DocQcDetailsMapper {
     /**
      * 查询质检
-     * 
-     * @param qcno 质检主键
+     *
+     * @param qcno     质检主键
+     * @param qclineno 质检主键
      * @return 质检
      */
-     DocQcDetails selectDocQcDetailsByQcno(String qcno);
+    DocQcDetails selectDocQcDetailsByQcno(String qcno, String qclineno);
 
     /**
      * 查询质检列表
-     * 
+     *
      * @param docQcDetails 质检
      * @return 质检集合
      */
-     List<DocQcDetails> selectDocQcDetailsList(DocQcDetails docQcDetails);
+    List<DocQcDetails> selectDocQcDetailsList(DocQcDetails docQcDetails);
 
     /**
      * 新增质检
-     * 
+     *
      * @param docQcDetails 质检
      * @return 结果
      */
-     int insertDocQcDetails(DocQcDetails docQcDetails);
+    int insertDocQcDetails(DocQcDetails docQcDetails);
 
     /**
      * 修改质检
-     * 
+     *
      * @param docQcDetails 质检
      * @return 结果
      */
-     int updateDocQcDetails(DocQcDetails docQcDetails);
+    int updateDocQcDetails(DocQcDetails docQcDetails);
 
     /**
      * 删除质检
-     * 
+     *
      * @param qcno 质检主键
      * @return 结果
      */
-     int deleteDocQcDetailsByQcno(String qcno);
+    int deleteDocQcDetailsByQcno(String qcno);
 
     /**
      * 批量删除质检
-     * 
+     *
      * @param qcnos 需要删除的数据主键集合
      * @return 结果
      */
-     int deleteDocQcDetailsByQcnos(String[] qcnos);
+    int deleteDocQcDetailsByQcnos(String[] qcnos);
 }

+ 31 - 16
warewms-ams/src/main/java/com/ruoyi/ams/qc/service/IDocQcDetailsService.java

@@ -1,31 +1,32 @@
 package com.ruoyi.ams.qc.service;
 
-import java.util.List;
 import com.ruoyi.ams.qc.domain.DocQcDetails;
+import com.ruoyi.common.core.domain.AjaxResult;
+
+import java.util.List;
 
 /**
  * 质检Service接口
- * 
+ *
  * @author ruoyi
  * @date 2022-11-14
  */
-public interface IDocQcDetailsService 
-{
+public interface IDocQcDetailsService {
     /**
      * 查询质检
-     * 
+     *
      * @param qcno 质检主键
      * @return 质检
      */
-     DocQcDetails selectDocQcDetailsByQcno(String qcno);
+    DocQcDetails selectDocQcDetailsByQcno(String qcno, String qclineno);
 
     /**
      * 查询质检列表
-     * 
+     *
      * @param docQcDetails 质检
      * @return 质检集合
      */
-     List<DocQcDetails> selectDocQcDetailsList(DocQcDetails docQcDetails);
+    List<DocQcDetails> selectDocQcDetailsList(DocQcDetails docQcDetails);
 
     /**
      * 查询质检
@@ -37,33 +38,47 @@ public interface IDocQcDetailsService
 
     /**
      * 新增质检
-     * 
+     *
      * @param docQcDetails 质检
      * @return 结果
      */
-     int insertDocQcDetails(DocQcDetails docQcDetails);
+    int insertDocQcDetails(DocQcDetails docQcDetails);
 
     /**
      * 修改质检
-     * 
+     *
      * @param docQcDetails 质检
      * @return 结果
      */
-     int updateDocQcDetails(DocQcDetails docQcDetails);
+    int updateDocQcDetails(DocQcDetails docQcDetails);
 
     /**
      * 批量删除质检
-     * 
+     *
      * @param qcnos 需要删除的质检主键集合
      * @return 结果
      */
-     int deleteDocQcDetailsByQcnos(String[] qcnos);
+    int deleteDocQcDetailsByQcnos(String[] qcnos);
 
     /**
      * 删除质检信息
-     * 
+     *
      * @param qcno 质检主键
      * @return 结果
      */
-     int deleteDocQcDetailsByQcno(String qcno);
+    int deleteDocQcDetailsByQcno(String qcno);
+
+
+    /**
+     * 质检提交
+     *
+     * @param qcNo
+     * @param qcLineNo
+     * @param qualityStatus
+     * @param description
+     * @param updateBy
+     * @return
+     */
+    AjaxResult qcSubmit(String qcNo, String qcLineNo, String qualityStatus
+            , String description, String updateBy);
 }

+ 43 - 15
warewms-ams/src/main/java/com/ruoyi/ams/qc/service/IDocQcHeaderService.java

@@ -1,31 +1,33 @@
 package com.ruoyi.ams.qc.service;
 
 import java.util.List;
+
 import com.ruoyi.ams.qc.domain.DocQcHeader;
+import com.ruoyi.ams.qc.domain.vo.DocQcListVo;
+import com.ruoyi.common.core.domain.AjaxResult;
 
 /**
  * 质检Service接口
- * 
+ *
  * @author ruoyi
  * @date 2022-11-14
  */
-public interface IDocQcHeaderService 
-{
+public interface IDocQcHeaderService {
     /**
      * 查询质检
-     * 
+     *
      * @param qcno 质检主键
      * @return 质检
      */
-     DocQcHeader selectDocQcHeaderByQcno(String qcno);
+    DocQcHeader selectDocQcHeaderByQcno(String qcno);
 
     /**
      * 查询质检列表
-     * 
+     *
      * @param docQcHeader 质检
      * @return 质检集合
      */
-     List<DocQcHeader> selectDocQcHeaderList(DocQcHeader docQcHeader);
+    List<DocQcHeader> selectDocQcHeaderList(DocQcHeader docQcHeader);
 
     /**
      * 查询质检
@@ -37,33 +39,59 @@ public interface IDocQcHeaderService
 
     /**
      * 新增质检
-     * 
+     *
      * @param docQcHeader 质检
      * @return 结果
      */
-     int insertDocQcHeader(DocQcHeader docQcHeader);
+    int insertDocQcHeader(DocQcHeader docQcHeader);
 
     /**
      * 修改质检
-     * 
+     *
      * @param docQcHeader 质检
      * @return 结果
      */
-     int updateDocQcHeader(DocQcHeader docQcHeader);
+    int updateDocQcHeader(DocQcHeader docQcHeader);
 
     /**
      * 批量删除质检
-     * 
+     *
      * @param qcnos 需要删除的质检主键集合
      * @return 结果
      */
-     int deleteDocQcHeaderByQcnos(String[] qcnos);
+    int deleteDocQcHeaderByQcnos(String[] qcnos);
 
     /**
      * 删除质检信息
-     * 
+     *
      * @param qcno 质检主键
      * @return 结果
      */
-     int deleteDocQcHeaderByQcno(String qcno);
+    int deleteDocQcHeaderByQcno(String qcno);
+
+    /**
+     * 获得质检列表(根据库存)
+     *
+     * @return
+     */
+    List<DocQcListVo> getQcListByInvLotLocId();
+
+    /**
+     * 获取库位列表根据批号
+     *
+     * @param lotNumber
+     * @return
+     */
+    List<DocQcListVo> getLocationListByLotNumber(String lotNumber);
+
+    /**
+     * 质检提交
+     *
+     * @param lotNumber
+     * @param qualityStatus
+     * @param description
+     * @param updateBy
+     * @return
+     */
+    AjaxResult qcSubmit(String lotNumber, String qualityStatus, String description, String updateBy);
 }

+ 63 - 25
warewms-ams/src/main/java/com/ruoyi/ams/qc/service/impl/DocQcDetailsServiceImpl.java

@@ -1,6 +1,14 @@
 package com.ruoyi.ams.qc.service.impl;
 
 import java.util.List;
+
+import com.ruoyi.ams.inv.domain.InvLotLocId;
+import com.ruoyi.ams.inv.service.IInvLotLocIdService;
+import com.ruoyi.ams.qc.domain.DocQcHeader;
+import com.ruoyi.ams.qc.domain.vo.DocQcListVo;
+import com.ruoyi.ams.qc.service.IDocQcHeaderService;
+import com.ruoyi.base.constant.Constant;
+import com.ruoyi.common.core.domain.AjaxResult;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.ams.qc.mapper.DocQcDetailsMapper;
@@ -9,37 +17,38 @@ import com.ruoyi.ams.qc.service.IDocQcDetailsService;
 
 /**
  * 质检Service业务层处理
- * 
+ *
  * @author ruoyi
  * @date 2022-11-14
  */
 @Service
-public class DocQcDetailsServiceImpl implements IDocQcDetailsService 
-{
+public class DocQcDetailsServiceImpl implements IDocQcDetailsService {
+
     @Autowired
     private DocQcDetailsMapper docQcDetailsMapper;
 
+    @Autowired
+    private IDocQcHeaderService iDocQcHeaderService;
+
     /**
      * 查询质检
-     * 
+     *
      * @param qcno 质检主键
      * @return 质检
      */
     @Override
-    public DocQcDetails selectDocQcDetailsByQcno(String qcno)
-    {
-        return docQcDetailsMapper.selectDocQcDetailsByQcno(qcno);
+    public DocQcDetails selectDocQcDetailsByQcno(String qcno, String qclineno) {
+        return docQcDetailsMapper.selectDocQcDetailsByQcno(qcno, qclineno);
     }
 
     /**
      * 查询质检列表
-     * 
+     *
      * @param docQcDetails 质检
      * @return 质检
      */
     @Override
-    public List<DocQcDetails> selectDocQcDetailsList(DocQcDetails docQcDetails)
-    {
+    public List<DocQcDetails> selectDocQcDetailsList(DocQcDetails docQcDetails) {
         return docQcDetailsMapper.selectDocQcDetailsList(docQcDetails);
     }
 
@@ -50,10 +59,9 @@ public class DocQcDetailsServiceImpl implements IDocQcDetailsService
      * @return 质检
      */
     @Override
-    public DocQcDetails selectDocQcDetailsByModel(DocQcDetails docQcDetails)
-    {
+    public DocQcDetails selectDocQcDetailsByModel(DocQcDetails docQcDetails) {
         List<DocQcDetails> list = docQcDetailsMapper.selectDocQcDetailsList(docQcDetails);
-        if (list!=null && list.size()>0) {
+        if (list != null && list.size() > 0) {
             return list.get(0);
         } else {
             return null;
@@ -62,49 +70,79 @@ public class DocQcDetailsServiceImpl implements IDocQcDetailsService
 
     /**
      * 新增质检
-     * 
+     *
      * @param docQcDetails 质检
      * @return 结果
      */
     @Override
-    public int insertDocQcDetails(DocQcDetails docQcDetails)
-    {
+    public int insertDocQcDetails(DocQcDetails docQcDetails) {
         return docQcDetailsMapper.insertDocQcDetails(docQcDetails);
     }
 
     /**
      * 修改质检
-     * 
+     *
      * @param docQcDetails 质检
      * @return 结果
      */
     @Override
-    public int updateDocQcDetails(DocQcDetails docQcDetails)
-    {
+    public int updateDocQcDetails(DocQcDetails docQcDetails) {
         return docQcDetailsMapper.updateDocQcDetails(docQcDetails);
     }
 
     /**
      * 批量删除质检
-     * 
+     *
      * @param qcnos 需要删除的质检主键
      * @return 结果
      */
     @Override
-    public int deleteDocQcDetailsByQcnos(String[] qcnos)
-    {
+    public int deleteDocQcDetailsByQcnos(String[] qcnos) {
         return docQcDetailsMapper.deleteDocQcDetailsByQcnos(qcnos);
     }
 
     /**
      * 删除质检信息
-     * 
+     *
      * @param qcno 质检主键
      * @return 结果
      */
     @Override
-    public int deleteDocQcDetailsByQcno(String qcno)
-    {
+    public int deleteDocQcDetailsByQcno(String qcno) {
         return docQcDetailsMapper.deleteDocQcDetailsByQcno(qcno);
     }
+
+    /**
+     * 质检提交 此方法暂时作废(暂时不用验收单质检)
+     *
+     * @param qcNo
+     * @param qcLineNo
+     * @param qualityStatus
+     * @param description
+     * @param updateBy
+     * @return
+     */
+    @Override
+    public AjaxResult qcSubmit(String qcNo, String qcLineNo, String qualityStatus, String description, String updateBy) {
+
+        if (Constant.QUALITY_STATUS.DJ.getValue().equals(qualityStatus)) {
+            return AjaxResult.error("质量状态不能为待检!");
+        }
+
+        // 单头
+        DocQcHeader docQcHeader = iDocQcHeaderService.selectDocQcHeaderByQcno(qcNo);
+        if (docQcHeader == null) {
+            return AjaxResult.error("验收头单不存在!" + qcNo);
+        }
+        // 当前子单
+        DocQcDetails docQcDetails = selectDocQcDetailsByQcno(qcNo, qcLineNo);
+        if (docQcDetails == null) {
+            return AjaxResult.error("验收子单不存在!" + qcNo);
+        }
+
+        // 验证
+
+
+        return AjaxResult.success();
+    }
 }

+ 69 - 33
warewms-ams/src/main/java/com/ruoyi/ams/qc/service/impl/DocQcHeaderServiceImpl.java

@@ -1,10 +1,18 @@
 package com.ruoyi.ams.qc.service.impl;
 
 import java.util.List;
+
+import com.ruoyi.ams.inv.domain.vo.InvLotLocIdLotattVO;
+import com.ruoyi.ams.inv.mapper.InvLotLocIdMapper;
+import com.ruoyi.ams.qc.domain.vo.DocQcListVo;
+import com.ruoyi.base.constant.Constant;
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
 import java.util.ArrayList;
+
 import com.ruoyi.common.utils.StringUtils;
 import org.springframework.transaction.annotation.Transactional;
 import com.ruoyi.ams.qc.domain.DocQcDetails;
@@ -14,37 +22,37 @@ import com.ruoyi.ams.qc.service.IDocQcHeaderService;
 
 /**
  * 质检Service业务层处理
- * 
+ *
  * @author ruoyi
  * @date 2022-11-14
  */
 @Service
-public class DocQcHeaderServiceImpl implements IDocQcHeaderService 
-{
+public class DocQcHeaderServiceImpl implements IDocQcHeaderService {
     @Autowired
     private DocQcHeaderMapper docQcHeaderMapper;
 
+    @Autowired
+    private InvLotLocIdMapper invLotLocIdMapper;
+
     /**
      * 查询质检
-     * 
+     *
      * @param qcno 质检主键
      * @return 质检
      */
     @Override
-    public DocQcHeader selectDocQcHeaderByQcno(String qcno)
-    {
+    public DocQcHeader selectDocQcHeaderByQcno(String qcno) {
         return docQcHeaderMapper.selectDocQcHeaderByQcno(qcno);
     }
 
     /**
      * 查询质检列表
-     * 
+     *
      * @param docQcHeader 质检
      * @return 质检
      */
     @Override
-    public List<DocQcHeader> selectDocQcHeaderList(DocQcHeader docQcHeader)
-    {
+    public List<DocQcHeader> selectDocQcHeaderList(DocQcHeader docQcHeader) {
         return docQcHeaderMapper.selectDocQcHeaderList(docQcHeader);
     }
 
@@ -55,10 +63,9 @@ public class DocQcHeaderServiceImpl implements IDocQcHeaderService
      * @return 质检
      */
     @Override
-    public DocQcHeader selectDocQcHeaderByModel(DocQcHeader docQcHeader)
-    {
+    public DocQcHeader selectDocQcHeaderByModel(DocQcHeader docQcHeader) {
         List<DocQcHeader> list = docQcHeaderMapper.selectDocQcHeaderList(docQcHeader);
-        if (list!=null && list.size()>0) {
+        if (list != null && list.size() > 0) {
             return list.get(0);
         } else {
             return null;
@@ -67,14 +74,13 @@ public class DocQcHeaderServiceImpl implements IDocQcHeaderService
 
     /**
      * 新增质检
-     * 
+     *
      * @param docQcHeader 质检
      * @return 结果
      */
     @Transactional
     @Override
-    public int insertDocQcHeader(DocQcHeader docQcHeader)
-    {
+    public int insertDocQcHeader(DocQcHeader docQcHeader) {
         docQcHeader.setCreateTime(DateUtils.getNowDate());
         int rows = docQcHeaderMapper.insertDocQcHeader(docQcHeader);
         insertDocQcDetails(docQcHeader);
@@ -83,14 +89,13 @@ public class DocQcHeaderServiceImpl implements IDocQcHeaderService
 
     /**
      * 修改质检
-     * 
+     *
      * @param docQcHeader 质检
      * @return 结果
      */
     @Transactional
     @Override
-    public int updateDocQcHeader(DocQcHeader docQcHeader)
-    {
+    public int updateDocQcHeader(DocQcHeader docQcHeader) {
         docQcHeader.setUpdateTime(DateUtils.getNowDate());
         docQcHeaderMapper.deleteDocQcDetailsByQcno(docQcHeader.getQcno());
         insertDocQcDetails(docQcHeader);
@@ -99,53 +104,84 @@ public class DocQcHeaderServiceImpl implements IDocQcHeaderService
 
     /**
      * 批量删除质检
-     * 
+     *
      * @param qcnos 需要删除的质检主键
      * @return 结果
      */
     @Transactional
     @Override
-    public int deleteDocQcHeaderByQcnos(String[] qcnos)
-    {
+    public int deleteDocQcHeaderByQcnos(String[] qcnos) {
         docQcHeaderMapper.deleteDocQcDetailsByQcnos(qcnos);
         return docQcHeaderMapper.deleteDocQcHeaderByQcnos(qcnos);
     }
 
     /**
      * 删除质检信息
-     * 
+     *
      * @param qcno 质检主键
      * @return 结果
      */
     @Transactional
     @Override
-    public int deleteDocQcHeaderByQcno(String qcno)
-    {
+    public int deleteDocQcHeaderByQcno(String qcno) {
         docQcHeaderMapper.deleteDocQcDetailsByQcno(qcno);
         return docQcHeaderMapper.deleteDocQcHeaderByQcno(qcno);
     }
 
     /**
      * 新增质检信息
-     * 
+     *
      * @param docQcHeader 质检对象
      */
-    public void insertDocQcDetails(DocQcHeader docQcHeader)
-    {
+    public void insertDocQcDetails(DocQcHeader docQcHeader) {
         List<DocQcDetails> docQcDetailsList = docQcHeader.getDocQcDetailsList();
         String qcno = docQcHeader.getQcno();
-        if (StringUtils.isNotNull(docQcDetailsList))
-        {
+        if (StringUtils.isNotNull(docQcDetailsList)) {
             List<DocQcDetails> list = new ArrayList<DocQcDetails>();
-            for (DocQcDetails docQcDetails : docQcDetailsList)
-            {
+            for (DocQcDetails docQcDetails : docQcDetailsList) {
                 docQcDetails.setQcno(qcno);
                 list.add(docQcDetails);
             }
-            if (list.size() > 0)
-            {
+            if (list.size() > 0) {
                 docQcHeaderMapper.batchDocQcDetails(list);
             }
         }
     }
+
+    @Override
+    public List<DocQcListVo> getQcListByInvLotLocId() {
+        List<InvLotLocIdLotattVO> qualityInspectionList = invLotLocIdMapper.getQualityInspectionList();
+        List<DocQcListVo> docQcListVoList = new ArrayList<>();
+        qualityInspectionList.forEach(t -> {
+            docQcListVoList.add(new DocQcListVo(null, t.getLotatt01()));
+        });
+        return docQcListVoList;
+    }
+
+    @Override
+    public List<DocQcListVo> getLocationListByLotNumber(String lotNumber) {
+        List<InvLotLocIdLotattVO> invLotLocIdLotattVOList = invLotLocIdMapper.getQualityLocationListByLotNumber(lotNumber);
+        List<DocQcListVo> docQcListVoList = new ArrayList<>();
+        invLotLocIdLotattVOList.forEach(t -> {
+            docQcListVoList.add(new DocQcListVo(t.getLocationNo(), null));
+        });
+        return docQcListVoList;
+    }
+
+    @Override
+    public AjaxResult qcSubmit(String lotNumber, String qualityStatus, String description, String updateBy) {
+        int successQuantity;
+
+        if (Constant.QUALITY_STATUS.DJ.getValue().equals(qualityStatus)) {
+            return AjaxResult.error("提交质量状态不能为待检!");
+        }
+
+        // 修改批号对应的库存质量状态
+        int i = invLotLocIdMapper.updateQualityStatusByLotNumber(lotNumber, qualityStatus);
+        successQuantity = i;
+
+        // todo 事务
+
+        return AjaxResult.success("操作成功!", successQuantity);
+    }
 }

+ 33 - 0
warewms-ams/src/main/resources/mapper/ams/InvLotLocIdMapper.xml

@@ -122,6 +122,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="selectInvLotLocIdVo"/>
         <where>
             <if test="locationId != null  and locationId != ''"> and location_id = #{locationId}</if>
+            <if test="customerId != null  and customerId != ''"> and customer_id = #{customerId}</if>
+            <if test="sku != null  and sku != ''"> and sku = #{sku}</if>
+            <if test="lotnum != null  and lotnum != ''"> and lotnum = #{lotnum}</if>
             <if test="traceid != null  and traceid != ''"> and traceid = #{traceid}</if>
         </where>
     </select>
@@ -444,4 +447,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <delete id="unlockInv">
         delete from inv_lot_loc_id where location_id = #{locationId} and sku = #{sku} and customer_id = #{customerId}
     </delete>
+
+
+    <select id="getQualityInspectionList" resultMap="InvLotLocIdLotattResult">
+        select
+            t2.lotatt01
+        from inv_lot_loc_id t1
+        left join inv_lot_att t2 on t2.lotnum = t1.lotnum
+        where t2.lotatt05 = 'DJ'
+        group by t2.lotatt01
+        order by t2.lotatt01
+    </select>
+
+    <select id="getQualityLocationListByLotNumber" resultMap="InvLotLocIdLotattResult">
+        select
+            t3.location_no
+        from inv_lot_loc_id t1
+        left join inv_lot_att t2 on t2.lotnum = t1.lotnum
+        left join base_location_info t3 on t3.id = t1.location_id
+        where t2.lotatt01 = #{lotNumber} and t2.lotatt05 = 'DJ'
+        group by t1.location_id
+        order by t1.location_id
+    </select>
+
+    <update id="updateQualityStatusByLotNumber" parameterType="String">
+        UPDATE inv_lot_att t1
+        SET t1.lotatt05 = #{qualityStatus}
+        WHERE
+            t1.lotatt01 = #{lotNumber}
+          AND t1.lotnum IN ( SELECT lotnum FROM inv_lot_loc_id )
+    </update>
 </mapper>

+ 11 - 11
warewms-ams/src/main/resources/mapper/docQc/DocQcDetailsMapper.xml

@@ -3,7 +3,7 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.ams.qc.mapper.DocQcDetailsMapper">
-    
+
     <resultMap type="DocQcDetails" id="DocQcDetailsResult">
         <result property="qcno"    column="qcno"    />
         <result property="qclineno"    column="qclineno"    />
@@ -33,12 +33,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectDocQcDetailsVo">
-        select qcno, qclineno, linestatus, palineno, customerid, sku, lotnum, paqty_expected, qcqty_expected, qcqty_completed, userdefine1, userdefine2, userdefine3, userdefine4, userdefine5, qcdescr, qcresult, filecontent, notes, addtime, addwho, edittime, editwho, packid, transactionid from doc_qc_details
+        select qcno, qclineno, linestatus, palineno, customerid, sku, lotnum, paqty_expected, qcqty_expected, qcqty_completed, userdefine1, userdefine2, userdefine3, userdefine4, userdefine5, qcdescr, qcresult, filecontent, notes, addtime, addwho, edittime, editwho, packid, transactionid from wms_doc_qc_details
     </sql>
 
     <select id="selectDocQcDetailsList" parameterType="DocQcDetails" resultMap="DocQcDetailsResult">
         <include refid="selectDocQcDetailsVo"/>
-        <where>  
+        <where>
             <if test="linestatus != null  and linestatus != ''"> and linestatus = #{linestatus}</if>
             <if test="palineno != null "> and palineno = #{palineno}</if>
             <if test="customerid != null  and customerid != ''"> and customerid = #{customerid}</if>
@@ -64,14 +64,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="transactionid != null  and transactionid != ''"> and transactionid = #{transactionid}</if>
         </where>
     </select>
-    
+
     <select id="selectDocQcDetailsByQcno" parameterType="String" resultMap="DocQcDetailsResult">
         <include refid="selectDocQcDetailsVo"/>
-        where qcno = #{qcno}
+        where qcno = #{qcno} and qclineno = #{qclineno}
     </select>
-        
+
     <insert id="insertDocQcDetails" parameterType="DocQcDetails">
-        insert into doc_qc_details
+        insert into wms_doc_qc_details
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="qcno != null">qcno,</if>
             <if test="qclineno != null">qclineno,</if>
@@ -129,7 +129,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </insert>
 
     <update id="updateDocQcDetails" parameterType="DocQcDetails">
-        update doc_qc_details
+        update wms_doc_qc_details
         <trim prefix="SET" suffixOverrides=",">
             <if test="qclineno != null">qclineno = #{qclineno},</if>
             <if test="linestatus != null">linestatus = #{linestatus},</if>
@@ -160,13 +160,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <delete id="deleteDocQcDetailsByQcno" parameterType="String">
-        delete from doc_qc_details where qcno = #{qcno}
+        delete from wms_doc_qc_details where qcno = #{qcno}
     </delete>
 
     <delete id="deleteDocQcDetailsByQcnos" parameterType="String">
-        delete from doc_qc_details where qcno in 
+        delete from wms_doc_qc_details where qcno in
         <foreach item="qcno" collection="array" open="(" separator="," close=")">
             #{qcno}
         </foreach>
     </delete>
-</mapper>
+</mapper>

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 16 - 16
warewms-ams/src/main/resources/mapper/docQc/DocQcHeaderMapper.xml


+ 30 - 0
warewms-base/src/main/java/com/ruoyi/base/constant/Constant.java

@@ -167,4 +167,34 @@ public class Constant {
             return value;
         }
     }
+
+
+    /**
+     * 质量状态
+     */
+    public enum QUALITY_STATUS {
+        /***
+         * 合格
+         */
+        HG("HG"),
+        /***
+         * 不合格
+         */
+        BHG("BHG"),
+        /***
+         * 待检
+         */
+        DJ("DJ");
+
+        private String value;
+
+        QUALITY_STATUS(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+    }
+
 }