Prechádzať zdrojové kódy

Merge branch 'master' of http://62.234.61.92:3000/wjm/mec-cloud_IntelligentManufacturing_CLIENT

lph 1 rok pred
rodič
commit
b745e8adb9

+ 89 - 0
zkqy-admin/src/main/java/com/zkqy/web/controller/chemicalFiber/QualityInspectionCertificateController.java

@@ -0,0 +1,89 @@
+package com.zkqy.web.controller.chemicalFiber;
+
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.service.ICommonService;
+import com.zkqy.execution.produce.dispersed.service.impl.runbpm.chemicalfiber.QualityInspectionCertificate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/QualityInspectionCertificate")
+public class QualityInspectionCertificateController {
+
+    @Autowired
+    private ICommonService commonService;
+
+    /**
+     * 新增质检单
+     */
+    @PostMapping("/addQualityInspectionCertificate")
+    public AjaxResult addQualityInspectionCertificate(@RequestBody Map<String,Object> map){
+        //新增检验单表
+        Map<String,String> inspectionList = (Map<String,String>) map.get("inspectionList");
+        // 封装检验单表新增数据
+        CommonEntity commonEntity = new CommonEntity();
+        commonEntity.getBasicMap().put("tableName","inspection_list");
+//        List<Map<String,String>> addList = new ArrayList<>();
+//        addList.add(inspectionList);
+        commonEntity.getAddListMap().add(inspectionList);
+        commonService.batchInsert(commonEntity);
+        //新增检验单详情表
+        List<Map<String, String>> inspectionListInfo = (List<Map<String, String>>) map.get("inspectionListInfo");
+        // 封装检验单表新增数据
+        CommonEntity commonEntity1 = new CommonEntity();
+        commonEntity1.getBasicMap().put("tableName","inspection_list_info");
+        commonEntity1.getAddListMap().addAll(inspectionListInfo);
+        commonService.batchInsert(commonEntity1);
+        return AjaxResult.success();
+    }
+
+    @PostMapping("/editQualityInspectionCertificate")
+    public AjaxResult editQualityInspectionCertificate(@RequestBody Map<String,Object> map){
+        // 删除检验单表
+        Map<String,String> inspectionList = (Map<String,String>) map.get("inspectionList");
+        CommonEntity commonEntity = new CommonEntity();
+        commonEntity.getBasicMap().put("tableName","inspection_list");
+        Map<String,Object> conditions = new HashMap<>();
+        List<String> list = new ArrayList<>();
+        list.add(inspectionList.get("inspectionListNo"));
+        conditions.put("inspection_list_no",list);
+        commonEntity.getConditionMap().putAll(conditions);
+        commonService.batchDelete(commonEntity);
+        // 删除检验单详情表
+        CommonEntity commonEntity3 = new CommonEntity();
+        commonEntity3.getBasicMap().put("tableName","inspection_list_info");
+        commonEntity3.getConditionMap().putAll(conditions);
+        commonService.batchDelete(commonEntity3);
+
+
+        //新增检验单表
+        Map<String,String> inspectionList1 = (Map<String,String>) map.get("inspectionList");
+        // 封装检验单表新增数据
+        CommonEntity commonEntity1 = new CommonEntity();
+        commonEntity1.getBasicMap().put("tableName","inspection_list");
+//        List<Map<String,String>> addList = new ArrayList<>();
+//        addList.add(inspectionList);
+        commonEntity1.getAddListMap().add(inspectionList1);
+        commonService.batchInsert(commonEntity1);
+        //新增检验单详情表
+        List<Map<String, String>> inspectionListInfo = (List<Map<String, String>>) map.get("inspectionListInfo");
+        // 封装检验单表新增数据
+        CommonEntity commonEntity2 = new CommonEntity();
+        commonEntity2.getBasicMap().put("tableName","inspection_list_info");
+        commonEntity2.getAddListMap().addAll(inspectionListInfo);
+        commonService.batchInsert(commonEntity2);
+        return AjaxResult.success();
+
+
+    }
+
+}

+ 5 - 0
zkqy-admin/src/main/java/com/zkqy/web/controller/system/SysUserController.java

@@ -224,6 +224,11 @@ public class SysUserController extends BaseController {
         AjaxResult ajax = AjaxResult.success();
         SysUser user = userService.selectUserById(userId);
         List<SysRole> roles = roleService.selectRolesByUserId(userId);
+        roles.forEach(r -> {
+            if (r.getTenantId() == null) {
+                r.setTenantId(0L);
+            }
+        });
         ajax.put("user", user);
         ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin() && r.getTenantId().equals(getTenantId())).collect(Collectors.toList()));
         return ajax;

+ 126 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/controller/MaterialCirculationController.java

@@ -0,0 +1,126 @@
+package com.zkqy.business.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.business.domain.MaterialCirculation;
+import com.zkqy.business.service.IMaterialCirculationService;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.page.TableDataInfo;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import org.springframework.security.access.prepost.PreAuthorize;
+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.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 物料流转Controller
+ * 
+ * @author ruoyi
+ * @date 2024-03-08
+ */
+@RestController
+@RequestMapping("/zkqy/circulation")
+public class MaterialCirculationController extends BaseController
+{
+    @Autowired
+    private IMaterialCirculationService materialCirculationService;
+
+    /**
+     * 查询物料流转列表
+     */
+    @PreAuthorize("@ss.hasPermi('zkqy:circulation:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(MaterialCirculation materialCirculation)
+    {
+        startPage();
+        List<MaterialCirculation> list = materialCirculationService.selectMaterialCirculationList(materialCirculation);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出物料流转列表
+     */
+    @PreAuthorize("@ss.hasPermi('zkqy:circulation:export')")
+    @Log(title = "物料流转", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, MaterialCirculation materialCirculation)
+    {
+        List<MaterialCirculation> list = materialCirculationService.selectMaterialCirculationList(materialCirculation);
+        ExcelUtil<MaterialCirculation> util = new ExcelUtil<MaterialCirculation>(MaterialCirculation.class);
+        util.exportExcel(response, list, "物料流转数据");
+    }
+
+    /**
+     * 获取物料流转详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('zkqy:circulation:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(materialCirculationService.selectMaterialCirculationById(id));
+    }
+
+    /**
+     * 新增物料流转
+     */
+    @PreAuthorize("@ss.hasPermi('zkqy:circulation:add')")
+    @Log(title = "物料流转", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody MaterialCirculation materialCirculation)
+    {
+        return toAjax(materialCirculationService.insertMaterialCirculation(materialCirculation));
+    }
+
+    /**
+     * 修改物料流转
+     */
+    @PreAuthorize("@ss.hasPermi('zkqy:circulation:edit')")
+    @Log(title = "物料流转", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody MaterialCirculation materialCirculation)
+    {
+        return toAjax(materialCirculationService.updateMaterialCirculation(materialCirculation));
+    }
+
+    /**
+     * 删除物料流转
+     */
+    @PreAuthorize("@ss.hasPermi('zkqy:circulation:remove')")
+    @Log(title = "物料流转", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(materialCirculationService.deleteMaterialCirculationByIds(ids));
+    }
+
+    /**
+     * 手持机列表
+     */
+    @GetMapping("/handheldList")
+    public TableDataInfo handheldList(MaterialCirculation materialCirculation)
+    {
+        startPage();
+        List<MaterialCirculation> list = materialCirculationService.selectHandheldMaterialCirculationList(materialCirculation);
+        return getDataTable(list);
+    }
+
+    /**
+     * 手持机已取货接口
+     */
+    @PostMapping("/handheldTakeDelivery")
+    public AjaxResult handheldTakeDelivery(@RequestBody MaterialCirculation materialCirculation){
+        return materialCirculationService.handheldTakeDelivery(materialCirculation);
+    }
+
+
+}

+ 251 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/MaterialCirculation.java

@@ -0,0 +1,251 @@
+package com.zkqy.business.domain;
+
+import com.zkqy.common.annotation.Excel;
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 物料流转对象 material_circulation
+ * 
+ * @author ruoyi
+ * @date 2024-03-08
+ */
+public class MaterialCirculation extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键自增 */
+    private Long id;
+
+    /** 货品名称 */
+    @Excel(name = "货品名称")
+    private String goodsname;
+
+    /** 货品编号 */
+    @Excel(name = "货品编号")
+    private String goodsnum;
+
+    /** 规格 */
+    @Excel(name = "规格")
+    private String specifications;
+
+    /** 重量 */
+    @Excel(name = "重量")
+    private String weight;
+
+    /** 接收工序 */
+    @Excel(name = "接收工序")
+    private String receivingProcess;
+
+    /** 审批状态(0:未发起、1:待审批、2:已通过 3:已驳回) */
+    @Excel(name = "审批状态", readConverterExp = "0=:未发起、1:待审批、2:已通过,3=:已驳回")
+    private String approvalStatus;
+
+    /** 单据状态(0:未完成、1:待取货、2:已取货、3:已完成) */
+    @Excel(name = "单据状态", readConverterExp = "0=:未完成、1:待取货、2:已取货、3:已完成")
+    private String documentStatus;
+
+    /** 提交人 */
+    @Excel(name = "提交人")
+    private String submitter;
+
+    /** 审批人 */
+    @Excel(name = "审批人")
+    private String approvedBy;
+
+    /** 完成人 */
+    @Excel(name = "完成人")
+    private String completedBy;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 任务编码 */
+    @Excel(name = "任务编码")
+    private String taskProcessKey;
+
+    /** 任务节点编码 */
+    @Excel(name = "任务节点编码")
+    private String taskNodeKey;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setGoodsname(String goodsname) 
+    {
+        this.goodsname = goodsname;
+    }
+
+    public String getGoodsname() 
+    {
+        return goodsname;
+    }
+    public void setGoodsnum(String goodsnum) 
+    {
+        this.goodsnum = goodsnum;
+    }
+
+    public String getGoodsnum() 
+    {
+        return goodsnum;
+    }
+    public void setSpecifications(String specifications) 
+    {
+        this.specifications = specifications;
+    }
+
+    public String getSpecifications() 
+    {
+        return specifications;
+    }
+    public void setWeight(String weight) 
+    {
+        this.weight = weight;
+    }
+
+    public String getWeight() 
+    {
+        return weight;
+    }
+    public void setReceivingProcess(String receivingProcess) 
+    {
+        this.receivingProcess = receivingProcess;
+    }
+
+    public String getReceivingProcess() 
+    {
+        return receivingProcess;
+    }
+    public void setApprovalStatus(String approvalStatus) 
+    {
+        this.approvalStatus = approvalStatus;
+    }
+
+    public String getApprovalStatus() 
+    {
+        return approvalStatus;
+    }
+    public void setDocumentStatus(String documentStatus) 
+    {
+        this.documentStatus = documentStatus;
+    }
+
+    public String getDocumentStatus() 
+    {
+        return documentStatus;
+    }
+    public void setSubmitter(String submitter) 
+    {
+        this.submitter = submitter;
+    }
+
+    public String getSubmitter() 
+    {
+        return submitter;
+    }
+    public void setApprovedBy(String approvedBy) 
+    {
+        this.approvedBy = approvedBy;
+    }
+
+    public String getApprovedBy() 
+    {
+        return approvedBy;
+    }
+    public void setCompletedBy(String completedBy) 
+    {
+        this.completedBy = completedBy;
+    }
+
+    public String getCompletedBy() 
+    {
+        return completedBy;
+    }
+    public void setCreateById(Long createById) 
+    {
+        this.createById = createById;
+    }
+
+    public Long getCreateById() 
+    {
+        return createById;
+    }
+    public void setUpdateById(Long updateById) 
+    {
+        this.updateById = updateById;
+    }
+
+    public Long getUpdateById() 
+    {
+        return updateById;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setTaskProcessKey(String taskProcessKey) 
+    {
+        this.taskProcessKey = taskProcessKey;
+    }
+
+    public String getTaskProcessKey() 
+    {
+        return taskProcessKey;
+    }
+    public void setTaskNodeKey(String taskNodeKey) 
+    {
+        this.taskNodeKey = taskNodeKey;
+    }
+
+    public String getTaskNodeKey() 
+    {
+        return taskNodeKey;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("goodsname", getGoodsname())
+            .append("goodsnum", getGoodsnum())
+            .append("specifications", getSpecifications())
+            .append("weight", getWeight())
+            .append("receivingProcess", getReceivingProcess())
+            .append("approvalStatus", getApprovalStatus())
+            .append("documentStatus", getDocumentStatus())
+            .append("submitter", getSubmitter())
+            .append("approvedBy", getApprovedBy())
+            .append("completedBy", getCompletedBy())
+            .append("remark", getRemark())
+            .append("createById", getCreateById())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateById", getUpdateById())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("delFlag", getDelFlag())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .toString();
+    }
+}

+ 69 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/MaterialCirculationMapper.java

@@ -0,0 +1,69 @@
+package com.zkqy.business.mapper;
+
+import com.zkqy.business.domain.MaterialCirculation;
+
+import java.util.List;
+
+
+/**
+ * 物料流转Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2024-03-08
+ */
+public interface MaterialCirculationMapper 
+{
+    /**
+     * 查询物料流转
+     * 
+     * @param id 物料流转主键
+     * @return 物料流转
+     */
+    MaterialCirculation selectMaterialCirculationById(Long id);
+
+    /**
+     * 查询物料流转列表
+     * 
+     * @param materialCirculation 物料流转
+     * @return 物料流转集合
+     */
+    List<MaterialCirculation> selectMaterialCirculationList(MaterialCirculation materialCirculation);
+
+    /**
+     * 新增物料流转
+     * 
+     * @param materialCirculation 物料流转
+     * @return 结果
+     */
+    int insertMaterialCirculation(MaterialCirculation materialCirculation);
+
+    /**
+     * 修改物料流转
+     * 
+     * @param materialCirculation 物料流转
+     * @return 结果
+     */
+    int updateMaterialCirculation(MaterialCirculation materialCirculation);
+
+    /**
+     * 删除物料流转
+     * 
+     * @param id 物料流转主键
+     * @return 结果
+     */
+    int deleteMaterialCirculationById(Long id);
+
+    /**
+     * 批量删除物料流转
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteMaterialCirculationByIds(Long[] ids);
+
+    /**
+     * 查询手持机物料流转列表
+     */
+    List<MaterialCirculation> selectHandheldMaterialCirculationList(MaterialCirculation materialCirculation);
+
+}

+ 8 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/MaterialInventoryMapper.java

@@ -70,4 +70,12 @@ public interface MaterialInventoryMapper
      * @return 结果
      */
     public int deleteMaterialInventoryByIds(Long[] ids);
+
+    /**
+     * 查询物料库存
+     *
+     * @param materialCode 物料库存编码
+     * @return 物料库存
+     */
+    MaterialInventory selectMaterialInventoryByMaterialCode(String  materialCode);
 }

+ 73 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/IMaterialCirculationService.java

@@ -0,0 +1,73 @@
+package com.zkqy.business.service;
+
+import com.zkqy.business.domain.MaterialCirculation;
+import com.zkqy.common.core.domain.AjaxResult;
+
+import java.util.List;
+
+/**
+ * 物料流转Service接口
+ * 
+ * @author ruoyi
+ * @date 2024-03-08
+ */
+public interface IMaterialCirculationService 
+{
+    /**
+     * 查询物料流转
+     * 
+     * @param id 物料流转主键
+     * @return 物料流转
+     */
+    public MaterialCirculation selectMaterialCirculationById(Long id);
+
+    /**
+     * 查询物料流转列表
+     * 
+     * @param materialCirculation 物料流转
+     * @return 物料流转集合
+     */
+    public List<MaterialCirculation> selectMaterialCirculationList(MaterialCirculation materialCirculation);
+
+    /**
+     * 新增物料流转
+     * 
+     * @param materialCirculation 物料流转
+     * @return 结果
+     */
+    public int insertMaterialCirculation(MaterialCirculation materialCirculation);
+
+    /**
+     * 修改物料流转
+     * 
+     * @param materialCirculation 物料流转
+     * @return 结果
+     */
+    public int updateMaterialCirculation(MaterialCirculation materialCirculation);
+
+    /**
+     * 批量删除物料流转
+     * 
+     * @param ids 需要删除的物料流转主键集合
+     * @return 结果
+     */
+    public int deleteMaterialCirculationByIds(Long[] ids);
+
+    /**
+     * 删除物料流转信息
+     * 
+     * @param id 物料流转主键
+     * @return 结果
+     */
+    public int deleteMaterialCirculationById(Long id);
+
+    /**
+     * 查询手持机物料流转列表
+     */
+    List<MaterialCirculation> selectHandheldMaterialCirculationList(MaterialCirculation materialCirculation);
+
+    /**
+     * 手持机已取货接口
+     */
+    AjaxResult handheldTakeDelivery(MaterialCirculation materialCirculation);
+}

+ 142 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/MaterialCirculationServiceImpl.java

@@ -0,0 +1,142 @@
+package com.zkqy.business.service.impl;
+
+import java.util.List;
+
+import com.zkqy.business.domain.MaterialCirculation;
+import com.zkqy.business.domain.MaterialInventory;
+import com.zkqy.business.domain.Materiel;
+import com.zkqy.business.mapper.MaterialCirculationMapper;
+import com.zkqy.business.mapper.MaterialInventoryMapper;
+import com.zkqy.business.mapper.MaterielMapper;
+import com.zkqy.business.service.IMaterialCirculationService;
+import com.zkqy.business.service.IMaterielService;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 物料流转Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2024-03-08
+ */
+@Service
+public class MaterialCirculationServiceImpl implements IMaterialCirculationService
+{
+    @Autowired
+    private MaterialCirculationMapper materialCirculationMapper;
+
+    @Autowired
+    private MaterialInventoryMapper materialInventoryMapper;
+
+    /**
+     * 查询物料流转
+     * 
+     * @param id 物料流转主键
+     * @return 物料流转
+     */
+    @Override
+    public MaterialCirculation selectMaterialCirculationById(Long id)
+    {
+        return materialCirculationMapper.selectMaterialCirculationById(id);
+    }
+
+    /**
+     * 查询物料流转列表
+     * 
+     * @param materialCirculation 物料流转
+     * @return 物料流转
+     */
+    @Override
+    public List<MaterialCirculation> selectMaterialCirculationList(MaterialCirculation materialCirculation)
+    {
+        return materialCirculationMapper.selectMaterialCirculationList(materialCirculation);
+    }
+
+    /**
+     * 新增物料流转
+     * 
+     * @param materialCirculation 物料流转
+     * @return 结果
+     */
+    @Override
+    public int insertMaterialCirculation(MaterialCirculation materialCirculation)
+    {
+        materialCirculation.setCreateTime(DateUtils.getNowDate());
+        return materialCirculationMapper.insertMaterialCirculation(materialCirculation);
+    }
+
+    /**
+     * 修改物料流转
+     * 
+     * @param materialCirculation 物料流转
+     * @return 结果
+     */
+    @Override
+    public int updateMaterialCirculation(MaterialCirculation materialCirculation)
+    {
+        materialCirculation.setUpdateTime(DateUtils.getNowDate());
+        return materialCirculationMapper.updateMaterialCirculation(materialCirculation);
+    }
+
+    /**
+     * 批量删除物料流转
+     * 
+     * @param ids 需要删除的物料流转主键
+     * @return 结果
+     */
+    @Override
+    public int deleteMaterialCirculationByIds(Long[] ids)
+    {
+        return materialCirculationMapper.deleteMaterialCirculationByIds(ids);
+    }
+
+    /**
+     * 删除物料流转信息
+     * 
+     * @param id 物料流转主键
+     * @return 结果
+     */
+    @Override
+    public int deleteMaterialCirculationById(Long id)
+    {
+        return materialCirculationMapper.deleteMaterialCirculationById(id);
+    }
+
+    @Override
+    public List<MaterialCirculation> selectHandheldMaterialCirculationList(MaterialCirculation materialCirculation) {
+        return materialCirculationMapper.selectHandheldMaterialCirculationList(materialCirculation);
+    }
+
+    @Override
+    @Transactional
+    public AjaxResult handheldTakeDelivery(MaterialCirculation materialCirculation) {
+
+        //判断当前物料库存是否满足出库
+        MaterialInventory materialInventory = materialInventoryMapper.selectMaterialInventoryByMaterialCode(materialCirculation.getGoodsnum());
+        if (materialInventory == null) {
+//            return AjaxResult.warn("当前库存中无此货品信息!");
+            return AjaxResult.warn("库存中无此货品!");
+        }
+        Double weight = Double.valueOf(materialCirculation.getWeight());
+        //判断出库数量是否大于库存数量
+        if(weight > materialInventory.getQuantity()){
+//            return AjaxResult.warn("当前库存中货品数量不足!");
+            return AjaxResult.warn("库存数量不足!");
+        }else {
+            Double subtract = materialInventory.getQuantity() - weight;
+            MaterialInventory materialInventory1 = new MaterialInventory();
+            materialInventory1.setId(materialInventory.getId());
+            materialInventory1.setQuantity(subtract);
+            materialInventoryMapper.updateMaterialInventory(materialInventory1);
+        }
+        //修改当前物料流转单状态为已取货
+        MaterialCirculation materialCirculation1 = new MaterialCirculation();
+        materialCirculation1.setId(materialCirculation.getId());
+        materialCirculation1.setDocumentStatus("2");
+        return AjaxResult.success("取货成功!");
+
+    }
+}

+ 180 - 0
zkqy-custom-business/src/main/resources/mapper/MaterialCirculationMapper.xml

@@ -0,0 +1,180 @@
+<?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.zkqy.business.mapper.MaterialCirculationMapper">
+    
+    <resultMap type="com.zkqy.business.domain.MaterialCirculation" id="MaterialCirculationResult">
+        <result property="id"    column="id"    />
+        <result property="goodsname"    column="goodsname"    />
+        <result property="goodsnum"    column="goodsnum"    />
+        <result property="specifications"    column="specifications"    />
+        <result property="weight"    column="weight"    />
+        <result property="receivingProcess"    column="receiving_process"    />
+        <result property="approvalStatus"    column="approval_status"    />
+        <result property="documentStatus"    column="document_status"    />
+        <result property="submitter"    column="submitter"    />
+        <result property="approvedBy"    column="approved_by"    />
+        <result property="completedBy"    column="completed_by"    />
+        <result property="remark"    column="remark"    />
+        <result property="createById"    column="create_by_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateById"    column="update_by_id"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="taskProcessKey"    column="task_process_key"    />
+        <result property="taskNodeKey"    column="task_node_key"    />
+    </resultMap>
+
+    <sql id="selectMaterialCirculationVo">
+        select id, goodsname, goodsnum, specifications, weight, receiving_process, approval_status, document_status, submitter, approved_by, completed_by, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, task_process_key, task_node_key from material_circulation
+    </sql>
+
+    <select id="selectMaterialCirculationList" parameterType="com.zkqy.business.domain.MaterialCirculation" resultMap="MaterialCirculationResult">
+        <include refid="selectMaterialCirculationVo"/>
+        <where>  
+            <if test="goodsname != null  and goodsname != ''"> and goodsname like concat('%', #{goodsname}, '%')</if>
+            <if test="goodsnum != null  and goodsnum != ''"> and goodsnum = #{goodsnum}</if>
+            <if test="specifications != null  and specifications != ''"> and specifications = #{specifications}</if>
+            <if test="weight != null  and weight != ''"> and weight = #{weight}</if>
+            <if test="receivingProcess != null  and receivingProcess != ''"> and receiving_process = #{receivingProcess}</if>
+            <if test="approvalStatus != null  and approvalStatus != ''"> and approval_status = #{approvalStatus}</if>
+            <if test="documentStatus != null  and documentStatus != ''"> and document_status = #{documentStatus}</if>
+            <if test="submitter != null  and submitter != ''"> and submitter = #{submitter}</if>
+            <if test="approvedBy != null  and approvedBy != ''"> and approved_by = #{approvedBy}</if>
+            <if test="completedBy != null  and completedBy != ''"> and completed_by = #{completedBy}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+            <if test="taskProcessKey != null  and taskProcessKey != ''"> and task_process_key = #{taskProcessKey}</if>
+            <if test="taskNodeKey != null  and taskNodeKey != ''"> and task_node_key = #{taskNodeKey}</if>
+        </where>
+        order by id desc
+    </select>
+    
+    <select id="selectMaterialCirculationById" parameterType="Long" resultMap="MaterialCirculationResult">
+        <include refid="selectMaterialCirculationVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertMaterialCirculation" parameterType="com.zkqy.business.domain.MaterialCirculation" useGeneratedKeys="true" keyProperty="id">
+        insert into material_circulation
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="goodsname != null">goodsname,</if>
+            <if test="goodsnum != null">goodsnum,</if>
+            <if test="specifications != null">specifications,</if>
+            <if test="weight != null">weight,</if>
+            <if test="receivingProcess != null">receiving_process,</if>
+            <if test="approvalStatus != null">approval_status,</if>
+            <if test="documentStatus != null">document_status,</if>
+            <if test="submitter != null">submitter,</if>
+            <if test="approvedBy != null">approved_by,</if>
+            <if test="completedBy != null">completed_by,</if>
+            <if test="remark != null">remark,</if>
+            <if test="createById != null">create_by_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateById != null">update_by_id,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="taskProcessKey != null">task_process_key,</if>
+            <if test="taskNodeKey != null">task_node_key,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="goodsname != null">#{goodsname},</if>
+            <if test="goodsnum != null">#{goodsnum},</if>
+            <if test="specifications != null">#{specifications},</if>
+            <if test="weight != null">#{weight},</if>
+            <if test="receivingProcess != null">#{receivingProcess},</if>
+            <if test="approvalStatus != null">#{approvalStatus},</if>
+            <if test="documentStatus != null">#{documentStatus},</if>
+            <if test="submitter != null">#{submitter},</if>
+            <if test="approvedBy != null">#{approvedBy},</if>
+            <if test="completedBy != null">#{completedBy},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="createById != null">#{createById},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateById != null">#{updateById},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="taskProcessKey != null">#{taskProcessKey},</if>
+            <if test="taskNodeKey != null">#{taskNodeKey},</if>
+         </trim>
+    </insert>
+
+    <update id="updateMaterialCirculation" parameterType="com.zkqy.business.domain.MaterialCirculation">
+        update material_circulation
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="goodsname != null">goodsname = #{goodsname},</if>
+            <if test="goodsnum != null">goodsnum = #{goodsnum},</if>
+            <if test="specifications != null">specifications = #{specifications},</if>
+            <if test="weight != null">weight = #{weight},</if>
+            <if test="receivingProcess != null">receiving_process = #{receivingProcess},</if>
+            <if test="approvalStatus != null">approval_status = #{approvalStatus},</if>
+            <if test="documentStatus != null">document_status = #{documentStatus},</if>
+            <if test="submitter != null">submitter = #{submitter},</if>
+            <if test="approvedBy != null">approved_by = #{approvedBy},</if>
+            <if test="completedBy != null">completed_by = #{completedBy},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="createById != null">create_by_id = #{createById},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateById != null">update_by_id = #{updateById},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteMaterialCirculationById" parameterType="Long">
+        delete from material_circulation where id = #{id}
+    </delete>
+
+    <delete id="deleteMaterialCirculationByIds" parameterType="String">
+        delete from material_circulation where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <select id="selectHandheldMaterialCirculationList" resultType="com.zkqy.business.domain.MaterialCirculation">
+        SELECT
+            mc.id,
+            m.materiel_name AS goodsname,
+            mc.goodsnum,
+            m.specification_model AS specifications,
+            mc.weight,
+            mc.receiving_process,
+            mc.approval_status,
+            mc.document_status,
+            mc.submitter,
+            mc.approved_by,
+            mc.completed_by,
+            mc.remark,
+            mc.create_by_id,
+            mc.create_by,
+            mc.create_time,
+            mc.update_by_id,
+            mc.update_by,
+            mc.update_time
+        FROM
+            {DBNAME}.material_circulation mc
+                LEFT JOIN {DBNAME}.materiel m ON mc.goodsnum = m.materiel_code
+        WHERE
+            mc.del_flag = '0'
+          AND mc.approval_status = '2'
+          AND mc.document_status != '0'
+        <if test="goodsnum != ''"> and mc.goodsnum = #{goodsnum}</if>
+          order by mc.id desc
+    </select>
+
+
+
+</mapper>

+ 6 - 0
zkqy-custom-business/src/main/resources/mapper/business/MaterialInventoryMapper.xml

@@ -202,4 +202,10 @@
             #{id}
         </foreach>
     </delete>
+
+    <select id="selectMaterialInventoryByMaterialCode" resultMap="MaterialInventoryResult">
+        <include refid="selectMaterialInventoryVo"/>
+        where material_code = #{materialCode}
+    </select>
+
 </mapper>

+ 111 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/chemicalfiber/QualityInspectionCertificate.java

@@ -0,0 +1,111 @@
+package com.zkqy.execution.produce.dispersed.service.impl.runbpm.chemicalfiber;
+
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFormFilterConditionsVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeFromVo;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.IRunBPMEntity;
+import com.zkqy.execution.produce.dispersed.service.ICommonService;
+import com.zkqy.execution.produce.dispersed.service.IRunBPMService;
+import com.zkqy.execution.produce.utils.EchoNodeFormData;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PreDestroy;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 化纤质检单-正常节点
+ */
+@Service("45d1d476-e289-4370-b663-3f7765943ee6")
+@Scope("prototype")
+public class QualityInspectionCertificate implements IRunBPMService {
+
+    @Autowired
+    private EchoNodeFormData echoNodeFormData;
+
+    @Autowired
+    private ICommonService commonService;
+
+    @Override
+    public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
+        // 检验单信息
+        Map<String,Object> map = new HashMap<>();
+        map.put("task_process_key",bpmRunNodeFromVo.getTaskProcessKey());
+        map.put("task_node_key",bpmRunNodeFromVo.getTaskNodeKey());
+        map.put("del_flag","0");
+        bpmRunNodeFromVo.getFormDataVoList().add(new BpmRunNodeFormFilterConditionsVo("inspection_list", map, false));
+        // 检验单详情信息
+        Map<String,Object> map1 = new HashMap<>();
+        map1.put("task_process_key",bpmRunNodeFromVo.getTaskProcessKey());
+        map1.put("task_node_key",bpmRunNodeFromVo.getTaskNodeKey());
+        map1.put("del_flag","0");
+        bpmRunNodeFromVo.getFormDataVoList().add(new BpmRunNodeFormFilterConditionsVo("inspection_list_info", map1, false,"inspectionListInfoList"));
+
+        CommonEntity echoNodeFormData = this.echoNodeFormData.getEchoNodeFormData(bpmRunNodeFromVo);
+
+        // 通过销售单id查询销售单信息 sale_order
+        // 通过产品id查询产品信息 sale_products
+        CommonEntity commonEntity = new CommonEntity();
+        commonEntity.getBasicMap().put("tableName","sale_products");
+        commonEntity.getConditionMap().put("id",bpmRunNodeFromVo.getTaskPlanKey());
+        CommonEntity commonEntity1 = commonService.getInfoById(commonEntity);
+
+//        // 根据销售单编号查询货品信息
+//        CommonEntity commonEntity2 = new CommonEntity();
+//        commonEntity2.getBasicMap().put("tableName","sale_products");
+//        commonEntity2.getQueryMap().put("sale_order_no",commonEntity1.getResultMap().get("sale_no"));
+//        commonEntity2.getQueryMap().put("del_flag","0");
+
+        List<CommonEntity> productsList = new ArrayList<>();
+        productsList.add(commonEntity1);
+
+        // 循环货品信息根据货品编号查询货品名称
+        for (int i = 0; i < productsList.size(); i++) {
+            CommonEntity commonEntity3 = new CommonEntity();
+            commonEntity3.getBasicMap().put("tableName","production");
+            commonEntity3.getConditionMap().put("product_no",productsList.get(i).getResultMap().get("product_no"));
+            CommonEntity commonEntity4 = commonService.getInfoById(commonEntity3);
+            productsList.get(i).getResultMap().put("productName",commonEntity4.getResultMap().get("product_name"));
+        }
+
+
+        echoNodeFormData.getResultMap().put("productsList",productsList);
+
+//        Map<String,Object> map2 = new HashMap<>();
+//        map2.put("sale_order_no",commonEntity1.getResultMap().get("saleOrderNo"));
+//        bpmRunNodeFromVo.getFormDataVoList().add(new BpmRunNodeFormFilterConditionsVo("sale_products", map1, false,"saleProductsList"));
+
+        return echoNodeFormData;
+    }
+
+    @Override
+    public AjaxResult preValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    @Override
+    public AjaxResult afterValidation(IRunBPMEntity iRunBPMEntity) {
+        return AjaxResult.success();
+    }
+
+    @Override
+    public boolean isVerificationMethod() {
+        return true;
+    }
+
+    @Override
+    @PreDestroy
+    public boolean preDestroy() {
+        return true;
+    }
+}

+ 6 - 2
zkqy-ui/src/views/orderMange/purchase/index.vue

@@ -523,14 +523,18 @@ export default {
         },
       };
       let res = await listTableData(payLoad);
+      console.log(res.rows[0].resultMap.units,"打印数据")
+      console.log(res.rows[0].resultMap.specificationModel,"打印数据")
       let labelRes = await getDictLabel(purchaseMaterielId);
       if (res.code == 200 && labelRes.code == 200) {
         let data = res.rows[0]?.resultMap;
         printData.serialNumber = purchaseSerialNumber;
         printData.materielId = purchaseMaterielId;
         // printData.materielName = data?.materielName;//母粒名称
-        printData.units = purchaseUnits;
-        printData.specificationModel = purchaseSpecification;
+        // printData.units = purchaseUnits;
+        // printData.specificationModel = purchaseSpecification;
+        printData.units = res.rows[0].resultMap.units;
+        printData.specificationModel = res.rows[0].resultMap.specificationModel;
         printData.quantity=purchaseQuantity
         // printData.dictLabel = labelRes.msg;
       }