Kaynağa Gözat

Merge remote-tracking branch 'origin/master'

韩帛霖 1 yıl önce
ebeveyn
işleme
036fb14578
28 değiştirilmiş dosya ile 1992 ekleme ve 203 silme
  1. 2 0
      zkqy-admin/src/main/java/com/zkqy/ZkqyApplication.java
  2. 22 0
      zkqy-common/src/main/java/com/zkqy/common/utils/SecurityUtils.java
  3. 145 0
      zkqy-custom-business/src/main/java/com/zkqy/business/controller/DataAcquisitionInformationController.java
  4. 239 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/DataAcquisitionInformation.java
  5. 34 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/DataAcquisitionInformationVo.java
  6. 103 0
      zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/DataAcquisitionInformationVoTwo.java
  7. 76 0
      zkqy-custom-business/src/main/java/com/zkqy/business/mapper/DataAcquisitionInformationMapper.java
  8. 89 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/IDataAcquisitionInformationService.java
  9. 354 0
      zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/DataAcquisitionInformationServiceImpl.java
  10. 170 0
      zkqy-custom-business/src/main/resources/mapper/business/DataAcquisitionInformationMapper.xml
  11. 83 30
      zkqy-framework/src/main/java/com/zkqy/framework/aspectj/SqlInterceptor.java
  12. 24 0
      zkqy-framework/src/main/java/com/zkqy/framework/security/context/ThreadLocalUtil.java
  13. 2 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/mapper/CommonMapper.java
  14. 5 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/ICommonService.java
  15. 49 0
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/CommonServiceImpl.java
  16. 39 1
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/jiaoyu/AssembleImpl.java
  17. 38 1
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/jiaoyu/DetectionImpl.java
  18. 45 29
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/jiaoyu/LoadingImpl.java
  19. 36 1
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/jiaoyu/ProcessingImpl.java
  20. 46 1
      zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/jiaoyu/WareHousingImpl.java
  21. 10 0
      zkqy-ui/src/api/bpmprocess/runDialogApi/index.js
  22. 20 14
      zkqy-ui/src/components/FormGroup/formList.vue
  23. 9 9
      zkqy-ui/src/views/bussiness/dialogCompments/Edu/Assemble.vue
  24. 9 9
      zkqy-ui/src/views/bussiness/dialogCompments/Edu/Detection.vue
  25. 9 9
      zkqy-ui/src/views/bussiness/dialogCompments/Edu/Loading.vue
  26. 10 10
      zkqy-ui/src/views/bussiness/dialogCompments/Edu/Processing.vue
  27. 63 37
      zkqy-ui/src/views/bussiness/dialogCompments/Edu/WareHousing.vue
  28. 261 52
      zkqy-ui/src/views/tablelist/commonTable/listInfo.vue

+ 2 - 0
zkqy-admin/src/main/java/com/zkqy/ZkqyApplication.java

@@ -5,6 +5,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
 
 import java.util.Arrays;
 
@@ -14,6 +15,7 @@ import java.util.Arrays;
  * @author ruoyi
  */
 @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
+@EnableAspectJAutoProxy(exposeProxy = true)
 public class ZkqyApplication
 {
     public static void main(String[] args)

+ 22 - 0
zkqy-common/src/main/java/com/zkqy/common/utils/SecurityUtils.java

@@ -2,6 +2,8 @@ package com.zkqy.common.utils;
 
 import com.zkqy.common.constant.HttpStatus;
 import com.zkqy.common.core.domain.entity.DataSource;
+import com.zkqy.common.core.domain.entity.SysTenant;
+import com.zkqy.common.core.domain.entity.SysUser;
 import com.zkqy.common.core.domain.model.LoginUser;
 import com.zkqy.common.exception.ServiceException;
 import com.zkqy.common.exception.tenantdatassource.TenantDataSource;
@@ -171,4 +173,24 @@ public class SecurityUtils {
             throw new ServiceException("获取获取数据名称异常", HttpStatus.UNAUTHORIZED);
         }
     }
+    /**
+     * 手动设置数据源名称
+     */
+//    public static String setDatabaseName(String DbName) {
+//        try {
+//            //构造一假用户
+//            LoginUser loginUser=new LoginUser();
+//            SysUser sysUser=new SysUser();
+//            SysTenant sysTenant=new SysTenant();
+//            sysUser.setTenant(sysTenant);
+//            DataSource dataSource=new DataSource();
+//            sysTenant.setDataSource(dataSource);
+//            dataSource.setDatabaseName(DbName);
+//            loginUser.setUser(sysUser);
+//            //设置成功后在过去
+//            return getLoginUser().getUser().getTenant().getDataSource().getDatabaseName();
+//        } catch (Exception e) {
+//            throw new ServiceException("获取获取数据名称异常", HttpStatus.UNAUTHORIZED);
+//        }
+//    }
 }

+ 145 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/controller/DataAcquisitionInformationController.java

@@ -0,0 +1,145 @@
+package com.zkqy.business.controller;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.servlet.http.HttpServletResponse;
+
+import com.zkqy.business.domain.vo.DataAcquisitionInformationVo;
+import com.zkqy.business.domain.vo.DataAcquisitionInformationVoTwo;
+import com.zkqy.common.annotation.Anonymous;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.service.impl.CommonServiceImpl;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+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;
+import com.zkqy.common.annotation.Log;
+import com.zkqy.common.core.controller.BaseController;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.enums.BusinessType;
+import com.zkqy.business.domain.DataAcquisitionInformation;
+import com.zkqy.business.service.IDataAcquisitionInformationService;
+import com.zkqy.common.utils.poi.ExcelUtil;
+import com.zkqy.common.core.page.TableDataInfo;
+
+/**
+ * 数据采集信息Controller
+ *
+ * @author zkqy
+ * @date 2024-03-22
+ */
+@RestController
+@RequestMapping("/system/information")
+@Api(value = "/system/information", description = "数据采集信息-接口")
+public class DataAcquisitionInformationController extends BaseController {
+
+    @Autowired
+    private IDataAcquisitionInformationService dataAcquisitionInformationService;
+
+    @Autowired
+    private  CommonServiceImpl commonService;
+
+    /**
+     * 更新数采信息
+     */
+    @PostMapping("/updateNumericalSampling")
+    @ApiOperation(value = "更新数采信息")
+    public AjaxResult addEduDataCollectionInformation(@RequestBody DataAcquisitionInformationVo dataAcquisitionInformationVo)
+    {
+       return dataAcquisitionInformationService.updateOrAddDataAcquisitionInformation(dataAcquisitionInformationVo);
+    }
+
+    /**
+     * 更新数采信息
+     * 默认写死这个数据库前缀
+     */
+    @PostMapping("/updateNumericalSamplingAndInsert")
+    @Anonymous
+    @ApiOperation(value = "更新数采信息")
+    public AjaxResult updateEduDataCollectionInformation(@RequestBody DataAcquisitionInformationVoTwo dataAcquisitionInformationVoTwo)
+    {
+        return dataAcquisitionInformationService.updateOrAddDataAcquisitionInformation2(dataAcquisitionInformationVoTwo);
+    }
+
+
+    /**
+     * 查询数据采集信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:list')")
+    @GetMapping("/list")
+    @ApiOperation(value = "查询数据采集信息列表")
+    public TableDataInfo list(DataAcquisitionInformation dataAcquisitionInformation) {
+        startPage();
+        List<DataAcquisitionInformation> list = dataAcquisitionInformationService.selectDataAcquisitionInformationList(dataAcquisitionInformation);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出数据采集信息列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:export')")
+    @Log(title = "数据采集信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation(value = "导出数据采集信息列表")
+    public void export(HttpServletResponse response, DataAcquisitionInformation dataAcquisitionInformation) {
+        List<DataAcquisitionInformation> list = dataAcquisitionInformationService.selectDataAcquisitionInformationList(dataAcquisitionInformation);
+        ExcelUtil<DataAcquisitionInformation> util = new ExcelUtil<DataAcquisitionInformation>(DataAcquisitionInformation.class);
+        util.exportExcel(response, list, "数据采集信息数据");
+    }
+
+    /**
+     * 获取数据采集信息详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:query')")
+    @GetMapping(value = "/{id}")
+    @ApiOperation(value = "获取数据采集信息详细信息")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(dataAcquisitionInformationService.selectDataAcquisitionInformationById(id));
+    }
+
+    /**
+     * 新增数据采集信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:add')")
+    @Log(title = "数据采集信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    @ApiOperation(value = "新增数据采集信息")
+    public AjaxResult add(@RequestBody DataAcquisitionInformation dataAcquisitionInformation) {
+        return toAjax(dataAcquisitionInformationService.insertDataAcquisitionInformation(dataAcquisitionInformation));
+    }
+
+    /**
+     * 修改数据采集信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:edit')")
+    @Log(title = "数据采集信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    @ApiOperation(value = "修改数据采集信息")
+    public AjaxResult edit(@RequestBody DataAcquisitionInformation dataAcquisitionInformation) {
+        return toAjax(dataAcquisitionInformationService.updateDataAcquisitionInformation(dataAcquisitionInformation));
+    }
+
+    /**
+     * 删除数据采集信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:information:remove')")
+    @Log(title = "数据采集信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除数据采集信息")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(dataAcquisitionInformationService.deleteDataAcquisitionInformationByIds(ids));
+    }
+
+
+}

+ 239 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/DataAcquisitionInformation.java

@@ -0,0 +1,239 @@
+package com.zkqy.business.domain;
+
+import com.zkqy.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.zkqy.common.annotation.Excel;
+
+/**
+ * 数据采集信息对象 data_acquisition_information
+ * 
+ * @author zkqy
+ * @date 2024-03-22
+ */
+public class DataAcquisitionInformation extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    private Long id;
+
+    /** 任务id */
+    @Excel(name = "任务id")
+    private String taskId;
+
+    /** 上料数量 */
+    @Excel(name = "上料数量")
+    private String materials;
+
+    /** 加工数量 */
+    @Excel(name = "加工数量")
+    private String processed;
+
+    /** 组装数量 */
+    @Excel(name = "组装数量")
+    private String assembled;
+
+    /** 合格数量 */
+    @Excel(name = "合格数量")
+    private String qualified;
+
+    /** 不合格数量 */
+    @Excel(name = "不合格数量")
+    private String unqualified;
+
+    /** 已入库数量 */
+    @Excel(name = "已入库数量")
+    private String inStock;
+
+    /** 创建者id */
+    @Excel(name = "创建者id")
+    private Long createById;
+
+    /** 更新者id */
+    @Excel(name = "更新者id")
+    private Long updateById;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    private  String pskey;
+
+    /** 数据条审批状态(默认字段 0:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中) */
+    @Excel(name = "数据条审批状态", readConverterExp = "默=认字段,0=:已提交、1:已通过、2:不通过、3:未提交、4:驳回、5:审批中")
+    private String dataApprovalStatus;
+
+    /** 流程编号 */
+    @Excel(name = "流程编号")
+    private String processKey;
+
+    /** 任务编码 */
+    @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 setTaskId(String taskId) 
+    {
+        this.taskId = taskId;
+    }
+
+    public String getTaskId() 
+    {
+        return taskId;
+    }
+    public void setMaterials(String materials) 
+    {
+        this.materials = materials;
+    }
+
+    public String getMaterials() 
+    {
+        return materials;
+    }
+    public void setProcessed(String processed) 
+    {
+        this.processed = processed;
+    }
+
+    public String getProcessed() 
+    {
+        return processed;
+    }
+    public void setAssembled(String assembled) 
+    {
+        this.assembled = assembled;
+    }
+
+    public String getAssembled() 
+    {
+        return assembled;
+    }
+    public void setQualified(String qualified) 
+    {
+        this.qualified = qualified;
+    }
+
+    public String getQualified() 
+    {
+        return qualified;
+    }
+    public void setUnqualified(String unqualified) 
+    {
+        this.unqualified = unqualified;
+    }
+
+    public String getUnqualified() 
+    {
+        return unqualified;
+    }
+    public void setInStock(String inStock) 
+    {
+        this.inStock = inStock;
+    }
+
+    public String getInStock() 
+    {
+        return inStock;
+    }
+    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 setDataApprovalStatus(String dataApprovalStatus) 
+    {
+        this.dataApprovalStatus = dataApprovalStatus;
+    }
+
+    public String getDataApprovalStatus() 
+    {
+        return dataApprovalStatus;
+    }
+    public void setProcessKey(String processKey) 
+    {
+        this.processKey = processKey;
+    }
+
+    public String getProcessKey() 
+    {
+        return processKey;
+    }
+    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("taskId", getTaskId())
+            .append("materials", getMaterials())
+            .append("processed", getProcessed())
+            .append("assembled", getAssembled())
+            .append("qualified", getQualified())
+            .append("unqualified", getUnqualified())
+            .append("inStock", getInStock())
+            .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("dataApprovalStatus", getDataApprovalStatus())
+            .append("processKey", getProcessKey())
+            .append("taskProcessKey", getTaskProcessKey())
+            .append("taskNodeKey", getTaskNodeKey())
+            .toString();
+    }
+}

+ 34 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/DataAcquisitionInformationVo.java

@@ -0,0 +1,34 @@
+package com.zkqy.business.domain.vo;
+
+import com.zkqy.business.domain.DataAcquisitionInformation;
+
+public class DataAcquisitionInformationVo extends DataAcquisitionInformation {
+
+    String  stockNumber;
+    String  productName;
+    String inventoryQuantity;
+
+    public String getStockNumber() {
+        return stockNumber;
+    }
+
+    public void setStockNumber(String stockNumber) {
+        this.stockNumber = stockNumber;
+    }
+
+    public String getProductName() {
+        return productName;
+    }
+
+    public void setProductName(String productName) {
+        this.productName = productName;
+    }
+
+    public String getInventoryQuantity() {
+        return inventoryQuantity;
+    }
+
+    public void setInventoryQuantity(String inventoryQuantity) {
+        this.inventoryQuantity = inventoryQuantity;
+    }
+}

+ 103 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/domain/vo/DataAcquisitionInformationVoTwo.java

@@ -0,0 +1,103 @@
+package com.zkqy.business.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalDateTime;
+import java.time.ZonedDateTime;
+import java.util.Date;
+
+public class DataAcquisitionInformationVoTwo {
+      private  String id;
+      private  String taskId;
+      private  String materials;
+      private  String processed;
+      private  String assembled;
+      private  String qualified;
+      private  String unqualified;
+      private  String inStock;
+      @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
+      private ZonedDateTime createTime;
+      @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
+      private  ZonedDateTime  updateTime;
+
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getTaskId() {
+        return taskId;
+    }
+
+    public void setTaskId(String taskId) {
+        this.taskId = taskId;
+    }
+
+    public String getMaterials() {
+        return materials;
+    }
+
+    public void setMaterials(String materials) {
+        this.materials = materials;
+    }
+
+    public String getProcessed() {
+        return processed;
+    }
+
+    public void setProcessed(String processed) {
+        this.processed = processed;
+    }
+
+    public String getAssembled() {
+        return assembled;
+    }
+
+    public void setAssembled(String assembled) {
+        this.assembled = assembled;
+    }
+
+    public String getQualified() {
+        return qualified;
+    }
+
+    public void setQualified(String qualified) {
+        this.qualified = qualified;
+    }
+
+    public String getUnqualified() {
+        return unqualified;
+    }
+
+    public void setUnqualified(String unqualified) {
+        this.unqualified = unqualified;
+    }
+
+    public String getInStock() {
+        return inStock;
+    }
+
+    public void setInStock(String inStock) {
+        this.inStock = inStock;
+    }
+
+    public ZonedDateTime getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(ZonedDateTime createTime) {
+        this.createTime = createTime;
+    }
+
+    public ZonedDateTime getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(ZonedDateTime updateTime) {
+        this.updateTime = updateTime;
+    }
+}

+ 76 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/mapper/DataAcquisitionInformationMapper.java

@@ -0,0 +1,76 @@
+package com.zkqy.business.mapper;
+
+import java.util.List;
+import com.zkqy.business.domain.DataAcquisitionInformation;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 数据采集信息Mapper接口
+ * 
+ * @author zkqy
+ * @date 2024-03-22
+ */
+@Mapper
+public interface DataAcquisitionInformationMapper 
+{
+    /**
+     * 查询数据采集信息
+     * 
+     * @param id 数据采集信息主键
+     * @return 数据采集信息
+     */
+    public DataAcquisitionInformation selectDataAcquisitionInformationById(Long id);
+
+    /**
+     * 查询数据采集信息
+     *
+     * @param taskId 数据采集信息主键
+     * @return 数据采集信息
+     */
+    public DataAcquisitionInformation selectDataAcquisitionInformationByTaskId(String taskId);
+    /**
+     * 查询数据采集信息列表
+     * 
+     * @param dataAcquisitionInformation 数据采集信息
+     * @return 数据采集信息集合
+     */
+    public List<DataAcquisitionInformation> selectDataAcquisitionInformationList(DataAcquisitionInformation dataAcquisitionInformation);
+
+    /**
+     * 新增数据采集信息
+     * 
+     * @param dataAcquisitionInformation 数据采集信息
+     * @return 结果
+     */
+    public int insertDataAcquisitionInformation(DataAcquisitionInformation dataAcquisitionInformation);
+
+    /**
+     * 修改数据采集信息
+     * 
+     * @param dataAcquisitionInformation 数据采集信息
+     * @return 结果
+     */
+    public int updateDataAcquisitionInformation(DataAcquisitionInformation dataAcquisitionInformation);
+
+    /**
+     * 根据任务id更新数据采集信息
+     * @param dataAcquisitionInformation
+     * @return
+     */
+    public int updateDataAcquisitionInformationByTaskId(DataAcquisitionInformation dataAcquisitionInformation);
+    /**
+     * 删除数据采集信息
+     * 
+     * @param id 数据采集信息主键
+     * @return 结果
+     */
+    public int deleteDataAcquisitionInformationById(Long id);
+
+    /**
+     * 批量删除数据采集信息
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteDataAcquisitionInformationByIds(Long[] ids);
+}

+ 89 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/IDataAcquisitionInformationService.java

@@ -0,0 +1,89 @@
+package com.zkqy.business.service;
+
+import java.util.List;
+import com.zkqy.business.domain.DataAcquisitionInformation;
+import com.zkqy.business.domain.vo.DataAcquisitionInformationVo;
+import com.zkqy.business.domain.vo.DataAcquisitionInformationVoTwo;
+import com.zkqy.common.core.domain.AjaxResult;
+
+/**
+ * 数据采集信息Service接口
+ * 
+ * @author zkqy
+ * @date 2024-03-22
+ */
+public interface IDataAcquisitionInformationService 
+{
+    /**
+     * 查询数据采集信息
+     * 
+     * @param id 数据采集信息主键
+     * @return 数据采集信息
+     */
+    public DataAcquisitionInformation selectDataAcquisitionInformationById(Long id);
+
+    /**
+     * 查询数据采集信息
+     *
+     * @param taskId  任务id
+     * @return 数据采集信息
+     */
+    public DataAcquisitionInformation selectDataAcquisitionInformationByTaskId(String taskId);
+
+
+    /**
+     * 查询数据采集信息列表
+     * 
+     * @param dataAcquisitionInformation 数据采集信息
+     * @return 数据采集信息集合
+     */
+    public List<DataAcquisitionInformation> selectDataAcquisitionInformationList(DataAcquisitionInformation dataAcquisitionInformation);
+
+    /**
+     * 新增数据采集信息
+     * 
+     * @param dataAcquisitionInformation 数据采集信息
+     * @return 结果
+     */
+    public int insertDataAcquisitionInformation(DataAcquisitionInformation dataAcquisitionInformation);
+
+    /**
+     * 修改数据采集信息
+     * 
+     * @param dataAcquisitionInformation 数据采集信息
+     * @return 结果
+     */
+    public int updateDataAcquisitionInformation(DataAcquisitionInformation dataAcquisitionInformation);
+
+    /**
+     * 批量删除数据采集信息
+     * 
+     * @param ids 需要删除的数据采集信息主键集合
+     * @return 结果
+     */
+    public int deleteDataAcquisitionInformationByIds(Long[] ids);
+
+    /**
+     * 删除数据采集信息信息
+     * 
+     * @param id 数据采集信息主键
+     * @return 结果
+     */
+    public int deleteDataAcquisitionInformationById(Long id);
+
+    /**
+     * 删除数据采集信息信息
+     *
+     * @param dataAcquisitionInformationVo 数据采集信息主键
+     * @return 结果
+     */
+    public AjaxResult updateOrAddDataAcquisitionInformation(DataAcquisitionInformationVo dataAcquisitionInformationVo);
+
+    /**
+     * 删除数据采集信息信息
+     *
+     * @param dataAcquisitionInformationVoTwo 数据采集信息主键
+     * @return 结果
+     */
+    public AjaxResult updateOrAddDataAcquisitionInformation2(DataAcquisitionInformationVoTwo dataAcquisitionInformationVoTwo);
+}

+ 354 - 0
zkqy-custom-business/src/main/java/com/zkqy/business/service/impl/DataAcquisitionInformationServiceImpl.java

@@ -0,0 +1,354 @@
+package com.zkqy.business.service.impl;
+
+import java.util.*;
+
+import com.zkqy.business.domain.vo.DataAcquisitionInformationVo;
+import com.zkqy.business.domain.vo.DataAcquisitionInformationVoTwo;
+import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.domain.entity.DataSource;
+import com.zkqy.common.core.domain.entity.SysTenant;
+import com.zkqy.common.core.domain.entity.SysUser;
+import com.zkqy.common.core.domain.model.LoginUser;
+import com.zkqy.common.utils.DateUtils;
+import com.zkqy.common.utils.SecurityUtils;
+import com.zkqy.common.utils.bpm.XmlDataParserUtils;
+import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import com.zkqy.execution.produce.dispersed.entity.runbpm.BpmRunNodeVo;
+import com.zkqy.execution.produce.dispersed.mapper.CommonMapper;
+import com.zkqy.execution.produce.dispersed.runbpm.PreExecutionToolClass;
+import com.zkqy.execution.produce.dispersed.service.impl.CommonServiceImpl;
+import com.zkqy.framework.security.context.AuthenticationContextHolder;
+import com.zkqy.framework.security.context.ThreadLocalUtil;
+import org.jetbrains.annotations.NotNull;
+import org.springframework.aop.framework.AopContext;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.stereotype.Service;
+import com.zkqy.business.mapper.DataAcquisitionInformationMapper;
+import com.zkqy.business.domain.DataAcquisitionInformation;
+import com.zkqy.business.service.IDataAcquisitionInformationService;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.sound.sampled.Port;
+
+/**
+ * 数据采集信息Service业务层处理
+ * 
+ * @author zkqy
+ * @date 2024-03-22
+ */
+@Service
+public class DataAcquisitionInformationServiceImpl implements IDataAcquisitionInformationService 
+{
+
+    @Autowired
+    private DataAcquisitionInformationMapper dataAcquisitionInformationMapper;
+
+    @Autowired
+    private CommonServiceImpl commonService;
+
+    @Autowired
+    private CommonMapper commonMapper;
+
+    @Autowired
+    private PreExecutionToolClass ipreExecutionToolClass;
+
+    @Resource
+    private AuthenticationManager authenticationManager;
+
+    /**
+     * 查询数据采集信息
+     * 
+     * @param id 数据采集信息主键
+     * @return 数据采集信息
+     */
+    @Override
+    public DataAcquisitionInformation selectDataAcquisitionInformationById(Long id)
+    {
+        return dataAcquisitionInformationMapper.selectDataAcquisitionInformationById(id);
+    }
+
+    @Override
+    public DataAcquisitionInformation selectDataAcquisitionInformationByTaskId(String taskId) {
+        return dataAcquisitionInformationMapper.selectDataAcquisitionInformationByTaskId(taskId);
+    }
+
+    /**
+     * 查询数据采集信息列表
+     * 
+     * @param dataAcquisitionInformation 数据采集信息
+     * @return 数据采集信息
+     */
+    @Override
+    public List<DataAcquisitionInformation> selectDataAcquisitionInformationList(DataAcquisitionInformation dataAcquisitionInformation)
+    {
+        return dataAcquisitionInformationMapper.selectDataAcquisitionInformationList(dataAcquisitionInformation);
+    }
+
+    /**
+     * 新增数据采集信息
+     * 
+     * @param dataAcquisitionInformation 数据采集信息
+     * @return 结果
+     */
+    @Override
+    public int insertDataAcquisitionInformation(DataAcquisitionInformation dataAcquisitionInformation)
+    {
+        dataAcquisitionInformation.setCreateTime(DateUtils.getNowDate());
+        dataAcquisitionInformation.setCreateById(SecurityUtils.getUserId());
+        dataAcquisitionInformation.setCreateBy(SecurityUtils.getUsername());
+        return dataAcquisitionInformationMapper.insertDataAcquisitionInformation(dataAcquisitionInformation);
+    }
+
+    /**
+     * 修改数据采集信息
+     * 
+     * @param dataAcquisitionInformation 数据采集信息
+     * @return 结果
+     */
+    @Override
+    public int updateDataAcquisitionInformation(DataAcquisitionInformation dataAcquisitionInformation)
+    {
+        dataAcquisitionInformation.setUpdateTime(DateUtils.getNowDate());
+        dataAcquisitionInformation.setUpdateById(SecurityUtils.getUserId());
+        dataAcquisitionInformation.setUpdateBy(SecurityUtils.getUsername());
+        return dataAcquisitionInformationMapper.updateDataAcquisitionInformation(dataAcquisitionInformation);
+    }
+
+    /**
+     * 批量删除数据采集信息
+     * 
+     * @param ids 需要删除的数据采集信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteDataAcquisitionInformationByIds(Long[] ids)
+    {
+        return dataAcquisitionInformationMapper.deleteDataAcquisitionInformationByIds(ids);
+    }
+
+    /**
+     * 删除数据采集信息信息
+     * @param id 数据采集信息主键
+     * @return 结果
+     */
+    @Override
+    public int deleteDataAcquisitionInformationById(Long id)
+    {
+        return dataAcquisitionInformationMapper.deleteDataAcquisitionInformationById(id);
+    }
+
+    @Override
+    @Transactional
+    public AjaxResult updateOrAddDataAcquisitionInformation(DataAcquisitionInformationVo dataAcquisitionInformationVo) {
+        //1、没有数采信息就是入
+        DataAcquisitionInformation dataAcquisitionInformation = this.selectDataAcquisitionInformationByTaskId(dataAcquisitionInformationVo.getTaskId());
+        if(dataAcquisitionInformation!=null){//有数采数据就更新
+            dataAcquisitionInformationMapper.updateDataAcquisitionInformationByTaskId(dataAcquisitionInformationVo);
+            //修改库存表信息
+            CommonEntity common = this.updateAndAdd(dataAcquisitionInformationVo,false);
+            int edit = commonService.edit(common);
+            if(edit>0){
+              return    AjaxResult.success("刷新库存信息成功");
+            }
+            return  AjaxResult.success("网络出现问题,刷新数据失败");
+        }else {
+            this.insertDataAcquisitionInformation(dataAcquisitionInformationVo);
+            //新增库存信息
+            CommonEntity common = this.updateAndAdd(dataAcquisitionInformationVo,true);
+            int insert = commonService.batchInsert(common);
+            if(insert>0){
+                return    AjaxResult.success("插入库存信息成功");
+            }
+            return  AjaxResult.success("网络出现问题,刷新数据失败");
+        }
+    }
+
+    @Override
+    @Transactional
+    public AjaxResult updateOrAddDataAcquisitionInformation2(DataAcquisitionInformationVoTwo dITwo) {
+        DataAcquisitionInformationServiceImpl impl =  (DataAcquisitionInformationServiceImpl)AopContext.currentProxy();;
+        //1、先查询计划表信息
+        HashMap hashMap=new HashMap();
+        hashMap.put("task_id",dITwo.getTaskId());
+        //考虑到一个问题,这个接口如果匿名访问的话势必从登录用户中拿不到所谓的数据源头信息
+        //处理没有登录的情况下sql不能拼接的问题
+        HashMap hashMapSource=new HashMap();
+        hashMapSource.put("databaseType","mysql");
+        hashMapSource.put("dbName","jiaoyu");
+
+        LoginUser userDetails=new LoginUser();
+        SysUser sysUser = new SysUser();
+        SysTenant sysTenant=new SysTenant();
+        sysTenant.setTenantId(181L);
+        sysTenant.setTenantName("jiaoyu");
+        sysTenant.setTenantCode("jiaoyu01");
+        DataSource dataSource = new DataSource();
+        dataSource.setDatabaseName("jiaoyu");
+        dataSource.setDatabaseType("mysql");
+        sysTenant.setDataSource(dataSource);
+        sysUser.setTenant(sysTenant);
+        userDetails.setUser(sysUser);
+        userDetails.setUserId(282L);
+        userDetails.setTenantId(181L);
+
+        // 创建一个Authentication对象
+        Authentication authentication = new UsernamePasswordAuthenticationToken(userDetails, null, Collections.emptyList());
+        // 将Authentication对象设置到SecurityContext中
+        SecurityContextHolder.getContext().setAuthentication(authentication);
+        SecurityUtils.getUserId();
+        SecurityUtils.getLoginUser();
+
+        ThreadLocalUtil.setThreadLocalValue(hashMapSource);
+        List<CommonEntity> scheduleTable = commonMapper.selectList("schedule_table", hashMap);
+        if(scheduleTable.size()>0){
+            //有个计划--得到投产数量
+            String productQuantity = scheduleTable.get(0).getResultMap().get("productQuantity").toString();
+            //如果不合格数量==入库数量
+            Integer total= Integer.parseInt(dITwo.getUnqualified())+Integer.parseInt(dITwo.getInStock());
+            //正常更新数据采集信息And库存信息
+            DataAcquisitionInformation dataAcquisitionInformation = this.selectDataAcquisitionInformationByTaskId(dITwo.getTaskId());
+            //先转换一个更新要用的Vo
+            DataAcquisitionInformationVo dataAcquisitionInformationVo = new DataAcquisitionInformationVo();
+            dataAcquisitionInformationVo.setInventoryQuantity(dITwo.getInStock());//入库数量
+            dataAcquisitionInformationVo.setStockNumber(dITwo.getTaskId());//计划编号--当入库项目
+            dataAcquisitionInformationVo.setProductName(scheduleTable.get(0).getResultMap().get("taskName").toString());//任务名称
+            BeanUtils.copyProperties(dITwo,dataAcquisitionInformationVo);
+            //证明有数据采集信息
+            int i;
+            if(dataAcquisitionInformation!=null){
+                    i = dataAcquisitionInformationMapper.updateDataAcquisitionInformationByTaskId(dataAcquisitionInformationVo);
+                    if(Integer.parseInt(dITwo.getInStock())>0){
+                        //通用的修改方法
+                        CommonEntity common = impl.updateAndAdd(dataAcquisitionInformationVo,false);
+                        //每次更新或者插入的时候就看看、质检不合格数量+入库数量是否等于计划数量
+                        if(productQuantity.equals(total.toString())){
+                            //执行关闭流程方法
+                            impl.executeProcess(scheduleTable,dITwo);
+                        }
+                        return commonService.editNoUserInfo(common)>0?AjaxResult.success("数采数据推送成功"):AjaxResult.success("网络出现问题请稍后再试,刷新数据失败");
+                    }
+                //没有数据采集信息
+                }else {
+                  i = dataAcquisitionInformationMapper.insertDataAcquisitionInformation(dataAcquisitionInformationVo);
+                  if(Integer.parseInt(dITwo.getInStock())>0){
+                        //通用的新增
+                        CommonEntity common = impl.updateAndAdd(dataAcquisitionInformationVo,true);
+                        //每次更新或者插入的时候就看看、质检不合格数量+入库数量是否等于计划数量
+                        if(productQuantity.equals(total)){
+                            impl.executeProcess(scheduleTable,dITwo);
+                        }
+                        return commonService.batchInsertNoUserInfo(common)>0?AjaxResult.success("数采数据推送成功"):AjaxResult.success("网络出现问题请稍后再试,刷新数据失败");
+                  }
+            }
+            ThreadLocalUtil.removeThreadLocalValue();
+            return i>0?AjaxResult.success("数采数据推送成功"):AjaxResult.success("网络出现问题请稍后再试");
+        }else {
+          return AjaxResult.success("未有此计划的采集数据信息请核对数据");
+        }
+    }
+
+
+    public   AjaxResult executeProcess(List<CommonEntity> scheduleTable,DataAcquisitionInformationVoTwo dITwo) {
+        //1、先查询计划表信息
+//        HashMap hashMap = new HashMap();
+//        hashMap.put("task_id", dITwo.getTaskId());
+        //根据任务id查询流程信息 1、方案一:直接改流程的执行状态(①入库节点②共同结束脚本也要走) 2、方案二:模拟入库节点结束后,后边的自动结束
+        //根据计划id查询流程执行日志信息 bpm_execute_process
+        HashMap executeProcess = new HashMap();
+        executeProcess.put("task_plan_key", scheduleTable.get(0).getResultMap().get("id").toString());
+        List<CommonEntity> bpmExecuteProcess = commonMapper.selectList("bpm_execute_process", executeProcess);
+        if (bpmExecuteProcess.size() > 0) {
+            //当前节点
+            String taskNodeKey = bpmExecuteProcess.get(0).getResultMap().get("taskNodeKey").toString();
+            //下一个任务节点
+            String taskNodeNextKey = bpmExecuteProcess.get(0).getResultMap().get("taskNodeNextKey").toString();
+            //流程图xml文件
+            String taskProcessXmlContent = bpmExecuteProcess.get(0).getResultMap().get("taskProcessXmlContent").toString();
+            //流程任务执行别名
+            String task_key = bpmExecuteProcess.get(0).getResultMap().get("taskKey").toString();
+            //查询脚本key
+            String taskScriptKey = "";
+            HashMap hashMap1 = new HashMap();
+            hashMap1.put("task_process_key", task_key);
+            hashMap1.put("task_node_key", taskNodeKey);
+            List<CommonEntity> bpmExecuteNodeForm = commonMapper.selectList("bpm_execute_node_form", hashMap1);
+            if (bpmExecuteNodeForm.size() > 0) {
+                taskScriptKey = bpmExecuteNodeForm.get(0).getResultMap().get("taskScriptKey").toString();
+            } else {
+                AjaxResult.success("未找到关联的节点脚本");
+            }
+            //查询节点类型
+            HashMap hashMap2 = new HashMap();
+            hashMap2.put("task_process_key", task_key);
+            hashMap2.put("task_node_key", taskNodeKey);
+            String taskType = "";
+            List<CommonEntity> bpmExecuteNode = commonMapper.selectList("bpm_execute_node", hashMap2);
+            if (bpmExecuteNode.size() > 0) {
+                taskType = bpmExecuteNode.get(0).getResultMap().get("taskNodeType").toString();
+            } else {
+                AjaxResult.success("未找到节点的类型");
+            }
+
+            //数据准备齐全开始构造执行流程
+            BpmRunNodeVo bpmRunNodeVo = new BpmRunNodeVo();
+            bpmRunNodeVo.setTaskProcessXmlContent(taskProcessXmlContent);//流程文件
+            bpmRunNodeVo.setTaskProcessKey(task_key);//流程任务执行的别名
+            bpmRunNodeVo.setTaskNodeKey(taskNodeNextKey);//下一个节点--就是当前要执行的节点
+            String nextNodeKey = XmlDataParserUtils.getNextNodeKey(taskProcessXmlContent, taskNodeNextKey);
+            bpmRunNodeVo.setNextNodeKey(nextNodeKey);//下一个任务节点
+            bpmRunNodeVo.setImplementationName(taskScriptKey);//脚本key
+            bpmRunNodeVo.setTableName("");//表名
+            HashMap<String, Object> stringObjectHashMap = new HashMap<>();
+            stringObjectHashMap.put("taskPlanKey", dITwo.getTaskId());
+            bpmRunNodeVo.setFormDataMap(stringObjectHashMap);//表名
+            bpmRunNodeVo.setTaskNodeType(taskType);
+            //执行流程
+            ipreExecutionToolClass.executionNode(bpmRunNodeVo);
+            return AjaxResult.success("流程执行成功");
+        }else {
+            return AjaxResult.success("未有此流程执行信息");
+        }
+
+    }
+    public   CommonEntity updateAndAdd( DataAcquisitionInformationVo dataAcquisitionInformationVo,boolean flag){
+        //修改库存表信息
+        CommonEntity commonEntity= getCommonEntity();
+        HashMap basicMap=new HashMap();
+        basicMap.put("tableName","inventory");
+        commonEntity.setBasicMap(basicMap);
+        HashMap conditions=new HashMap();
+        conditions.put("stock_number",dataAcquisitionInformationVo.getStockNumber());
+        commonEntity.setConditionMap(conditions);
+        if(flag){
+            //构造要添加的数据;
+            HashMap<String,String> mapRs=new HashMap();
+            mapRs.put("stock_number",dataAcquisitionInformationVo.getStockNumber());
+            mapRs.put("product_name",dataAcquisitionInformationVo.getProductName());
+            mapRs.put("inventory_quantity",dataAcquisitionInformationVo.getInventoryQuantity());
+            List<Map<String,String>> mapList=new ArrayList<>();
+            mapList.add(mapRs);
+            commonEntity.setAddListMap(mapList);
+        }else {
+            //构造要添加的数据;
+            HashMap<String,Object> mapRs=new HashMap();
+            mapRs.put("stock_number",dataAcquisitionInformationVo.getStockNumber());
+            mapRs.put("product_name",dataAcquisitionInformationVo.getProductName());
+            mapRs.put("inventory_quantity",dataAcquisitionInformationVo.getInventoryQuantity());
+            commonEntity.setCommMap(mapRs);
+        }
+        return commonEntity;
+    }
+
+    @NotNull
+    private static CommonEntity getCommonEntity() {
+        return new CommonEntity();
+    }
+
+}

+ 170 - 0
zkqy-custom-business/src/main/resources/mapper/business/DataAcquisitionInformationMapper.xml

@@ -0,0 +1,170 @@
+<?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.DataAcquisitionInformationMapper">
+    
+    <resultMap type="com.zkqy.business.domain.DataAcquisitionInformation" id="DataAcquisitionInformationResult">
+        <result property="id"    column="id"    />
+        <result property="taskId"    column="task_id"    />
+        <result property="materials"    column="materials"    />
+        <result property="processed"    column="processed"    />
+        <result property="assembled"    column="assembled"    />
+        <result property="qualified"    column="qualified"    />
+        <result property="unqualified"    column="unqualified"    />
+        <result property="inStock"    column="in_stock"    />
+        <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="dataApprovalStatus"    column="data_approval_status"    />
+        <result property="processKey"    column="process_key"    />
+        <result property="taskProcessKey"    column="task_process_key"    />
+        <result property="taskNodeKey"    column="task_node_key"    />
+    </resultMap>
+
+    <sql id="selectDataAcquisitionInformationVo">
+        select id, task_id, materials, processed, assembled, qualified, unqualified, in_stock, remark, create_by_id, create_by, create_time, update_by_id, update_by, update_time, del_flag, data_approval_status, process_key, task_process_key, task_node_key from {DBNAME}.data_acquisition_information
+    </sql>
+
+    <select id="selectDataAcquisitionInformationList" parameterType="com.zkqy.business.domain.DataAcquisitionInformation" resultMap="DataAcquisitionInformationResult">
+        <include refid="selectDataAcquisitionInformationVo"/>
+        <where>  
+            <if test="taskId != null  and taskId != ''"> and task_id = #{taskId}</if>
+            <if test="materials != null  and materials != ''"> and materials = #{materials}</if>
+            <if test="processed != null  and processed != ''"> and processed = #{processed}</if>
+            <if test="assembled != null  and assembled != ''"> and assembled = #{assembled}</if>
+            <if test="qualified != null  and qualified != ''"> and qualified = #{qualified}</if>
+            <if test="unqualified != null  and unqualified != ''"> and unqualified = #{unqualified}</if>
+            <if test="inStock != null  and inStock != ''"> and in_stock = #{inStock}</if>
+            <if test="createById != null "> and create_by_id = #{createById}</if>
+            <if test="updateById != null "> and update_by_id = #{updateById}</if>
+            <if test="dataApprovalStatus != null  and dataApprovalStatus != ''"> and data_approval_status = #{dataApprovalStatus}</if>
+            <if test="processKey != null  and processKey != ''"> and process_key = #{processKey}</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>
+    </select>
+    
+    <select id="selectDataAcquisitionInformationById" parameterType="Long" resultMap="DataAcquisitionInformationResult">
+        <include refid="selectDataAcquisitionInformationVo"/>
+        where id = #{id}
+    </select>
+    <select id="selectDataAcquisitionInformationByTaskId"
+            resultType="com.zkqy.business.domain.DataAcquisitionInformation">
+        <include refid="selectDataAcquisitionInformationVo"/>
+        where task_id = #{taskId}
+    </select>
+
+    <insert id="insertDataAcquisitionInformation" parameterType="com.zkqy.business.domain.DataAcquisitionInformation" useGeneratedKeys="true" keyProperty="id">
+        insert into {DBNAME}.data_acquisition_information
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="taskId != null">task_id,</if>
+            <if test="materials != null">materials,</if>
+            <if test="processed != null">processed,</if>
+            <if test="assembled != null">assembled,</if>
+            <if test="qualified != null">qualified,</if>
+            <if test="unqualified != null">unqualified,</if>
+            <if test="inStock != null">in_stock,</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="dataApprovalStatus != null">data_approval_status,</if>
+            <if test="processKey != null">process_key,</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="taskId != null">#{taskId},</if>
+            <if test="materials != null">#{materials},</if>
+            <if test="processed != null">#{processed},</if>
+            <if test="assembled != null">#{assembled},</if>
+            <if test="qualified != null">#{qualified},</if>
+            <if test="unqualified != null">#{unqualified},</if>
+            <if test="inStock != null">#{inStock},</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="dataApprovalStatus != null">#{dataApprovalStatus},</if>
+            <if test="processKey != null">#{processKey},</if>
+            <if test="taskProcessKey != null">#{taskProcessKey},</if>
+            <if test="taskNodeKey != null">#{taskNodeKey},</if>
+         </trim>
+    </insert>
+
+    <update id="updateDataAcquisitionInformation" parameterType="com.zkqy.business.domain.DataAcquisitionInformation">
+        update {DBNAME}.data_acquisition_information
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="taskId != null">task_id = #{taskId},</if>
+            <if test="materials != null">materials = #{materials},</if>
+            <if test="processed != null">processed = #{processed},</if>
+            <if test="assembled != null">assembled = #{assembled},</if>
+            <if test="qualified != null">qualified = #{qualified},</if>
+            <if test="unqualified != null">unqualified = #{unqualified},</if>
+            <if test="inStock != null">in_stock = #{inStock},</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="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
+            <if test="processKey != null">process_key = #{processKey},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="updateDataAcquisitionInformationByTaskId" parameterType="com.zkqy.business.domain.DataAcquisitionInformation">
+        update {DBNAME}.data_acquisition_information
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="taskId != null">task_id = #{taskId},</if>
+            <if test="materials != null">materials = #{materials},</if>
+            <if test="processed != null">processed = #{processed},</if>
+            <if test="assembled != null">assembled = #{assembled},</if>
+            <if test="qualified != null">qualified = #{qualified},</if>
+            <if test="unqualified != null">unqualified = #{unqualified},</if>
+            <if test="inStock != null">in_stock = #{inStock},</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="dataApprovalStatus != null">data_approval_status = #{dataApprovalStatus},</if>
+            <if test="processKey != null">process_key = #{processKey},</if>
+            <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
+            <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
+        </trim>
+        where task_id = #{taskId}
+    </update>
+    <delete id="deleteDataAcquisitionInformationById" parameterType="Long">
+        delete from data_acquisition_information where id = #{id}
+    </delete>
+
+    <delete id="deleteDataAcquisitionInformationByIds" parameterType="String">
+        delete from data_acquisition_information where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 83 - 30
zkqy-framework/src/main/java/com/zkqy/framework/aspectj/SqlInterceptor.java

@@ -4,8 +4,10 @@ package com.zkqy.framework.aspectj;
 import com.zkqy.common.core.domain.AjaxResult;
 import com.zkqy.common.exception.tenantdatassource.TenantDataSource;
 import com.zkqy.common.utils.SecurityUtils;
+import com.zkqy.common.utils.StringUtils;
 import com.zkqy.common.utils.reflect.ReflectUtils;
 import com.zkqy.framework.config.MyThreadLocal;
+import com.zkqy.framework.security.context.ThreadLocalUtil;
 import org.apache.ibatis.executor.statement.StatementHandler;
 import org.apache.ibatis.plugin.*;
 
@@ -22,6 +24,7 @@ import java.util.Properties;
 })
 public class SqlInterceptor implements Interceptor {
 
+
     @Override
     public Object intercept(Invocation invocation) throws Throwable, TenantDataSource {
         StatementHandler statementHandler = (StatementHandler) invocation.getTarget();
@@ -56,42 +59,92 @@ public class SqlInterceptor implements Interceptor {
 
     // 根据类型设置不同的选择数据源格式
     private String modifySql(String sql) {
+        //没登录情况下的数据源头拼接
+        String i = "true";
         try {
-            SecurityUtils.getDatabaseType();
+            SecurityUtils.getDatabaseName();
         } catch (Exception e) {
-            return "error";
+            i = "false";
         }
-        if (SecurityUtils.getDatabaseType().equals("sqlserver"))
-            return "USE `" + SecurityUtils.getDatabaseName() + "`; " + sql;
-        if (SecurityUtils.getDatabaseType().equals("dm")) {
-            String endSQl;
-            if (sql.contains("{DBNAME}.")) {
-
-                // 如果sql中出现  ` 符号
-//                if (sql.contains("`")) {
-//                    sql.replace("`", "");
-//                }
-                return sql.replace("{DBNAME}", SecurityUtils.getDatabaseName()).replace("`", "");
+        if (i.equals("false")) {
+            String databaseType = "";
+            String dBName = "";
+            try {
+                databaseType = ThreadLocalUtil.getThreadLocalValue().get("databaseType").toString();
+                dBName = ThreadLocalUtil.getThreadLocalValue().get("dbName").toString();
+            } catch (Exception e) {
+                return "error";
+            }
+            //默认时有数据源类型
+            if (databaseType.equals("sqlserver"))
+                return "USE `" + dBName + "`; " + sql;
+            if (databaseType.equals("dm")) {
+                String endSQl;
+                if (sql.contains("{DBNAME}.")) {
+                    return sql.replace("{DBNAME}", dBName).replace("`", "");
+                }
+                return "set schema " + dBName + "; " + sql;
             }
-            return "set schema " + SecurityUtils.getDatabaseName() + "; " + sql;
-        }
 
-        if (SecurityUtils.getDatabaseType().equals("mysql")) {
-            if (sql.contains("{DBNAME}.")) {
-                return sql.replace("{DBNAME}.", "`" + SecurityUtils.getDatabaseName() + "`.");
-            } else {
-                if (sql.contains("information_schema")) return sql;  // 执行当前sql不需要选择数据源
-                StringBuilder sb = new StringBuilder(sql);
-                if (sb.indexOf(" from ") != -1) {
-                    sb.insert(sb.indexOf(" from ") + 6, "`" + SecurityUtils.getDatabaseName() + "`.");  // 在目标字符后插入新的字符串
-                } else if (sb.indexOf(" FROM ") != -1) {
-                    sb.insert(sb.indexOf(" FROM ") + 6, "`" + SecurityUtils.getDatabaseName() + "`.");  // 在目标字符后插入新的字符串
-                } else if (sb.indexOf(" into ") != -1) {
-                    sb.insert(sb.indexOf(" into ") + 6, "`" + SecurityUtils.getDatabaseName() + "`.");  // 在目标字符后插入新的字符串
-                } else if (sb.indexOf("update ") != -1) {
-                    sb.insert(sb.indexOf("update ") + 7, "`" + SecurityUtils.getDatabaseName() + "`.");  // 在目标字符后插入新的字符串
+            if (databaseType.equals("mysql")) {
+                if (sql.contains("{DBNAME}.")) {
+                    return sql.replace("{DBNAME}.", "`" + dBName + "`.");
+                } else {
+                    if (sql.contains("information_schema")) return sql;  // 执行当前sql不需要选择数据源
+                    StringBuilder sb = new StringBuilder(sql);
+                    if (sb.indexOf(" from ") != -1) {
+                        sb.insert(sb.indexOf(" from ") + 6, "`" + dBName + "`.");  // 在目标字符后插入新的字符串
+                    } else if (sb.indexOf(" FROM ") != -1) {
+                        sb.insert(sb.indexOf(" FROM ") + 6, "`" + dBName + "`.");  // 在目标字符后插入新的字符串
+                    } else if (sb.indexOf(" into ") != -1) {
+                        sb.insert(sb.indexOf(" into ") + 6, "`" + dBName + "`.");  // 在目标字符后插入新的字符串
+                    } else if (sb.indexOf("update ") != -1) {
+                        sb.insert(sb.indexOf("update ") + 7, "`" + dBName + "`.");  // 在目标字符后插入新的字符串
+                    }
+                    return sb.toString();
+                }
+            }
+            //登录情况下的数据源拼接
+        } else {
+            try {
+                SecurityUtils.getDatabaseType();
+            } catch (Exception e) {
+                return "error";
+            }
+            if (SecurityUtils.getDatabaseType().equals("sqlserver"))
+                return "USE `" + SecurityUtils.getDatabaseName() + "`; " + sql;
+            if (SecurityUtils.getDatabaseType().equals("dm")) {
+                String endSQl;
+                if (sql.contains("{DBNAME}.")) {
+
+                    // 如果sql中出现  ` 符号
+                    //                if (sql.contains("`")) {
+                    //                    sql.replace("`", "");
+                    //                }
+                    //
+
+                    return sql.replace("{DBNAME}", SecurityUtils.getDatabaseName()).replace("`", "");
+                }
+                return "set schema " + SecurityUtils.getDatabaseName() + "; " + sql;
+            }
+
+            if (SecurityUtils.getDatabaseType().equals("mysql")) {
+                if (sql.contains("{DBNAME}.")) {
+                    return sql.replace("{DBNAME}.", "`" + SecurityUtils.getDatabaseName() + "`.");
+                } else {
+                    if (sql.contains("information_schema")) return sql;  // 执行当前sql不需要选择数据源
+                    StringBuilder sb = new StringBuilder(sql);
+                    if (sb.indexOf(" from ") != -1) {
+                        sb.insert(sb.indexOf(" from ") + 6, "`" + SecurityUtils.getDatabaseName() + "`.");  // 在目标字符后插入新的字符串
+                    } else if (sb.indexOf(" FROM ") != -1) {
+                        sb.insert(sb.indexOf(" FROM ") + 6, "`" + SecurityUtils.getDatabaseName() + "`.");  // 在目标字符后插入新的字符串
+                    } else if (sb.indexOf(" into ") != -1) {
+                        sb.insert(sb.indexOf(" into ") + 6, "`" + SecurityUtils.getDatabaseName() + "`.");  // 在目标字符后插入新的字符串
+                    } else if (sb.indexOf("update ") != -1) {
+                        sb.insert(sb.indexOf("update ") + 7, "`" + SecurityUtils.getDatabaseName() + "`.");  // 在目标字符后插入新的字符串
+                    }
+                    return sb.toString();
                 }
-                return sb.toString();
             }
         }
         return "error";

+ 24 - 0
zkqy-framework/src/main/java/com/zkqy/framework/security/context/ThreadLocalUtil.java

@@ -0,0 +1,24 @@
+package com.zkqy.framework.security.context;
+
+import java.util.HashMap;
+
+public class ThreadLocalUtil {
+
+    // 创建一个ThreadLocal实例
+    private static final ThreadLocal<HashMap> THREAD_LOCAL_STRING = new ThreadLocal<>();
+
+    // 设置线程局部变量的值
+    public static void setThreadLocalValue(HashMap value) {
+        THREAD_LOCAL_STRING.set(value);
+    }
+
+    // 获取线程局部变量的值
+    public static HashMap getThreadLocalValue() {
+        return THREAD_LOCAL_STRING.get();
+    }
+
+    // 清除线程局部变量的值,防止内存泄漏
+    public static void removeThreadLocalValue() {
+        THREAD_LOCAL_STRING.remove();
+    }
+}

+ 2 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/mapper/CommonMapper.java

@@ -1,12 +1,14 @@
 package com.zkqy.execution.produce.dispersed.mapper;
 
 import com.zkqy.execution.produce.dispersed.entity.CommonEntity;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+@Mapper
 public interface CommonMapper {
 
     /**-------------------------mysql-----------------------------*/

+ 5 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/ICommonService.java

@@ -21,11 +21,16 @@ public interface ICommonService {
      */
     int batchInsert(CommonEntity commonEntity);
 
+    int batchInsertNoUserInfo (CommonEntity commonEntity);
     /**
      * 修改
      */
     int edit(CommonEntity commonEntity);
 
+
+    int editNoUserInfo(CommonEntity commonEntity);
+
+
     /**
      * 批量删除
      */

+ 49 - 0
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/CommonServiceImpl.java

@@ -81,6 +81,34 @@ public class CommonServiceImpl implements ICommonService {
         return commonMapper.batchInsert(fieldNames, tableName, mapList);
     }
 
+    @Override
+    public int batchInsertNoUserInfo(CommonEntity commonEntity) {
+        String tableName = (String) commonEntity.getBasicMap().get("tableName");
+        List<Map<String, String>> list = commonEntity.getAddListMap();
+        List<LinkedHashMap<String, String>> listAsd = new ArrayList<>();
+        list.forEach(item -> {  // 批量导入数据给导入数据增加默认值
+            Map<String, String> asd = new LinkedHashMap<>();
+            asd.putAll(item);
+            if (asd.get("delFlag") == null && asd.get("del_flag") == null) {
+                asd.put("del_flag", "0");
+            }
+            listAsd.add((LinkedHashMap<String, String>) asd);
+        });
+
+        List<Map<String, Object>> mapList = new ArrayList<>();
+        for (Object obj : listAsd) {
+            Map<String, Object> map1 = (Map<String, Object>) obj;
+            mapList.add(map1);
+        }
+        Set<String> fieldNames = new LinkedHashSet<>();
+        mapList.stream().forEach(map1 -> {
+            map1.forEach((key, value) -> {
+                fieldNames.add(toUnderScoreCase(key));
+            });
+        });
+
+        return commonMapper.batchInsert(fieldNames, tableName, mapList);
+    }
     @Override
     public int edit(CommonEntity commonEntity) {
         String tableName = (String) commonEntity.getBasicMap().get("tableName");
@@ -105,6 +133,27 @@ public class CommonServiceImpl implements ICommonService {
         return commonMapper.edit(endfields, tableName, endConditions);
     }
 
+    @Override
+    public int editNoUserInfo(CommonEntity commonEntity) {
+        String tableName = (String) commonEntity.getBasicMap().get("tableName");
+        Map<String, Object> conditions = JSONObject.parseObject(JSON.toJSONString(commonEntity.getConditionMap()));
+        Map<String, Object> fields = JSONObject.parseObject(JSON.toJSONString(commonEntity.getCommMap()));
+        Map<String, Object> endfields = new HashMap<>();
+        fields.keySet().forEach(item -> {
+            if (fields.get(item).equals("A")) {
+                endfields.put(toUnderScoreCase(item), SecurityUtils.getUsername());
+            } else {
+                endfields.put(toUnderScoreCase(item), fields.get(item));
+            }
+            //endfields.put(toUnderScoreCase(item), fields.get(item));
+        });
+        Map<String, Object> endConditions = new HashMap<>();
+        conditions.keySet().forEach(item -> {
+            endConditions.put(toUnderScoreCase(item), conditions.get(item));
+        });
+        return commonMapper.edit(endfields, tableName, endConditions);
+    }
+
     @Override
     public int batchDelete(CommonEntity commonEntity) {
         String tableName = (String) commonEntity.getBasicMap().get("tableName");

+ 39 - 1
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/jiaoyu/AssembleImpl.java

@@ -2,11 +2,13 @@ package com.zkqy.execution.produce.dispersed.service.impl.runbpm.jiaoyu;
 
 import com.alibaba.fastjson2.JSONObject;
 import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.redis.RedisCache;
 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.IRunBPMService;
+import com.zkqy.execution.produce.dispersed.service.impl.CommonServiceImpl;
 import com.zkqy.execution.produce.utils.EchoNodeFormData;
 import com.zkqy.execution.produce.utils.Sending;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -14,7 +16,9 @@ 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;
 
 /**
@@ -30,6 +34,14 @@ public class AssembleImpl implements IRunBPMService {
     @Autowired
     private Sending sending;
 
+
+    @Autowired
+    private RedisCache redisCache;
+
+    @Autowired
+    private CommonServiceImpl commonService;
+
+
     @Override
     public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
         //不是空的就抛出异常差数据的方法
@@ -66,6 +78,7 @@ public class AssembleImpl implements IRunBPMService {
      */
     @Override
     public AjaxResult preValidation(IRunBPMEntity iRunBPMEntity) {
+
         return AjaxResult.success();
     }
 
@@ -77,7 +90,32 @@ public class AssembleImpl implements IRunBPMService {
      */
     @Override
     public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity) {
-        CommonEntity commonEntity = new CommonEntity();
+        //害怕有异常节点回滚操作
+//        String taskIdString = iRunBPMEntity.getExecutionMap().get("taskId").toString();
+////        if(!redisCache.hasKey("3c374962-9557-48ca-b968-65977f608af6"+taskIdString)){
+//            //获取数据采集设备上料数量
+//            HashMap requestString=new HashMap();
+//            requestString.put("id",taskIdString);
+//            String string1 = sending.sendGetRequestWithParams("http://mes.063520.com/api/v1/mes/public/task/info", requestString, String.class).toString();
+//            String string2 = JSONObject.parseObject(string1, HashMap.class).get("result").toString();
+//            Map respMap2 = JSONObject.parseObject(string2, HashMap.class);
+//            //上料节点---有数据了证明已经把所有的数据采集设备数据都给拿回来了
+//            //task_id、materials、processed、assembled、qualified、unqualified、in_stock
+//            CommonEntity commonEntity=new CommonEntity();
+//            HashMap basicMap=new HashMap();
+//            basicMap.put("tableName","product_assembly");
+//            commonEntity.setBasicMap(basicMap);
+//            //构造要添加的数据
+//            HashMap<String,String> mapRs=new HashMap();
+//            mapRs.put("task_number",iRunBPMEntity.getExecutionMap().get("taskId").toString());
+//            mapRs.put("task_quantity",iRunBPMEntity.getExecutionMap().get("productQuantity").toString());
+//            mapRs.put("over_number",respMap2.get("assembled").toString());
+//            List<Map<String,String>> mapList=new ArrayList<>();
+//            mapList.add(mapRs);
+//            commonEntity.setAddListMap(mapList);
+//            commonService.batchInsert(commonEntity);
+//            redisCache.setCacheObject("17af9e43-4bbe-4661-babc-ee09f67972b6"+taskIdString,"1");
+//        }
         return AjaxResult.success();
     }
 

+ 38 - 1
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/jiaoyu/DetectionImpl.java

@@ -2,11 +2,13 @@ package com.zkqy.execution.produce.dispersed.service.impl.runbpm.jiaoyu;
 
 import com.alibaba.fastjson2.JSONObject;
 import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.redis.RedisCache;
 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.IRunBPMService;
+import com.zkqy.execution.produce.dispersed.service.impl.CommonServiceImpl;
 import com.zkqy.execution.produce.utils.EchoNodeFormData;
 import com.zkqy.execution.produce.utils.Sending;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -14,7 +16,9 @@ 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;
 
 //检验
@@ -29,6 +33,12 @@ public class DetectionImpl implements IRunBPMService {
     @Autowired
     private Sending sending;
 
+    @Autowired
+    private RedisCache redisCache;
+
+    @Autowired
+    private CommonServiceImpl commonService;
+
     @Override
     public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
         if(!bpmRunNodeFromVo.getFormDataVoList().isEmpty()){
@@ -79,7 +89,34 @@ public class DetectionImpl implements IRunBPMService {
      */
     @Override
     public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity) {
-        CommonEntity commonEntity = new CommonEntity();
+        //害怕有异常节点回滚操作
+//        String taskIdString = iRunBPMEntity.getExecutionMap().get("taskId").toString();
+////        if(!redisCache.hasKey("412d1936-1a9b-4478-8f7a-05b4bfb5a286"+taskIdString)){
+//            //获取数据采集设备上料数量
+//            HashMap requestString=new HashMap();
+//            requestString.put("id",taskIdString);
+//            String string1 = sending.sendGetRequestWithParams("http://mes.063520.com/api/v1/mes/public/task/info", requestString, String.class).toString();
+//            String string2 = JSONObject.parseObject(string1, HashMap.class).get("result").toString();
+//            Map respMap2 = JSONObject.parseObject(string2, HashMap.class);
+//            //上料节点---有数据了证明已经把所有的数据采集设备数据都给拿回来了
+//            //task_id、materials、processed、assembled、qualified、unqualified、in_stock
+//            CommonEntity commonEntity=new CommonEntity();
+//            HashMap basicMap=new HashMap();
+//            basicMap.put("tableName","quality_inspection");
+//            commonEntity.setBasicMap(basicMap);
+//            //构造要添加的数据
+//            HashMap<String,String> mapRs=new HashMap();
+//            mapRs.put("task_number",iRunBPMEntity.getExecutionMap().get("taskId").toString());
+//            mapRs.put("task_quantity",iRunBPMEntity.getExecutionMap().get("productQuantity").toString());
+//            mapRs.put("over_number",respMap2.get("assembled").toString());
+//            mapRs.put("qualified_quantity",respMap2.get("qualified").toString());
+//            mapRs.put("unqualified_quantity",respMap2.get("unqualified").toString());
+//            List<Map<String,String>> mapList=new ArrayList<>();
+//            mapList.add(mapRs);
+//            commonEntity.setAddListMap(mapList);
+//            commonService.batchInsert(commonEntity);
+//            redisCache.setCacheObject("17af9e43-4bbe-4661-babc-ee09f67972b6"+taskIdString,"1");
+//        }
         return AjaxResult.success();
     }
 

+ 45 - 29
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/jiaoyu/LoadingImpl.java

@@ -110,37 +110,53 @@ public class LoadingImpl implements IRunBPMService {
      */
     @Override
     public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity) {
-        String taskIdString = iRunBPMEntity.getExecutionMap().get("taskId").toString();
-        if(!redisCache.hasKey("17af9e43-4bbe-4661-babc-ee09f67972b6"+taskIdString)){
-            //获取数据采集设备上料数量
-            HashMap requestString=new HashMap();
-            requestString.put("id",taskIdString);
-            String string1 = sending.sendGetRequestWithParams("http://mes.063520.com/api/v1/mes/public/task/info", requestString, String.class).toString();
-            String string2 = JSONObject.parseObject(string1, HashMap.class).get("result").toString();
-            Map respMap2 = JSONObject.parseObject(string2, HashMap.class);
-            //上料节点---有数据了证明已经把所有的数据采集设备数据都给拿回来了
-            //task_id、materials、processed、assembled、qualified、unqualified、in_stock
-            CommonEntity commonEntity=new CommonEntity();
-            HashMap basicMap=new HashMap();
-            basicMap.put("tableName","data_acquisition_information");
-            commonEntity.setBasicMap(basicMap);
-            //构造要添加的数据
-            respMap2.put("task_id",respMap2.get("taskId"));
-            respMap2.remove("taskId");
-            respMap2.remove("id");
-            respMap2.put("in_stock",respMap2.get("inStock"));
-            respMap2.remove("inStock");
-            respMap2.remove("createTime");
-            respMap2.remove("updateTime");
-            List<Map<String,String>> mapList=new ArrayList<>();
-            mapList.add(respMap2);
-            commonEntity.setAddListMap(mapList);
-            commonService.batchInsert(commonEntity);
-            redisCache.setCacheObject("17af9e43-4bbe-4661-babc-ee09f67972b6"+taskIdString,"1");
-        }
+        //害怕有异常节点回滚操作
+//        String taskIdString = iRunBPMEntity.getExecutionMap().get("taskId").toString();
+////        if(!redisCache.hasKey("17af9e43-4bbe-4661-babc-ee09f67972b6"+taskIdString)){
+//            //获取数据采集设备上料数量
+//            HashMap requestString=new HashMap();
+//            requestString.put("id",taskIdString);
+//            String string1 = sending.sendGetRequestWithParams("http://mes.063520.com/api/v1/mes/public/task/info", requestString, String.class).toString();
+//            String string2 = JSONObject.parseObject(string1, HashMap.class).get("result").toString();
+//            Map respMap2 = JSONObject.parseObject(string2, HashMap.class);
+//            //上料节点---有数据了证明已经把所有的数据采集设备数据都给拿回来了
+//            //task_id、materials、processed、assembled、qualified、unqualified、in_stock
+//            CommonEntity commonEntity=new CommonEntity();
+//            HashMap basicMap=new HashMap();
+//            basicMap.put("tableName","load_material_info");
+//            commonEntity.setBasicMap(basicMap);
+//            //构造要添加的数据
+//            HashMap<String,String> mapRs=new HashMap();
+//            mapRs.put("task_number",iRunBPMEntity.getExecutionMap().get("taskId").toString());
+//            mapRs.put("task_quantity",iRunBPMEntity.getExecutionMap().get("productQuantity").toString());
+//            mapRs.put("over_number",respMap2.get("materials").toString());
+//            List<Map<String,String>> mapList=new ArrayList<>();
+//            mapList.add(mapRs);
+//            commonEntity.setAddListMap(mapList);
+//            commonService.batchInsert(commonEntity);
+//            redisCache.setCacheObject("17af9e43-4bbe-4661-babc-ee09f67972b6"+taskIdString,"1");
+//        }
         return AjaxResult.success();
     }
-
+    /**
+     * 一下收集下所有的数采信息到数据库当中
+     *          CommonEntity commonEntity=new CommonEntity();
+     *             HashMap basicMap=new HashMap();
+     *             basicMap.put("tableName","data_acquisition_information");
+     *             commonEntity.setBasicMap(basicMap);
+     *             //构造要添加的数据
+     *             respMap2.put("task_id",respMap2.get("taskId"));
+     *             respMap2.remove("taskId");
+     *             respMap2.remove("id");
+     *             respMap2.put("in_stock",respMap2.get("inStock"));
+     *             respMap2.remove("inStock");
+     *             respMap2.remove("createTime");
+     *             respMap2.remove("updateTime");
+     *             List<Map<String,String>> mapList=new ArrayList<>();
+     *             mapList.add(respMap2);
+     *             commonEntity.setAddListMap(mapList);
+     *             commonService.batchInsert(commonEntity);
+     */
     /**
      * 后置验证节点
      *

+ 36 - 1
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/jiaoyu/ProcessingImpl.java

@@ -3,11 +3,13 @@ package com.zkqy.execution.produce.dispersed.service.impl.runbpm.jiaoyu;
 
 import com.alibaba.fastjson2.JSONObject;
 import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.redis.RedisCache;
 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.IRunBPMService;
+import com.zkqy.execution.produce.dispersed.service.impl.CommonServiceImpl;
 import com.zkqy.execution.produce.utils.EchoNodeFormData;
 import com.zkqy.execution.produce.utils.Sending;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -15,7 +17,9 @@ 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;
 
 /**
@@ -32,6 +36,12 @@ public class ProcessingImpl implements IRunBPMService {
     @Autowired
     private Sending sending;
 
+    @Autowired
+    private RedisCache redisCache;
+
+    @Autowired
+    private CommonServiceImpl commonService;
+
     @Override
     public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
         //不是空的就执行查询抛出异常的数据的方法
@@ -79,7 +89,32 @@ public class ProcessingImpl implements IRunBPMService {
      */
     @Override
     public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity) {
-        CommonEntity commonEntity = new CommonEntity();
+        //害怕有异常节点回滚操作
+//        String taskIdString = iRunBPMEntity.getExecutionMap().get("taskId").toString();
+////        if(!redisCache.hasKey("b73ce52e-f3f4-446d-80bd-38f44e51371c"+taskIdString)){
+//            //获取数据采集设备上料数量
+//            HashMap requestString=new HashMap();
+//            requestString.put("id",taskIdString);
+//            String string1 = sending.sendGetRequestWithParams("http://mes.063520.com/api/v1/mes/public/task/info", requestString, String.class).toString();
+//            String string2 = JSONObject.parseObject(string1, HashMap.class).get("result").toString();
+//            Map respMap2 = JSONObject.parseObject(string2, HashMap.class);
+//            //上料节点---有数据了证明已经把所有的数据采集设备数据都给拿回来了
+//            //task_id、materials、processed、assembled、qualified、unqualified、in_stock
+//            CommonEntity commonEntity=new CommonEntity();
+//            HashMap basicMap=new HashMap();
+//            basicMap.put("tableName","product_processing_info");
+//            commonEntity.setBasicMap(basicMap);
+//            //构造要添加的数据
+//            HashMap<String,String> mapRs=new HashMap();
+//            mapRs.put("task_number",iRunBPMEntity.getExecutionMap().get("taskId").toString());
+//            mapRs.put("task_quantity",iRunBPMEntity.getExecutionMap().get("productQuantity").toString());
+//            mapRs.put("over_number",respMap2.get("processed").toString());
+//            List<Map<String,String>> mapList=new ArrayList<>();
+//            mapList.add(mapRs);
+//            commonEntity.setAddListMap(mapList);
+//            commonService.batchInsert(commonEntity);
+//            redisCache.setCacheObject("17af9e43-4bbe-4661-babc-ee09f67972b6"+taskIdString,"1");
+//        }
         return AjaxResult.success();
     }
 

+ 46 - 1
zkqy-process-execution/src/main/java/com/zkqy/execution/produce/dispersed/service/impl/runbpm/jiaoyu/WareHousingImpl.java

@@ -2,11 +2,13 @@ package com.zkqy.execution.produce.dispersed.service.impl.runbpm.jiaoyu;
 
 import com.alibaba.fastjson2.JSONObject;
 import com.zkqy.common.core.domain.AjaxResult;
+import com.zkqy.common.core.redis.RedisCache;
 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.IRunBPMService;
+import com.zkqy.execution.produce.dispersed.service.impl.CommonServiceImpl;
 import com.zkqy.execution.produce.utils.EchoNodeFormData;
 import com.zkqy.execution.produce.utils.Sending;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -14,7 +16,9 @@ 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;
 
 /**
@@ -31,6 +35,12 @@ public class WareHousingImpl implements IRunBPMService {
     @Autowired
     private Sending sending;
 
+    @Autowired
+    private RedisCache redisCache;
+
+    @Autowired
+    private CommonServiceImpl commonService;
+
     @Override
     public CommonEntity getNodeFormData(BpmRunNodeFromVo bpmRunNodeFromVo) {
         //回滚异常节点表单数据查询
@@ -48,6 +58,11 @@ public class WareHousingImpl implements IRunBPMService {
         String string1 = sending.sendGetRequestWithParams("http://mes.063520.com/api/v1/mes/public/task/info", requestString, String.class).toString();
         Map respMap1 = JSONObject.parseObject(string1, HashMap.class);
         Map respMap2 = JSONObject.parseObject(respMap1.get("result").toString(), HashMap.class);
+        String materials = respMap2.get("materials").toString();
+        String processed = respMap2.get("processed").toString();
+        String assembled = respMap2.get("assembled").toString();
+        String qualified = respMap2.get("qualified").toString();
+        String unqualified = respMap2.get("unqualified").toString();
         String inStock = respMap2.get("inStock").toString();
         //必须得移除这个要不然第一此保存操作的时候就是修改操作了
         HashMap hashMap=new HashMap();
@@ -55,6 +70,11 @@ public class WareHousingImpl implements IRunBPMService {
         hashMap.put("taskNumber",echoNodeFormData1.getResultMap().get("taskId"));//任务id--计划号
         hashMap.put("psk",bpmRunNodeFromVo.getTaskProcessKey());//流程key
         hashMap.put("psName",echoNodeFormData1.getResultMap().get("taskName"));
+        hashMap.put("materials",materials);
+        hashMap.put("processed",processed);
+        hashMap.put("assembled",assembled);
+        hashMap.put("qualified",qualified);
+        hashMap.put("unqualified",unqualified);
         echoNodeFormData1.getResultMap().remove("taskProcessKey");
         echoNodeFormData1.getResultMap().remove("taskNodeKey");
         echoNodeFormData1.getResultMap().putAll(hashMap);
@@ -80,7 +100,32 @@ public class WareHousingImpl implements IRunBPMService {
      */
     @Override
     public AjaxResult executeNode(IRunBPMEntity iRunBPMEntity) {
-        CommonEntity commonEntity = new CommonEntity();
+        //害怕有异常节点回滚操作
+//        String taskIdString = iRunBPMEntity.getExecutionMap().get("taskId").toString();
+////        if(!redisCache.hasKey("524b8b00-1153-41b4-b098-a0c60e66a1a6"+taskIdString)){
+              //获取数据采集设备上料数量
+//            HashMap requestString=new HashMap();
+//            requestString.put("id",taskIdString);
+//            String string1 = sending.sendGetRequestWithParams("http://mes.063520.com/api/v1/mes/public/task/info", requestString, String.class).toString();
+//            String string2 = JSONObject.parseObject(string1, HashMap.class).get("result").toString();
+//            Map respMap2 = JSONObject.parseObject(string2, HashMap.class);
+//            //上料节点---有数据了证明已经把所有的数据采集设备数据都给拿回来了
+//            //task_id、materials、processed、assembled、qualified、unqualified、in_stock
+//            CommonEntity commonEntity=new CommonEntity();
+//            HashMap basicMap=new HashMap();
+//            basicMap.put("tableName","inventory");
+//            commonEntity.setBasicMap(basicMap);
+//            //构造要添加的数据
+//            HashMap<String,String> mapRs=new HashMap();
+//            mapRs.put("stock_number",iRunBPMEntity.getExecutionMap().get("taskId").toString());
+//            mapRs.put("product_name",iRunBPMEntity.getExecutionMap().get("taskDesc").toString());
+//            mapRs.put("inventory_quantity",respMap2.get("inStock").toString());
+//            List<Map<String,String>> mapList=new ArrayList<>();
+//            mapList.add(mapRs);
+//            commonEntity.setAddListMap(mapList);
+//            commonService.edit(commonEntity);
+//            redisCache.setCacheObject("17af9e43-4bbe-4661-babc-ee09f67972b6"+taskIdString,"1");
+//        }
         return AjaxResult.success();
     }
 

+ 10 - 0
zkqy-ui/src/api/bpmprocess/runDialogApi/index.js

@@ -21,3 +21,13 @@ export function changeNodeState(data) {
     baseURL: process.env.VUE_APP_BASE_API1
   })
 }
+
+//更新数采信息
+export function updateShuCai(data) {
+  return request({
+    url: '/system/information/updateNumericalSampling',
+    method: 'post',
+    data: data,
+    baseURL: process.env.VUE_APP_BASE_API1
+  })
+}

+ 20 - 14
zkqy-ui/src/components/FormGroup/formList.vue

@@ -104,7 +104,7 @@ export default {
     myFormList: {
       handler(val) {
         // this.$emit("update:formList", val);
-
+        console.log(JSON.parse(JSON.stringify(val)));
         let temp = JSON.parse(JSON.stringify(val));
         this.formArray = this.disableHandler(temp);
         this.$nextTick(() => {
@@ -130,16 +130,16 @@ export default {
     setDefaultValue() {
       console.log("开始渲染默认数据");
       this.formArray.forEach((item) => {
-        for (const key of Object.keys(item.template?.defaultValue || {})) {
-          item.template.defaultValue[toUnderline(key)] =
-            item.template.defaultValue[key];
-        }
+        // for (const key of Object.keys(item.template?.defaultValue || {})) {
+        //   item.template.defaultValue[toUnderline(key)] =
+        //     item.template.defaultValue[key];
+        // }
+        console.log(item);
         this.defaultValue[item.tableName] = item.template?.defaultValue || {};
       });
       for (const key in this.defaultValue) {
+        console.log(this.defaultValue);
         this.$refs[key][0]?.setData(this.defaultValue[key]);
-        console.log(this.defaultValue[key]);
-        console.log(this.$refs[key][0]);
       }
     },
     getUUID() {
@@ -155,7 +155,6 @@ export default {
       this.resetForm();
       if (formList.length == 0) return [];
       formList.forEach((item) => {
-        console.log(item);
         item.template.dfFormSql =
           typeof item.template.dfFormSql == "object"
             ? item.template.dfFormSql
@@ -171,10 +170,8 @@ export default {
             : JSON.parse(item.template.dfVueTemplate);
 
         if (item.template.resultMap) {
-          console.log(item.template.resultMap);
-          console.log(item.template.resultMap[0]?.resultMap);
-          item.template.defaultValue = item.template.resultMap[0]?.resultMap
-            ? item.template.resultMap[0].resultMap
+          item.template.defaultValue = item.template.resultMap[0]
+            ? item.template.resultMap[0]
             : {};
         }
 
@@ -222,14 +219,23 @@ export default {
     // 获取指定表单数据
     getFormData(refName) {
       return new Promise((resolve) => {
-        let { tableName, formItem, relateFormItem } = refName;
-        console.log(this.$refs[tableName]);
+        let {
+          tableName,
+          formItem,
+          relateFormItem,
+          formType,
+          defaultValue,
+          insertMap,
+        } = refName;
         this.$refs[tableName][0]?.getData().then((values) => {
           resolve({
             tableName,
             data: values,
             formItem,
             relateFormItem,
+            formType,
+            defaultValue,
+            insertMap,
           });
         });
       });

+ 9 - 9
zkqy-ui/src/views/bussiness/dialogCompments/Edu/Assemble.vue

@@ -12,15 +12,15 @@
           <el-input v-model="form.assembled" readonly disabled></el-input>
         </el-form-item>
         <!--记录信息-->
-        <el-form-item>
-          <el-button
-            type="primary"
-            class="btn"
-            @click="submitHandler"
-            style="margin-left:-500px"
-          >记录信息</el-button
-          >
-        </el-form-item>
+<!--        <el-form-item>-->
+<!--          <el-button-->
+<!--            type="primary"-->
+<!--            class="btn"-->
+<!--            @click="submitHandler"-->
+<!--            style="margin-left:-500px"-->
+<!--          >记录信息</el-button-->
+<!--          >-->
+<!--        </el-form-item>-->
       </el-form>
     </div>
 </template>

+ 9 - 9
zkqy-ui/src/views/bussiness/dialogCompments/Edu/Detection.vue

@@ -18,15 +18,15 @@
               <el-input v-model="form.unqualified"  readonly disabled></el-input>
             </el-form-item>
               <!--记录信息-->
-              <el-form-item>
-                <el-button
-                  type="primary"
-                  class="btn"
-                  @click="submitHandler"
-                  style=""
-                >质检信息记录</el-button
-                >
-              </el-form-item>
+<!--              <el-form-item>-->
+<!--                <el-button-->
+<!--                  type="primary"-->
+<!--                  class="btn"-->
+<!--                  @click="submitHandler"-->
+<!--                  style=""-->
+<!--                >质检信息记录</el-button-->
+<!--                >-->
+<!--              </el-form-item>-->
         </el-form>
     </div>
 </template>

+ 9 - 9
zkqy-ui/src/views/bussiness/dialogCompments/Edu/Loading.vue

@@ -11,15 +11,15 @@
             <el-form-item label="上料数量">
               <el-input v-model="form.materials" readonly disabled></el-input>
             </el-form-item>
-            <el-form-item>
-              <el-button
-                type="primary"
-                class="btn"
-                @click="submitHandler"
-                style="margin-left:-500px"
-                >记录信息</el-button
-               >
-            </el-form-item>
+<!--            <el-form-item>-->
+<!--              <el-button-->
+<!--                type="primary"-->
+<!--                class="btn"-->
+<!--                @click="submitHandler"-->
+<!--                style="margin-left:-500px"-->
+<!--                >记录信息</el-button-->
+<!--               >-->
+<!--            </el-form-item>-->
         </el-form>
     </div>
 </template>

+ 10 - 10
zkqy-ui/src/views/bussiness/dialogCompments/Edu/Processing.vue

@@ -11,16 +11,16 @@
             <el-form-item label="加工数量:">
               <el-input v-model="form.processed"  readonly disabled></el-input>
             </el-form-item>
-            <!--记录信息-->
-            <el-form-item>
-              <el-button
-                type="primary"
-                class="btn"
-                @click="submitHandler"
-                style="margin-left:-500px"
-                >记录信息</el-button
-              >
-            </el-form-item>
+<!--            &lt;!&ndash;记录信息&ndash;&gt;-->
+<!--            <el-form-item>-->
+<!--              <el-button-->
+<!--                type="primary"-->
+<!--                class="btn"-->
+<!--                @click="submitHandler"-->
+<!--                style="margin-left:-500px"-->
+<!--                >记录信息</el-button-->
+<!--              >-->
+<!--            </el-form-item>-->
         </el-form>
     </div>
 </template>

+ 63 - 37
zkqy-ui/src/views/bussiness/dialogCompments/Edu/WareHousing.vue

@@ -2,23 +2,38 @@
     <!-- 入库 -->
     <div class="app-container">
         <el-form ref="form" :model="form" label-width="80px" align="center">
-          <el-form-item label="任务号:">
+          <el-form-item label="任务号:" :label-width="'90px'">
             <el-input v-model="form.taskNumber" readonly disabled></el-input>
           </el-form-item>
-          <el-form-item label="投产数量:">
+          <el-form-item label="投产数量:" :label-width="'90px'">
             <el-input v-model="form.productQuantity" readonly disabled></el-input>
           </el-form-item>
-            <el-form-item label="入库数量:">
-              <el-input v-model="form.inStock" readonly disabled></el-input>
-            </el-form-item>
+          <el-form-item label="上料数量" :label-width="'90px'">
+            <el-input v-model="form.materials" readonly disabled></el-input>
+          </el-form-item>
+          <el-form-item label="加工数量:" :label-width="'90px'">
+            <el-input v-model="form.processed"  readonly disabled></el-input>
+          </el-form-item>
+          <el-form-item label="组装数量:"  :label-width="'90px'">
+            <el-input v-model="form.assembled" readonly disabled></el-input>
+          </el-form-item>
+          <el-form-item label="合格数量:" :label-width="'90px'">
+            <el-input v-model="form.qualified"  readonly disabled></el-input>
+          </el-form-item>
+          <el-form-item label="不合格数量:" :label-width="'90px'">
+            <el-input v-model="form.unqualified"  readonly disabled></el-input>
+          </el-form-item>
+          <el-form-item label="入库数量:" :label-width="'90px'">
+            <el-input v-model="form.inStock" readonly disabled></el-input>
+          </el-form-item>
           <!--记录信息-->
           <el-form-item>
             <el-button
               type="primary"
               class="btn"
-              @click="submitHandler"
+              @click="shuaxin"
               style="margin-left:-500px"
-            >记录信息</el-button
+              >刷新</el-button
             >
           </el-form-item> <!--记录信息-->
         </el-form>
@@ -26,7 +41,8 @@
 </template>
 
 <script>
-import { submitNodeForm } from "@/api/bpmprocess/runDialogApi/index";
+import { submitNodeForm,updateShuCai } from "@/api/bpmprocess/runDialogApi/index";
+
 export default {
     name: ' WareHousing',
     props: ["formData", "row"],
@@ -39,6 +55,11 @@ export default {
                 psk:'',
                 psName:'',
                 inStock: '',
+                materials:'',
+                processed:'',
+                assembled:'',
+                qualified:'',
+                unqualified:'',
             }
         };
     },
@@ -66,30 +87,35 @@ export default {
     },
 
     methods: {
+        async shuaxin(){
+          let payLoad =  {
+              taskId:this.form.taskNumber,//计划id
+              materials:this.form.materials,
+              processed:this.form.processed,
+              assembled:this.form.assembled,
+              qualified:this.form.qualified,
+              unqualified:this.form.unqualified,
+              inStock:this.form.inStock,
+              // stockNumber:this.form.psk,//流程编号
+              stockNumber:this.form.taskNumber,//计划
+              productName:this.form.psName,
+              inventoryQuantity: this.form.inStock,
+            };
+          updateShuCai(payLoad).then((response) => {
+            console.log(response);
+            if (response.code == 200) {
+              this.$modal.msgSuccess("刷新成功");
+            } else {
+              this.$modal.error("刷新失败");
+            }
+          });
+        },
         async submitHandler() {
             console.log(this.row);
             let res = await this.$refs.form?.validate();
             if (res) {
                 let payLoad = {};
-                if (this.isEdit) {
-                    let { taskProcessKey, taskNodeKey } = this.myFormData.resultMap;
-                    payLoad.updateCommonEntityList = [
-                        {
-                        basicMap: {
-                            tableName: "inventory",
-                        },
-                        conditionMap: {
-                            task_process_key: taskProcessKey,
-                            task_node_key: taskNodeKey,
-                        },
-                        commMap: {
-                          inventory_quantity: this.form.qualifiedQuantity,
-                        },
-                        },
-                    ];
-                } else {
-                  console.log("新增")
-                payLoad.insertCommonEntityList = [
+                  payLoad.updateCommonEntityList = [
                     {
                     basicMap: {
                         tableName: "inventory",
@@ -100,18 +126,18 @@ export default {
                           product_name:this.form.psName,
                           inventory_quantity: this.form.inStock,
                         },
-                    ],
-                    },
+                      ],
+                  },
                 ];
+              submitNodeForm(payLoad).then((response) => {
+                console.log(response);
+                if (response.code == 200) {
+                  this.$modal.msgSuccess("保存成功");
+                } else {
+                  this.$modal.error("保存失败,请稍后再试");
                 }
-                submitNodeForm(payLoad).then((response) => {
-                  console.log(response);
-                    if (response.code == 200) {
-                        this.$modal.msgSuccess("保存成功");
-                    } else {
-                        this.$modal.error("保存失败,请稍后再试");
-                    }
-                });
+              });
+
             }
         },
         async getFormData() {

+ 261 - 52
zkqy-ui/src/views/tablelist/commonTable/listInfo.vue

@@ -345,6 +345,25 @@ export default {
   components: { Queryfrom, Menu, DialogTemplate, FormList },
   data() {
     return {
+      // 自动生成字段
+      theAutoField: [
+        "id",
+        "createBy",
+        "createById",
+        "createTime",
+        "delFlag",
+        "updateBy",
+        "updateById",
+        "updateTime",
+        "del_flag",
+        "create_by",
+        "create_by_id",
+        "create_time",
+        "data_approval_status",
+        "update_by",
+        "update_by_id",
+        "update_time",
+      ],
       // 绑定按钮dialog
       btnDialogVisible: false,
       // 绑定修改dialog
@@ -820,6 +839,7 @@ export default {
               //   this.$refs.formGroupRef.setDefaultValue();
               // });
             } else {
+              console.error(res);
               this.$message.error("网络异常,请稍后再试");
             }
           } else {
@@ -892,7 +912,7 @@ export default {
         // });
       } catch (error) {
         this.$message.error("网络异常,请稍后再试");
-        // console.log(error);
+        console.error(error);
       }
       return;
       // getInfoBySqlKey(this.templateInfo.template.sqlKey).then(({ data }) => {
@@ -936,10 +956,18 @@ export default {
       this.FormNameList = [];
       let { mainForm, subFormList } = data;
       this.formList = [];
-      let showValue = mainForm.showValue[0];
+      let showValue = null;
+      if (mainForm.showValue) {
+        showValue = mainForm.showValue[0]?.resultMap;
+      }
+
       if (showValue) {
-        mainForm.showTemplate.resultMap = mainForm.showValue;
+        for (const key of Object.keys(showValue)) {
+          showValue[toUnderline(key)] = showValue[key];
+        }
+        mainForm.showTemplate.resultMap = [showValue];
       }
+
       this.formList.push({
         template: mainForm.showTemplate,
         tableName: mainForm.mainFormTable,
@@ -948,13 +976,46 @@ export default {
         tableName: mainForm.mainFormTable,
         formItem: mainForm.mainFormItem,
         relateFormItem: null,
+        formType: mainForm.showTemplate.spare == "2" ? "batch" : "normal",
+        defaultValue: mainForm.showValue ? mainForm.showValue[0].resultMap : {},
       });
       if (subFormList && subFormList.length > 0) {
         subFormList.forEach((item) => {
-          // console.log(item);
-          let showValue = item.showValue[0];
+          let showValue = null;
+          if (item.showValue) {
+            showValue = item.showValue[0];
+          }
+          let defaultValue = {};
           if (showValue) {
-            item.showTemplate.resultMap = item.showValue;
+            if (item.showTemplate.spare == "2") {
+              //动态表格表单
+              let batch = {},
+                tableName = item.formItem?.split(".")?.[0];
+              batch[tableName] = item.showValue.map((item) => item.resultMap);
+              defaultValue = JSON.parse(JSON.stringify(batch));
+              console.log(JSON.parse(JSON.stringify(batch)));
+              // 所有字段驼峰转下划线
+              batch[tableName].forEach((i) => {
+                for (const key of Object.keys(i)) {
+                  i[toUnderline(key)] = i[key];
+                  if (toUnderline(key) != key) {
+                    delete i[key];
+                  }
+                }
+              });
+              item.showTemplate.resultMap = [
+                {
+                  batch,
+                },
+              ];
+            } else {
+              for (const key of Object.keys(item.showValue[0].resultMap)) {
+                item.showValue[0].resultMap[toUnderline(key)] =
+                  item.showValue[0].resultMap[key];
+              }
+
+              item.showTemplate.resultMap = [item.showValue[0].resultMap];
+            }
           }
           this.formList.push({
             template: item.showTemplate,
@@ -964,6 +1025,9 @@ export default {
             tableName: item.formItem?.split(".")?.[0],
             formItem: item.formItem,
             relateFormItem: item.relateMainItem,
+            formType: item.showTemplate.spare == "2" ? "batch" : "normal",
+            defaultValue,
+            insertMap: item.insertMap,
           });
         });
       }
@@ -1196,12 +1260,59 @@ export default {
       let temp = field.replace(tableName, "");
       return toUnderline(temp[0].toLowerCase() + temp.slice(1));
     },
+    // 处理 动态表单 动态表格 新增数据
+    getInsertBatchData(values, data) {
+      if (Object.keys(values.batch).length == 0) return data;
+      let tableName = Object.keys(values.batch)[0];
+      data.basicMap.tableName = tableName;
+      data.addListMap = values.batch[tableName].map((item) => {
+        delete item.key;
+        return item;
+      });
+      return data;
+    },
+    // 添加插入的数据
+    addInsertData(insertMap, result, res) {
+      console.log(insertMap, result, res);
+      result.addListMap.forEach((i) => {
+        insertMap.forEach((j) => {
+          i[j.fieldName?.split(".")[1]] = res.find(
+            (k) => k.tableName == j.tableName
+          )?.data[j.relaField.split(".")[1]];
+        });
+      });
+    },
+    // 处理 动态表单 动态表格 修改数据
+    getEditBatchData(values, data) {},
+    // 处理 表单组  含有动态表格  新增数据
+    getFormGroupBatchData(values, index, result) {
+      console.log(values, index, result);
+      let tableName = Object.keys(values.data.batch)[0];
+      let res = {
+        basicMap: {
+          tableName,
+        },
+        addListMap: [],
+      };
+      let { formItem, relateFormItem } = values;
+      res.addListMap = values.data.batch[tableName].map((item) => {
+        delete item.key;
+        console.log(formItem.split(".")[1], relateFormItem.split(".")[1]);
+        item[formItem.split(".")[1]] =
+          result[0].data[relateFormItem.split(".")[1]]; //将主表单的关联值赋值给从表单
+        return item;
+      });
+      return res;
+    },
     //提交编辑结果按钮回调
     async editConfirmHandler() {
       if (this.$refs.addFromRef && this.formType == "dragForm") {
         this.$refs.addFromRef
           .getData()
           .then(async (values) => {
+            // console.log("dragForm", values);
+
+            // return;
             let data = {
               basicMap: {
                 tableName: this.tableName,
@@ -1213,6 +1324,7 @@ export default {
               commMap: {},
               btnParametersMap: {},
             };
+
             if (this.currentBtnData.btnParams) {
               let btnParams =
                 JSON.parse(this.currentBtnData.btnParams)?.commonFieldData ||
@@ -1238,14 +1350,27 @@ export default {
               });
             }
             if (Object.keys(this.defaultValue).length) {
+              //修改
               // data.conditionMap[this.templateInfo.template?.primaryKey] =
               //   this.defaultValue[this.templateInfo.template?.primaryKey];
-              Object.keys(values).map((k) => {
-                data.commMap[k] = values[k];
-              });
+              if (values.batch) {
+                //动态表单的修改
+                data = this.getEditBatchData(values, data);
+              } else {
+                Object.keys(values).map((k) => {
+                  data.commMap[k] = values[k];
+                });
+              }
               data.basicMap.btnType = this.currentBtnData.btnType;
               data.basicMap.visible = true;
             } else {
+              // 处理 动态表格
+              // start
+              if (values.batch) {
+                data = this.getInsertBatchData(values, data);
+              }
+              // end
+              //新增
               data.basicMap.btnType = "INSERT";
               data.basicMap.visible = true;
             }
@@ -1265,7 +1390,7 @@ export default {
             this.open = false;
           })
           .catch((res) => {
-            // console.log(res);
+            console.log(res);
             this.$modal.msgError("表单校验失败,请规范填写数据");
           });
       } else if (this.formType == "dragFormGroup") {
@@ -1312,27 +1437,28 @@ export default {
                 ? item.fieldValue
                 : this.currentRow[camelCase(item.fieldName.replace(".", "_"))];
             });
-
-            // // console.log("mainFormData", mainFormData);
-            // // console.log("btnParams", btnParams);
-            // // console.log("conditionData", conditionData);
-            // // console.log("btnType", this.currentBtnData.btnType);
             data.basicMap.btnType = this.currentBtnData.btnType;
             data.basicMap.visible = true;
-            let payLoad = {};
+            let payLoad = {
+              insertCommonEntityList: [],
+              updateCommonEntityList: [],
+              deleteCommonEntityList: [],
+            };
             if (this.currentBtnData.btnType == "UPDATE") {
-              //修改
-              payLoad.updateCommonEntityList = res.map((item, index) => {
-                let result = {
-                  basicMap: {
-                    tableName: item.tableName,
-                  },
-                  commMap: {
-                    ...item.data,
-                  },
-                  conditionMap: {},
-                };
+              // 准备删除数据
+              res.forEach((item, index) => {
+                let result = {};
                 if (index == 0) {
+                  //主表  主表不会是动态表格
+                  result = {
+                    basicMap: {
+                      tableName: item.tableName,
+                    },
+                    commMap: {
+                      ...item.data,
+                    },
+                    conditionMap: {},
+                  };
                   //主表条件
                   let conditionData =
                     JSON.parse(this.currentBtnData.btnParams).conditionData ||
@@ -1345,38 +1471,108 @@ export default {
                             camelCase(item.fieldName.replace(".", "_"))
                           ];
                   });
+                  payLoad.updateCommonEntityList.push(result);
                 } else {
                   // 从表条件
-                  let { formItem, relateFormItem } = item;
-                  let fieldName = formItem.split(".")[1];
-                  let value =
-                    this.currentRow[
-                      camelCase(relateFormItem.replace(".", "_"))
-                    ];
-                  result.conditionMap[fieldName] = value;
+                  let {
+                    formItem,
+                    relateFormItem,
+                    formType,
+                    defaultValue,
+                    tableName,
+                  } = item;
+                  if (formType == "batch") {
+                    //动态表格的修改
+                    let result = {};
+                    // 准备删除数据
+                    if (defaultValue[tableName]?.length) {
+                      let ids = defaultValue[tableName].map((item) => item.id);
+                      result = {
+                        basicMap: {
+                          tableName,
+                        },
+                        conditionMap: {
+                          id: ids,
+                        },
+                      };
+                      payLoad.deleteCommonEntityList.push(result);
+                    }
+                    // 准备新增数据
+                    result = this.getFormGroupBatchData(item, index, res);
+                    if (item.insertMap.length) {
+                      this.addInsertData(item.insertMap, result, res);
+                    }
+                    // 去除未修改数据的自动生成字段
+                    this.removeAutoField(result);
+                    console.log(result);
+                    payLoad.insertCommonEntityList.push(result);
+                  } else {
+                    //普通表格的修改
+                    result = {
+                      basicMap: {
+                        tableName: item.tableName,
+                      },
+                      commMap: {
+                        ...item.data,
+                      },
+                      conditionMap: {},
+                    };
+                    let fieldName = formItem.split(".")[1];
+                    let value =
+                      this.currentRow[
+                        camelCase(relateFormItem.replace(".", "_"))
+                      ];
+                    result.conditionMap[fieldName] = value;
+                    payLoad.updateCommonEntityList.push(result);
+                  }
                 }
-                return result;
               });
             } else if (this.currentBtnData.btnType == "INSERT") {
               // 新增
-              let uuid = uuidv4();
+              let uuid = uuidv4().replace("-", "");
               // console.log(uuid);
+              res.forEach((item, index) => {});
               payLoad.insertCommonEntityList = res.map((item, index) => {
-                let result = {
-                  basicMap: {
-                    tableName: item.tableName,
-                  },
-                  addListMap: [
-                    {
-                      ...item.data,
+                let result = {};
+                console.log(item);
+                // return;
+                if (item.data.batch) {
+                  //动态表格
+                  result = this.getFormGroupBatchData(item, index, res);
+                } else {
+                  result = {
+                    basicMap: {
+                      tableName: item.tableName,
                     },
-                  ],
-                };
+                    addListMap: [
+                      {
+                        ...item.data,
+                      },
+                    ],
+                  };
+                  let { formItem, relateFormItem } = item;
+                  if (index == 0) {
+                    //主表单
+                    // 添加新增数据的关联条件
 
-                // 添加新增数据的关联条件
-                let { formItem, relateFormItem } = item;
-                // console.log(formItem);
-                result.addListMap[0][formItem.split(".")[1]] = uuid;
+                    // console.log(formItem);
+                    let mainFormKey = res[0].data[formItem.split(".")[1]];
+                    if (mainFormKey) {
+                      result.addListMap[0][formItem.split(".")[1]] =
+                        mainFormKey;
+                    } else {
+                      res[0].data[formItem.split(".")[1]] = uuid;
+                      result.addListMap[0][formItem.split(".")[1]] = uuid;
+                    }
+                  } else {
+                    //子表单
+                    result.addListMap[0][formItem.split(".")[1]] =
+                      res[0].data[relateFormItem.split(".")[1]];
+                  }
+                }
+                if (item.insertMap?.length) {
+                  this.addInsertData(item.insertMap, result, res);
+                }
                 return result;
               });
             } else if (this.currentBtnData.btnType == "INITIATED") {
@@ -1468,6 +1664,7 @@ export default {
             }
 
             data.basicMap.BpmRunNodeFormDateVo = payLoad;
+            // return;
             try {
               let res = await btnCommonApi(data);
               if (res.code == 200) {
@@ -1476,10 +1673,11 @@ export default {
                 this.defaultValue = {};
                 this.open = false;
               } else {
+                console.log(res);
                 this.$message.error("网络异常,请稍后再试");
               }
             } catch (error) {
-              // console.log(error);
+              console.log(error);
               this.$message.error("网络异常,请稍后再试");
             }
           },
@@ -1526,10 +1724,11 @@ export default {
           if (res.code == 200) {
             this.$message.success("操作成功");
           } else {
+            console.log(res);
             this.$message.error("网络异常,请稍后再试");
           }
         } catch (error) {
-          // console.log(error);
+          console.log(error);
           this.$message.error("网络异常,请稍后再试");
         }
         this.getList();
@@ -1537,6 +1736,15 @@ export default {
         this.open = false;
       }
     },
+
+    // 去除多余字段
+    removeAutoField(result) {
+      result.addListMap.forEach((item) => {
+        this.theAutoField.forEach((field) => {
+          delete item[field];
+        });
+      });
+    },
     // 使用提交数据类型的按钮获取数据
     tempSubBtn(getData) {
       getData()
@@ -1776,10 +1984,11 @@ export default {
             if (res.code == 200) {
               this.$message.success(res.msg);
             } else {
+              console.error(res.msg);
               this.$message.error("网络异常,请稍后再试");
             }
           } catch (error) {
-            // console.log(error);
+            console.error(error);
             this.$message.error("网络异常,请稍后再试");
           }
         })