From e1ee1084bb6db4f8a87894109be1b7a9d216cfec Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期三, 16 八月 2023 18:29:35 +0800
Subject: [PATCH] 111

---
 server/src/main/java/doumeemes/dao/business/dto/CreateUnqualifiedDTO.java               |   23 +
 server/src/main/java/doumeemes/api/business/UnqualifiedRecordController.java            |   71 +++++
 server/src/main/java/doumeemes/service/ext/CategoryExtService.java                      |    2 
 server/src/main/java/doumeemes/config/shiro/ShiroRealm.java                             |    6 
 server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java                |   48 +++
 server/src/main/java/doumeemes/service/business/UnqualifiedRecordService.java           |   97 +++++++
 server/src/main/resources/mappers/PlansExtMapper.xml                                    |    1 
 server/src/main/java/doumeemes/dao/business/model/UnqualifiedRecord.java                |   79 ++++++
 server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java |  262 ++++++++++++++-----
 server/src/main/resources/mappers/UserDeviceExtMapper.xml                               |    2 
 server/src/main/java/doumeemes/dao/business/UnqualifiedRecordMapper.java                |   12 
 server/src/main/java/doumeemes/service/ext/impl/CategoryExtServiceImpl.java             |    6 
 server/src/main/java/doumeemes/service/business/impl/UnqualifiedRecordServiceImpl.java  |  124 +++++++++
 server/src/main/java/doumeemes/dao/business/dto/AutoWorkReportDTO.java                  |    3 
 server/src/main/java/doumeemes/dao/ext/vo/PlansExtListVO.java                           |    7 
 server/src/main/java/doumeemes/api/ext/CategoryExtController.java                       |    9 
 16 files changed, 657 insertions(+), 95 deletions(-)

diff --git a/server/src/main/java/doumeemes/api/business/UnqualifiedRecordController.java b/server/src/main/java/doumeemes/api/business/UnqualifiedRecordController.java
new file mode 100644
index 0000000..5fd198e
--- /dev/null
+++ b/server/src/main/java/doumeemes/api/business/UnqualifiedRecordController.java
@@ -0,0 +1,71 @@
+package doumeemes.api.business;
+
+import doumeemes.api.BaseController;
+import doumeemes.core.annotation.excel.ExcelExporter;
+import doumeemes.core.annotation.pr.PreventRepeat;
+import doumeemes.core.model.ApiResponse;
+import doumeemes.core.model.PageWrap;
+import doumeemes.core.model.PageData;
+import doumeemes.dao.business.model.UnqualifiedRecord;
+import doumeemes.service.business.UnqualifiedRecordService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2023/08/16 14:15
+ */
+@Api(tags = "宸ュ崟绫�-鎶ュ伐涓嶈壇璁板綍绫诲瀷琛�")
+@RestController
+@RequestMapping("/business/unqualifiedRecord")
+public class UnqualifiedRecordController extends BaseController {
+
+    @Autowired
+    private UnqualifiedRecordService unqualifiedRecordService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:unqualifiedrecord:create")
+    public ApiResponse create(@RequestBody UnqualifiedRecord unqualifiedRecord) {
+        return ApiResponse.success(unqualifiedRecordService.create(unqualifiedRecord));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:unqualifiedrecord:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        unqualifiedRecordService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:unqualifiedrecord:update")
+    public ApiResponse updateById(@RequestBody UnqualifiedRecord unqualifiedRecord) {
+        unqualifiedRecordService.updateById(unqualifiedRecord);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:unqualifiedrecord:query")
+    public ApiResponse<PageData<UnqualifiedRecord>> findPage (@RequestBody PageWrap<UnqualifiedRecord> pageWrap) {
+        return ApiResponse.success(unqualifiedRecordService.findPage(pageWrap));
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:unqualifiedrecord:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(unqualifiedRecordService.findById(id));
+    }
+}
diff --git a/server/src/main/java/doumeemes/api/ext/CategoryExtController.java b/server/src/main/java/doumeemes/api/ext/CategoryExtController.java
index 48cbff8..ebb69c3 100644
--- a/server/src/main/java/doumeemes/api/ext/CategoryExtController.java
+++ b/server/src/main/java/doumeemes/api/ext/CategoryExtController.java
@@ -154,6 +154,15 @@
         return ApiResponse.success(categoryExtService.findPage(pageWrap));
     }
 
+    @ApiOperation("鍒楄〃鏌ヨ")
+    @PostMapping("/list")
+    @RequiresPermissions("ext:categoryext:query")
+    public ApiResponse<List<CategoryExtListVO>> list(@RequestBody QueryCategoryExtDTO queryCategoryExtDTO) {
+        queryCategoryExtDTO.setDeleted(Constants.ZERO);
+        queryCategoryExtDTO.setRootDepartId(getLoginUser().getRootDepartment().getId());
+        return ApiResponse.success(categoryExtService.findList(queryCategoryExtDTO));
+    }
+
     @ApiOperation("瀵煎嚭Excel")
     @PostMapping("/exportExcel")
     @RequiresPermissions("ext:categoryext:exportExcel")
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroRealm.java b/server/src/main/java/doumeemes/config/shiro/ShiroRealm.java
index 3db5c23..e130db9 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroRealm.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroRealm.java
@@ -146,9 +146,9 @@
             if(cu == null){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氱敤鎴蜂笉瀛樺湪锛�");
             }
-//            if(Constants.equalsInteger(cu.getStatus(),Constants.ONE)){
-//                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氱敤鎴峰凡绂佺敤锛�");
-//            }
+            if(Constants.equalsInteger(cu.getStatus(),Constants.ONE)){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ヤ紒涓氱敤鎴峰凡绂佺敤锛�");
+            }
             rootDepart = departmentExtService.getModelById(c.getCompanyId(),cu.getRootDepartId());
             comDepart = departmentExtService.getModelById(c.getCompanyId(),cu.getComDepartId());
             depart = departmentExtService.getModelById(c.getCompanyId(),cu.getDepartmentId());
diff --git a/server/src/main/java/doumeemes/dao/business/UnqualifiedRecordMapper.java b/server/src/main/java/doumeemes/dao/business/UnqualifiedRecordMapper.java
new file mode 100644
index 0000000..828d535
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/business/UnqualifiedRecordMapper.java
@@ -0,0 +1,12 @@
+package doumeemes.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import doumeemes.dao.business.model.UnqualifiedRecord;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2023/08/16 14:15
+ */
+public interface UnqualifiedRecordMapper extends BaseMapper<UnqualifiedRecord> {
+
+}
diff --git a/server/src/main/java/doumeemes/dao/business/dto/AutoWorkReportDTO.java b/server/src/main/java/doumeemes/dao/business/dto/AutoWorkReportDTO.java
index f77d297..4026b98 100644
--- a/server/src/main/java/doumeemes/dao/business/dto/AutoWorkReportDTO.java
+++ b/server/src/main/java/doumeemes/dao/business/dto/AutoWorkReportDTO.java
@@ -33,4 +33,7 @@
     @ApiModelProperty(value = "浜у嚭璁板綍")
     private CreateWorkorderRecordDTO createWorkorderRecordDTO;
 
+    @ApiModelProperty(value = "涓嶈壇鍝佸垎绫昏褰�")
+    private List<CreateUnqualifiedDTO> createUnqualifiedDTOList ;
+
 }
diff --git a/server/src/main/java/doumeemes/dao/business/dto/CreateUnqualifiedDTO.java b/server/src/main/java/doumeemes/dao/business/dto/CreateUnqualifiedDTO.java
new file mode 100644
index 0000000..079b616
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/business/dto/CreateUnqualifiedDTO.java
@@ -0,0 +1,23 @@
+package doumeemes.dao.business.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2022/05/12 10:18
+ */
+@Data
+public class CreateUnqualifiedDTO {
+
+    @ApiModelProperty(value = "涓嶈壇绫诲埆涓婚敭"  )
+    private Integer categoryId;
+
+    @ApiModelProperty(value = "妫�楠屼笉鍚堟牸鏁伴噺")
+    private BigDecimal unQualifiedNum;
+
+
+
+}
diff --git a/server/src/main/java/doumeemes/dao/business/model/UnqualifiedRecord.java b/server/src/main/java/doumeemes/dao/business/model/UnqualifiedRecord.java
new file mode 100644
index 0000000..485712f
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/business/model/UnqualifiedRecord.java
@@ -0,0 +1,79 @@
+package doumeemes.dao.business.model;
+
+import doumeemes.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+import java.math.BigDecimal;
+
+/**
+ * 宸ュ崟绫�-鎶ュ伐涓嶈壇璁板綍绫诲瀷琛�
+ * @author 姹熻箘韫�
+ * @since 2023/08/16 14:15
+ */
+@Data
+@ApiModel("宸ュ崟绫�-鎶ュ伐涓嶈壇璁板綍绫诲瀷琛�")
+@TableName("`unqualified_record`")
+public class UnqualifiedRecord {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�", example = "1")
+    @ExcelColumn(name="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�")
+    private Integer deleted;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer createUser;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createTime;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer updateUser;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updateTime;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "涓荤粍缁囩紪鐮侊紙鍏宠仈department琛ㄦ牴缁勭粐锛�", example = "1")
+    @ExcelColumn(name="涓荤粍缁囩紪鐮侊紙鍏宠仈department琛ㄦ牴缁勭粐锛�")
+    private Integer rootDepartId;
+
+    @ApiModelProperty(value = "鍏徃绾х粍缁囩紪鐮侊紙鍏宠仈department琛級", example = "1")
+    @ExcelColumn(name="鍏徃绾х粍缁囩紪鐮侊紙鍏宠仈department琛級")
+    private Integer departId;
+
+    @ApiModelProperty(value = "宸ュ崟涓婚敭", example = "1")
+    @ExcelColumn(name="宸ュ崟涓婚敭")
+    private Integer workorderId;
+
+    @ApiModelProperty(value = "浜у嚭璁板綍涓婚敭", example = "1")
+    @ExcelColumn(name="浜у嚭璁板綍涓婚敭")
+    private Integer recordId;
+
+    @ApiModelProperty(value = "绫诲埆涓婚敭", example = "1")
+    @ExcelColumn(name="绫诲埆涓婚敭")
+    private Integer categoryId;
+
+    @ApiModelProperty(value = "妫�楠屼笉鍚堟牸鏁伴噺", example = "1")
+    @ExcelColumn(name="妫�楠屼笉鍚堟牸鏁伴噺")
+    private BigDecimal unqualifiedNum;
+
+}
diff --git a/server/src/main/java/doumeemes/dao/ext/vo/PlansExtListVO.java b/server/src/main/java/doumeemes/dao/ext/vo/PlansExtListVO.java
index 342aac0..697f643 100644
--- a/server/src/main/java/doumeemes/dao/ext/vo/PlansExtListVO.java
+++ b/server/src/main/java/doumeemes/dao/ext/vo/PlansExtListVO.java
@@ -153,8 +153,7 @@
     @ExcelColumn(name="璁″垝鏃ユ湡",index = 4,width =15)
     @JsonFormat(pattern = "yyyy-MM-dd")
     private  Date workPlanPlanDate;
-    @ApiModelProperty(value = "鎴愬搧璁″垝缁撴潫鏃ユ湡")
-    @ExcelColumn(name="璁″垝鏃ユ湡",index = 3,width =15)
+    @ApiModelProperty(value = "鎴愬搧璁″垝寮�濮嬫棩鏈�")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private  Date workPlanStartDate;
 
@@ -182,10 +181,6 @@
 
     @ExcelColumn(name="閿�鍞鍗�")
     private String salesOrder;
-
-//    @ApiModelProperty(value = "鎴愬搧璁″垝寮�濮嬫椂闂�")
-//    @JsonFormat(pattern = "yyyy-MM-dd")
-//    private Date workPlanStartDate;
 
     @ApiModelProperty(value = "鎴愬搧璁″垝缁撴潫鏃堕棿")
     @JsonFormat(pattern = "yyyy-MM-dd")
diff --git a/server/src/main/java/doumeemes/service/business/UnqualifiedRecordService.java b/server/src/main/java/doumeemes/service/business/UnqualifiedRecordService.java
new file mode 100644
index 0000000..0024bb7
--- /dev/null
+++ b/server/src/main/java/doumeemes/service/business/UnqualifiedRecordService.java
@@ -0,0 +1,97 @@
+package doumeemes.service.business;
+
+import doumeemes.core.model.PageData;
+import doumeemes.core.model.PageWrap;
+import doumeemes.dao.business.model.UnqualifiedRecord;
+import java.util.List;
+
+/**
+ * 宸ュ崟绫�-鎶ュ伐涓嶈壇璁板綍绫诲瀷琛⊿ervice瀹氫箟
+ * @author 姹熻箘韫�
+ * @since 2023/08/16 14:15
+ */
+public interface UnqualifiedRecordService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param unqualifiedRecord 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(UnqualifiedRecord unqualifiedRecord);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param unqualifiedRecord 瀹炰綋瀵硅薄
+     */
+    void delete(UnqualifiedRecord unqualifiedRecord);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param unqualifiedRecord 瀹炰綋瀵硅薄
+     */
+    void updateById(UnqualifiedRecord unqualifiedRecord);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param unqualifiedRecords 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<UnqualifiedRecord> unqualifiedRecords);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return UnqualifiedRecord
+     */
+    UnqualifiedRecord findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param unqualifiedRecord 瀹炰綋瀵硅薄
+     * @return UnqualifiedRecord
+     */
+    UnqualifiedRecord findOne(UnqualifiedRecord unqualifiedRecord);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param unqualifiedRecord 瀹炰綋瀵硅薄
+     * @return List<UnqualifiedRecord>
+     */
+    List<UnqualifiedRecord> findList(UnqualifiedRecord unqualifiedRecord);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<UnqualifiedRecord>
+     */
+    PageData<UnqualifiedRecord> findPage(PageWrap<UnqualifiedRecord> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param unqualifiedRecord 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(UnqualifiedRecord unqualifiedRecord);
+}
diff --git a/server/src/main/java/doumeemes/service/business/impl/UnqualifiedRecordServiceImpl.java b/server/src/main/java/doumeemes/service/business/impl/UnqualifiedRecordServiceImpl.java
new file mode 100644
index 0000000..d0fa52f
--- /dev/null
+++ b/server/src/main/java/doumeemes/service/business/impl/UnqualifiedRecordServiceImpl.java
@@ -0,0 +1,124 @@
+package doumeemes.service.business.impl;
+
+import doumeemes.core.model.PageData;
+import doumeemes.core.model.PageWrap;
+import doumeemes.core.utils.Utils;
+import doumeemes.dao.business.UnqualifiedRecordMapper;
+import doumeemes.dao.business.model.UnqualifiedRecord;
+import doumeemes.service.business.UnqualifiedRecordService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 宸ュ崟绫�-鎶ュ伐涓嶈壇璁板綍绫诲瀷琛⊿ervice瀹炵幇
+ * @author 姹熻箘韫�
+ * @since 2023/08/16 14:15
+ */
+@Service
+public class UnqualifiedRecordServiceImpl implements UnqualifiedRecordService {
+
+    @Autowired
+    private UnqualifiedRecordMapper unqualifiedRecordMapper;
+
+    @Override
+    public Integer create(UnqualifiedRecord unqualifiedRecord) {
+        unqualifiedRecordMapper.insert(unqualifiedRecord);
+        return unqualifiedRecord.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        unqualifiedRecordMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(UnqualifiedRecord unqualifiedRecord) {
+        UpdateWrapper<UnqualifiedRecord> deleteWrapper = new UpdateWrapper<>(unqualifiedRecord);
+        unqualifiedRecordMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        unqualifiedRecordMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(UnqualifiedRecord unqualifiedRecord) {
+        unqualifiedRecordMapper.updateById(unqualifiedRecord);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<UnqualifiedRecord> unqualifiedRecords) {
+        if (CollectionUtils.isEmpty(unqualifiedRecords)) {
+            return;
+        }
+        for (UnqualifiedRecord unqualifiedRecord: unqualifiedRecords) {
+            this.updateById(unqualifiedRecord);
+        }
+    }
+
+    @Override
+    public UnqualifiedRecord findById(Integer id) {
+        return unqualifiedRecordMapper.selectById(id);
+    }
+
+    @Override
+    public UnqualifiedRecord findOne(UnqualifiedRecord unqualifiedRecord) {
+        QueryWrapper<UnqualifiedRecord> wrapper = new QueryWrapper<>(unqualifiedRecord);
+        return unqualifiedRecordMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<UnqualifiedRecord> findList(UnqualifiedRecord unqualifiedRecord) {
+        QueryWrapper<UnqualifiedRecord> wrapper = new QueryWrapper<>(unqualifiedRecord);
+        return unqualifiedRecordMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<UnqualifiedRecord> findPage(PageWrap<UnqualifiedRecord> pageWrap) {
+        IPage<UnqualifiedRecord> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<UnqualifiedRecord> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        queryWrapper.lambda()
+                .eq(pageWrap.getModel().getId() != null, UnqualifiedRecord::getId, pageWrap.getModel().getId())
+                .eq(pageWrap.getModel().getDeleted() != null, UnqualifiedRecord::getDeleted, pageWrap.getModel().getDeleted())
+                .eq(pageWrap.getModel().getCreateUser() != null, UnqualifiedRecord::getCreateUser, pageWrap.getModel().getCreateUser())
+                .ge(pageWrap.getModel().getCreateTime() != null, UnqualifiedRecord::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime()))
+                .le(pageWrap.getModel().getCreateTime() != null, UnqualifiedRecord::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime()))
+                .eq(pageWrap.getModel().getUpdateUser() != null, UnqualifiedRecord::getUpdateUser, pageWrap.getModel().getUpdateUser())
+                .ge(pageWrap.getModel().getUpdateTime() != null, UnqualifiedRecord::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime()))
+                .le(pageWrap.getModel().getUpdateTime() != null, UnqualifiedRecord::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime()))
+                .eq(pageWrap.getModel().getRemark() != null, UnqualifiedRecord::getRemark, pageWrap.getModel().getRemark())
+                .eq(pageWrap.getModel().getRootDepartId() != null, UnqualifiedRecord::getRootDepartId, pageWrap.getModel().getRootDepartId())
+                .eq(pageWrap.getModel().getDepartId() != null, UnqualifiedRecord::getDepartId, pageWrap.getModel().getDepartId())
+                .eq(pageWrap.getModel().getWorkorderId() != null, UnqualifiedRecord::getWorkorderId, pageWrap.getModel().getWorkorderId())
+                .eq(pageWrap.getModel().getRecordId() != null, UnqualifiedRecord::getRecordId, pageWrap.getModel().getRecordId())
+                .eq(pageWrap.getModel().getCategoryId() != null, UnqualifiedRecord::getCategoryId, pageWrap.getModel().getCategoryId())
+                .eq(pageWrap.getModel().getUnqualifiedNum() != null, UnqualifiedRecord::getUnqualifiedNum, pageWrap.getModel().getUnqualifiedNum())
+        ;
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(unqualifiedRecordMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(UnqualifiedRecord unqualifiedRecord) {
+        QueryWrapper<UnqualifiedRecord> wrapper = new QueryWrapper<>(unqualifiedRecord);
+        return unqualifiedRecordMapper.selectCount(wrapper);
+    }
+}
diff --git a/server/src/main/java/doumeemes/service/ext/CategoryExtService.java b/server/src/main/java/doumeemes/service/ext/CategoryExtService.java
index ec98c94..d5f239d 100644
--- a/server/src/main/java/doumeemes/service/ext/CategoryExtService.java
+++ b/server/src/main/java/doumeemes/service/ext/CategoryExtService.java
@@ -33,4 +33,6 @@
     CategoryExtListVO getByCategoryId(Integer comid, Integer id);
     CategoryExtListVO getByCategoryId(Integer comid, Integer id,List<CategoryExtListVO> allList);
     void loadAll();
+
+    List<CategoryExtListVO> findList(QueryCategoryExtDTO queryCategoryExtDTO);
 }
diff --git a/server/src/main/java/doumeemes/service/ext/impl/CategoryExtServiceImpl.java b/server/src/main/java/doumeemes/service/ext/impl/CategoryExtServiceImpl.java
index b906671..d8ac8f3 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/CategoryExtServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/CategoryExtServiceImpl.java
@@ -49,6 +49,12 @@
     }
 
     @Override
+    public List<CategoryExtListVO> findList(QueryCategoryExtDTO queryCategoryExtDTO) {
+        List<CategoryExtListVO> result = categoryExtMapper.selectList(queryCategoryExtDTO);
+        return result;
+    }
+
+    @Override
     public List<CategoryExtListVO> getListByType(String type,Integer rootDepartId,String cateType,String id) {
         QueryCategoryExtDTO queryCategoryExtDTO=new QueryCategoryExtDTO();
         queryCategoryExtDTO.setDeleted(Constants.ZERO);
diff --git a/server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java b/server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java
index 4bb8e2c..d283106 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java
@@ -16,6 +16,7 @@
 import doumeemes.core.utils.excel.EasyExcelUtil;
 import doumeemes.core.utils.redis.RedisUtil;
 import doumeemes.dao.business.PlansMapper;
+import doumeemes.dao.business.UnqualifiedRecordMapper;
 import doumeemes.dao.business.WorkorderMapper;
 import doumeemes.dao.business.dto.*;
 import doumeemes.dao.business.model.*;
@@ -92,6 +93,8 @@
     private WStockExtService  wStockExtService;
     @Autowired
     private WorkorderRecordStandardService workorderRecordStandardService;
+    @Autowired
+    private UnqualifiedRecordMapper unqualifiedRecordMapper;
 
     @Override
     public  PlansExtListVO findById(Integer id){
@@ -702,9 +705,9 @@
         if(ulist == null){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝鐢熶骇浜哄憳淇℃伅涓嶆纭紝璇峰埛鏂伴〉闈㈤噸璇曪紒");
         }
-        if(ulist.size() < param.getProUserList().size()){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝瀛樺湪鐢熶骇浜哄憳淇℃伅涓嶆纭紝璇峰埛鏂伴〉闈㈤噸璇曪紒");
-        }
+//        if(ulist.size() < param.getProUserList().size()){
+//            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝瀛樺湪鐢熶骇浜哄憳淇℃伅涓嶆纭紝璇峰埛鏂伴〉闈㈤噸璇曪紒");
+//        }
         List<WorkorderUser> userList = new ArrayList<>();
         for(UserDeviceExtListVO uModel : ulist){
             WorkorderUser u = new WorkorderUser();
@@ -1587,7 +1590,7 @@
         if(Objects.isNull(plans)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌宸ュ簭璁″垝鏁版嵁");
         }
-        if(!(plans.getStatus().equals(Constants.PLAN_STATUS.create)||plans.getStatus().equals(Constants.PLAN_STATUS.distribute))){
+        if(!(plans.getStatus().equals(Constants.PLAN_STATUS.create)||plans.getStatus().equals(Constants.PLAN_STATUS.publish)||plans.getStatus().equals(Constants.PLAN_STATUS.distribute))){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"宸ュ簭璁″垝宸叉祦杞紝鏃犳硶鎿嶄綔");
         }
         if(plans.getPaused().equals(Constants.ONE)){
@@ -1598,7 +1601,7 @@
         }
         //鏌ヨ宸ュ簭璁″垝宸插垎閰嶆暟閲�
         List<Workorder> workorderList = workorderMapper.selectList(new QueryWrapper<Workorder>().eq("PLAN_ID",plans.getId())
-                .notIn("STATUS",7,8));
+                .eq("STATUS",Constants.WORKORDER_STATUS.baogong));
         //鏈浜у嚭鏁伴噺
         BigDecimal num = autoWorkReportDTO.getCreateWorkorderRecordDTO().getQualifiedNum().add(autoWorkReportDTO.getCreateWorkorderRecordDTO().getUnQualifiedNum());
         if(num.compareTo(BigDecimal.ZERO)<=Constants.ZERO){
@@ -1615,7 +1618,7 @@
         param.setPlanDate(new Date());
         param.setProGroupId(autoWorkReportDTO.getProGroupId());
         param.setProUserList(autoWorkReportDTO.getProUserList());
-        param.setPlanNum(plans.getNum());
+        param.setPlanNum(num.intValue());
         //鐢熸垚宸ュ崟淇℃伅
         Workorder workorder = this.distributeDone(user,param,plans.getNum());
         //宸ュ崟鎶曟枡璁板綍
@@ -1627,7 +1630,7 @@
         }
         //宸ュ崟浜у嚭璁板綍
         autoWorkReportDTO.getCreateWorkorderRecordDTO().setWorkorderId(workorder.getId());
-        workorderRecordStandardService.createWorkorderRecord(autoWorkReportDTO.getCreateWorkorderRecordDTO(),user);
+        WorkorderRecord workorderRecord = workorderRecordStandardService.createWorkorderRecord(autoWorkReportDTO.getCreateWorkorderRecordDTO(),user);
         //宸ュ崟鎶ュ伐
         workorderRecordStandardService.comfirmDone(workorder);
         //鏇存柊宸ュ崟鐘舵��
@@ -1639,8 +1642,35 @@
             }
         }
         plansExtMapper.updateById(plans);
-
-
+        //瀛樺偍鎶ュ伐涓嶈壇椤规暟鎹�
+        if(autoWorkReportDTO.getCreateWorkorderRecordDTO().getUnQualifiedNum().compareTo(BigDecimal.ZERO)<=Constants.ZERO){
+            if(!Objects.isNull(autoWorkReportDTO.getCreateUnqualifiedDTOList())&&autoWorkReportDTO.getCreateUnqualifiedDTOList().size()>Constants.ZERO){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"涓嶈壇椤归敊璇細璇锋鏌ヤ笉鑹」鏁版嵁");
+            }
+        }else{
+            List<CreateUnqualifiedDTO> createUnqualifiedDTOList = autoWorkReportDTO.getCreateUnqualifiedDTOList();
+            BigDecimal unqualified = createUnqualifiedDTOList.stream().map(s -> s.getUnQualifiedNum()).reduce(BigDecimal.ZERO, BigDecimal::add);
+            if(unqualified.compareTo(autoWorkReportDTO.getCreateWorkorderRecordDTO().getUnQualifiedNum())!=Constants.ZERO){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"涓嶈壇椤归敊璇細璇锋鏌ヤ笉鑹」鏁版嵁");
+            }
+            for (CreateUnqualifiedDTO createUnqualifiedDTO:createUnqualifiedDTOList) {
+                if(createUnqualifiedDTO.getUnQualifiedNum().compareTo(BigDecimal.ZERO)==Constants.ZERO
+                ||Objects.isNull(createUnqualifiedDTO.getCategoryId())){
+                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"涓嶈壇椤归敊璇細璇锋鏌ヤ笉鑹」鏁版嵁");
+                }
+                UnqualifiedRecord unqualifiedRecord = new UnqualifiedRecord();
+                unqualifiedRecord.setDeleted(Constants.ZERO);
+                unqualifiedRecord.setCreateUser(user.getId());
+                unqualifiedRecord.setCreateTime(new Date());
+                unqualifiedRecord.setRootDepartId(plans.getRootDepartId());
+                unqualifiedRecord.setDepartId(plans.getDepartId());
+                unqualifiedRecord.setWorkorderId(workorder.getId());
+                unqualifiedRecord.setRecordId(workorderRecord.getId());
+                unqualifiedRecord.setCategoryId(createUnqualifiedDTO.getCategoryId());
+                unqualifiedRecord.setUnqualifiedNum(createUnqualifiedDTO.getUnQualifiedNum());
+                unqualifiedRecordMapper.insert(unqualifiedRecord);
+            }
+        }
     }
 
 
diff --git a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java
index 17b1c9d..596283d 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java
@@ -794,6 +794,126 @@
 
 
 
+//    private void dealAppliancePro(Workorder mp
+//            , LoginUserInfo user
+//            , List<WorkorderRecordExtListVO> allRecordList
+//            , List<Appliances> updateApplianceList
+//            , List<Appliances> updateApplianceProList
+//            ,   List<WOutboundDetail> outboundDetailList
+//            ,   List<WStock> stockList) {
+//        WOutbound outbound = new WOutbound();
+//        outbound.setDeleted(Constants.ZERO);
+//        outbound.setCreateTime(DateUtil.getCurrentDate());
+//        outbound.setDealDate(outbound.getCreateTime());
+//        outbound.setValidDate(outbound.getCreateTime());
+//        outbound.setCreateUser(user.getId());
+//        outbound.setRootDepartId(mp.getRootDepartId());
+//        outbound.setDepartId(mp.getDepartId());
+//        outbound.setStatus(Constants.WOUTBOUND_STATUS.dealed);
+//        outbound.setType(Constants.WOUTBOUND_TYPE.in);
+//        //2022骞�7鏈�1鏃�14:42:41 鍔犲叆鍗曟嵁绫诲埆
+//        outbound.setBillType(Constants.WOUTBOUND_BILLTYPE.workerOrderIn);
+//        outbound.setCode(wOutboundService.getNextInCode(user.getCompany().getId()));
+//        outbound.setOrigin(Constants.ONE);
+//        outbound.setOriginType(Constants.WOUTBOUND_ORIGIN_TYPE.produce);
+//        outbound.setOriginCode(mp.getCode());
+//        outbound.setOriginId(mp.getId());
+//        outbound.setPlanDate(DateUtil.getCurrentDate());
+//        outbound.setProcedureId(mp.getProcedureId());
+//        outbound.setUserId(user.getId());
+//        outbound.setWarehouseId(mp.getFinishWarehouseId());
+//        wOutboundService.create(outbound);
+//
+//        List<WOutboundDetail> detailList = new ArrayList<>();
+//        List<WOutboundRecord> recordList = new ArrayList<>();
+//        for(WorkorderRecordExtListVO tModel :allRecordList){
+//            if(Constants.equalsInteger(tModel.getType(),Constants.WORKORDER_RECORD_TYPE.produce)){
+//                if(tModel.getNum().compareTo(BigDecimal.ZERO)<=Constants.ZERO){
+//                    continue;
+//                }
+//                //濡傛灉鏄骇鍑�
+//                mp.setHasProduceNum(Constants.formatBigdecimal(tModel.getNum()).intValue()+Constants.formatIntegerNum(mp.getHasProduceNum()));
+//
+//                //鐗╂枡+鎵规+宸ュ簭+璐ㄩ噺灞炴�у幓閲�
+//                WOutboundDetail detail =getWoutbondDetailByList(tModel,detailList);
+//                if(detail!=null){
+//                    detail.setNum(Constants.formatBigdecimal(detail.getNum()).add(tModel.getNum()));
+//                }else{
+//                    detail = new WOutboundDetail();
+//                    detail.setDeleted(Constants.ZERO);
+//                    detail.setCreateTime(DateUtil.getCurrentDate());
+//                    detail.setCreateUser(user.getId());
+//                    detail.setOutboundId(outbound.getId());
+//                    detail.setRootDepartId(outbound.getRootDepartId());
+//                    detail.setWarehouseId(outbound.getWarehouseId());
+//                    detail.setLocationId(mp.getFinishWarehouseLocationId());
+//                    detail.setNum(tModel.getNum());
+//                    detail.setStatus(Constants.ONE);
+//                    detail.setDoneNum(tModel.getNum());
+//                    detail.setDoneDate(new Date());
+//                    detail.setUnitId(tModel.getUnitId());
+//                    detail.setBatch(tModel.getMaterialBatch());
+//                    detail.setProcedureId(tModel.getProcedureId());
+//                    detail.setMaterialId(tModel.getMaterialId());
+//                    detail.setQualityType(tModel.getDoneType());
+//                    detail.setWOutboundRecordInList(new ArrayList<>());
+//                    detailList.add(detail);
+//                }
+//
+//                WOutboundRecord record = new WOutboundRecord();
+//                record.setDeleted(Constants.ZERO);
+//                record.setCreateTime(DateUtil.getCurrentDate());
+//                record.setCreateUser(user.getId());
+//                record.setAppliancesId(tModel.getAppliancesId());
+//                record.setBatch(detail.getBatch());
+//                record.setRootDepartId(mp.getRootDepartId());
+//                record.setNum(tModel.getNum());
+//                record.setOutboundId(detail.getOutboundId());
+//                record.setUnitId(detail.getUnitId());
+//                record.setWarehouseId(detail.getWarehouseId());
+//                record.setMaterialId(detail.getMaterialId());
+//                record.setProcedureId(detail.getProcedureId());
+//                record.setLocationId(detail.getLocationId());
+//                record.setQualityType(detail.getQualityType());
+//                detail.getWOutboundRecordInList().add(record);
+//
+//                WStock stock = getFromStockList(mp.getFinishWarehouseLocationId(),detail.getWarehouseId(),detail.getMaterialId(),detail.getBatch(),
+//                        tModel.getProcedureId(),tModel.getDoneType(),stockList);
+//                if(stock!=null){
+//                    //濡傛灉搴撳瓨瀵硅薄宸插瓨鍦紝鐩存帴澧炲姞瀵瑰簲鐨勫簱瀛橀噺
+//                    stock.setNum(Constants.formatBigdecimal(stock.getNum()).add(Constants.formatBigdecimal(tModel.getNum())));
+//                }else{
+//                    stock = new WStock();
+//                    stock.setMaterialId(detail.getMaterialId());
+//                    stock.setBatch(detail.getBatch());
+//                    stock.setWarehouseId(outbound.getWarehouseId());
+//                    stock.setLocationId(mp.getFinishWarehouseLocationId());
+//                    stock.setUnitId(detail.getUnitId());
+//                    stock.setNum(Constants.formatBigdecimal(tModel.getNum()));
+//                    stock.setProcedureId(tModel.getProcedureId());
+//                    stock.setQualityType(tModel.getDoneType());
+//                    //寰呮洿鏂板簱瀛樹俊鎭�
+//                    stockList.add(stock);
+//                }
+//            }
+//        }
+//        for(WOutboundDetail detail : detailList){
+//            wOutboundDetailExtMapper.insert(detail);
+//            //璁板綍搴撳瓨鍙樺姩璁板綍
+//            wStockRecordExtService.saveRecord(Constants.ONE,detail.getId(),user);
+//            if(detail.getWOutboundRecordInList()!=null){
+//                for(WOutboundRecord r : detail.getWOutboundRecordInList()){
+//                    r.setDetailId(detail.getId());
+//                    wOutboundRecordExtMapper.insert(r);
+//                }
+//            }
+//        }
+//        if(Constants.formatIntegerNum(mp.getHasProduceNum()) >Constants.formatIntegerNum(mp.getPlanNum())){
+//            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曠殑浜у嚭鏁伴噺涓嶈兘澶т簬宸ュ崟璁″垝鏁伴噺锛�");
+//        }
+//    }
+
+
     private void dealAppliancePro(Workorder mp
             , LoginUserInfo user
             , List<WorkorderRecordExtListVO> allRecordList
@@ -833,78 +953,10 @@
                 }
                 //濡傛灉鏄骇鍑�
                 mp.setHasProduceNum(Constants.formatBigdecimal(tModel.getNum()).intValue()+Constants.formatIntegerNum(mp.getHasProduceNum()));
-//                if(tModel.getDoneType() == null){
-//                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝宸ヨ鍣ㄥ叿銆�"+tModel.getAmodel().getCode()+"銆戜骇鍑鸿川閲忓睘鎬т负绌猴紝鏃犳硶鎶ュ伐锛�");
-//                }
-//                if(!Constants.equalsInteger(tModel.getDoneType(),Constants.ZERO)){
-//                    //濡傛灉涓嶈壇锛岀疮璁″伐鍗曠殑涓嶈壇浜у嚭
-//                    mp.setUnqualifiedNum(Constants.formatIntegerNum(mp.getUnqualifiedNum())+(Constants.formatBigdecimal(tModel.getNum()).intValue()));
-//                }else{
-//                    //濡傛灉鏄悎鏍硷紝绱宸ュ崟鐨勫悎鏍兼暟閲�
-//                    mp.setQualifiedNum(Constants.formatIntegerNum(mp.getQualifiedNum())+(Constants.formatBigdecimal(tModel.getNum()).intValue()));
-//                }
-
-                //鐗╂枡+鎵规+宸ュ簭+璐ㄩ噺灞炴�у幓閲�
-                WOutboundDetail detail =getWoutbondDetailByList(tModel,detailList);
-                if(detail!=null){
-                    detail.setNum(Constants.formatBigdecimal(detail.getNum()).add(tModel.getNum()));
-                }else{
-                    detail = new WOutboundDetail();
-                    detail.setDeleted(Constants.ZERO);
-                    detail.setCreateTime(DateUtil.getCurrentDate());
-                    detail.setCreateUser(user.getId());
-                    detail.setOutboundId(outbound.getId());
-                    detail.setRootDepartId(outbound.getRootDepartId());
-                    detail.setWarehouseId(outbound.getWarehouseId());
-                    detail.setLocationId(mp.getFinishWarehouseLocationId());
-                    detail.setNum(tModel.getNum());
-                    detail.setStatus(Constants.ONE);
-                    detail.setDoneNum(tModel.getNum());
-                    detail.setDoneDate(new Date());
-                    detail.setUnitId(tModel.getUnitId());
-                    detail.setBatch(tModel.getMaterialBatch());
-                    detail.setProcedureId(tModel.getProcedureId());
-                    detail.setMaterialId(tModel.getMaterialId());
-                    detail.setQualityType(tModel.getDoneType());
-                    detail.setWOutboundRecordInList(new ArrayList<>());
-                    detailList.add(detail);
-                }
-
-                WOutboundRecord record = new WOutboundRecord();
-                record.setDeleted(Constants.ZERO);
-                record.setCreateTime(DateUtil.getCurrentDate());
-                record.setCreateUser(user.getId());
-                record.setAppliancesId(tModel.getAppliancesId());
-                record.setBatch(detail.getBatch());
-                record.setRootDepartId(mp.getRootDepartId());
-                record.setNum(tModel.getNum());
-                record.setOutboundId(detail.getOutboundId());
-                record.setUnitId(detail.getUnitId());
-                record.setWarehouseId(detail.getWarehouseId());
-                record.setMaterialId(detail.getMaterialId());
-                record.setProcedureId(detail.getProcedureId());
-                record.setLocationId(detail.getLocationId());
-                record.setQualityType(detail.getQualityType());
-                detail.getWOutboundRecordInList().add(record);
-
-                WStock stock = getFromStockList(mp.getFinishWarehouseLocationId(),detail.getWarehouseId(),detail.getMaterialId(),detail.getBatch(),
-                        tModel.getProcedureId(),tModel.getDoneType(),stockList);
-                if(stock!=null){
-                    //濡傛灉搴撳瓨瀵硅薄宸插瓨鍦紝鐩存帴澧炲姞瀵瑰簲鐨勫簱瀛橀噺
-                    stock.setNum(Constants.formatBigdecimal(stock.getNum()).add(Constants.formatBigdecimal(tModel.getNum())));
-                }else{
-                    stock = new WStock();
-                    stock.setMaterialId(detail.getMaterialId());
-                    stock.setBatch(detail.getBatch());
-                    stock.setWarehouseId(outbound.getWarehouseId());
-                    stock.setLocationId(mp.getFinishWarehouseLocationId());
-                    stock.setUnitId(detail.getUnitId());
-                    stock.setNum(Constants.formatBigdecimal(tModel.getNum()));
-                    stock.setProcedureId(tModel.getProcedureId());
-                    stock.setQualityType(tModel.getDoneType());
-                    //寰呮洿鏂板簱瀛樹俊鎭�
-                    stockList.add(stock);
-                }
+                //浜у嚭鍚堟牸
+               this.createOutDetail(user,outbound,mp,tModel,Constants.ZERO,detailList,stockList);
+               //浜у嚭涓嶈壇
+                this.createOutDetail(user,outbound,mp,tModel,Constants.ONE,detailList,stockList);
             }
         }
         for(WOutboundDetail detail : detailList){
@@ -922,6 +974,68 @@
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曠殑浜у嚭鏁伴噺涓嶈兘澶т簬宸ュ崟璁″垝鏁伴噺锛�");
         }
     }
+
+
+    public void createOutDetail(LoginUserInfo user,WOutbound outbound,Workorder mp,WorkorderRecordExtListVO tModel,Integer doneType
+            ,List<WOutboundDetail> detailList,List<WStock> stockList ){
+        //鐗╂枡+鎵规+宸ュ簭+璐ㄩ噺灞炴�у幓閲�
+        WOutboundDetail detail =  new WOutboundDetail();
+        detail.setDeleted(Constants.ZERO);
+        detail.setCreateTime(DateUtil.getCurrentDate());
+        detail.setCreateUser(user.getId());
+        detail.setOutboundId(outbound.getId());
+        detail.setRootDepartId(outbound.getRootDepartId());
+        detail.setWarehouseId(outbound.getWarehouseId());
+        detail.setLocationId(mp.getFinishWarehouseLocationId());
+        detail.setNum(BigDecimal.valueOf(doneType.equals(Constants.ZERO)?tModel.getQualifiedNum():tModel.getUnqualifiedNum()));
+        detail.setStatus(Constants.ONE);
+        detail.setDoneNum(detail.getNum());
+        detail.setDoneDate(new Date());
+        detail.setUnitId(tModel.getUnitId());
+        detail.setBatch(tModel.getMaterialBatch());
+        detail.setProcedureId(tModel.getProcedureId());
+        detail.setMaterialId(tModel.getMaterialId());
+        detail.setQualityType(doneType);
+        detail.setWOutboundRecordInList(new ArrayList<>());
+        detailList.add(detail);
+
+        WOutboundRecord record = new WOutboundRecord();
+        record.setDeleted(Constants.ZERO);
+        record.setCreateTime(DateUtil.getCurrentDate());
+        record.setCreateUser(user.getId());
+        record.setAppliancesId(tModel.getAppliancesId());
+        record.setBatch(detail.getBatch());
+        record.setRootDepartId(mp.getRootDepartId());
+        record.setNum(tModel.getNum());
+        record.setOutboundId(detail.getOutboundId());
+        record.setUnitId(detail.getUnitId());
+        record.setWarehouseId(detail.getWarehouseId());
+        record.setMaterialId(detail.getMaterialId());
+        record.setProcedureId(detail.getProcedureId());
+        record.setLocationId(detail.getLocationId());
+        record.setQualityType(detail.getQualityType());
+        detail.getWOutboundRecordInList().add(record);
+
+        WStock stock = getFromStockList(mp.getFinishWarehouseLocationId(),detail.getWarehouseId(),detail.getMaterialId(),detail.getBatch(),
+                tModel.getProcedureId(),tModel.getDoneType(),stockList);
+        if(stock!=null){
+            //濡傛灉搴撳瓨瀵硅薄宸插瓨鍦紝鐩存帴澧炲姞瀵瑰簲鐨勫簱瀛橀噺
+            stock.setNum(Constants.formatBigdecimal(stock.getNum()).add(Constants.formatBigdecimal(tModel.getNum())));
+        }else{
+            stock = new WStock();
+            stock.setMaterialId(detail.getMaterialId());
+            stock.setBatch(detail.getBatch());
+            stock.setWarehouseId(outbound.getWarehouseId());
+            stock.setLocationId(mp.getFinishWarehouseLocationId());
+            stock.setUnitId(detail.getUnitId());
+            stock.setNum(Constants.formatBigdecimal(tModel.getNum()));
+            stock.setProcedureId(tModel.getProcedureId());
+            stock.setQualityType(tModel.getDoneType());
+            //寰呮洿鏂板簱瀛樹俊鎭�
+            stockList.add(stock);
+        }
+    }
+
 
     private WStock initMaterialNum(Integer materialId, BigDecimal num) {
         WStock s = new WStock();
@@ -1247,16 +1361,14 @@
         workorderRecord.setSalaryPrice(salaryParam.getSalary());
         workorderRecord.setSalaryType(salaryParam.getType());
         workorderRecord.setSalaryUnqualified(salaryParam.getUnqualified());
-
         //璁′欢宸ヨ祫
         if(salaryParam.getType().equals(Constants.ZERO)){
             workorderRecord.setSalaryNum(salaryParam.getNum());
-            workorderRecord.setSalary(salaryParam.getSalary().multiply(salaryParam.getUnqualified()==Constants.ZERO?num:createWorkorderRecordDTO.getUnQualifiedNum()));
+            workorderRecord.setSalary(salaryParam.getSalary().multiply(salaryParam.getUnqualified()==Constants.ONE?num:createWorkorderRecordDTO.getQualifiedNum()));
         }else{
             workorderRecord.setDuration(createWorkorderRecordDTO.getDuration());
             workorderRecord.setSalary(BigDecimal.valueOf(createWorkorderRecordDTO.getDuration()).multiply(salaryParam.getSalary()).divide(new BigDecimal(3600)));
         }
-
         //鎻掑叆宸ュ崟鎿嶄綔璁板綍锛屽苟涓斿垽鏂槸鍚︽洿鏀逛负宸ュ崟鐨勭姸鎬併�愮敓浜т腑銆�
         updateOrderInfo(loginUserInfo,workorder,Constants.WORKORDER_HISTORY_STATUS.produce);
         workorderRecordExtMapper.insert(workorderRecord);
diff --git a/server/src/main/resources/mappers/PlansExtMapper.xml b/server/src/main/resources/mappers/PlansExtMapper.xml
index ddff456..3556f9a 100644
--- a/server/src/main/resources/mappers/PlansExtMapper.xml
+++ b/server/src/main/resources/mappers/PlansExtMapper.xml
@@ -370,7 +370,6 @@
       w.START_DATE as workPlanStartDate  , w.PLAN_DATE as workPlanEndDate,
       w.`PLAN_DATE` as workPlanPlanDate,
       ifnull((select  sum(worder.PLAN_NUM) from workorder worder where worder.PLAN_ID = a.id and worder.STATUS not in (7,8)  ),0) as produceNum
-
     FROM `plans` `a`
     LEFT JOIN `department` `dmodel` ON a.DEPART_ID=dmodel.ID
     LEFT JOIN `material_distribute` `mdmodel` ON a.MATERIAL_ID=mdmodel.ID
diff --git a/server/src/main/resources/mappers/UserDeviceExtMapper.xml b/server/src/main/resources/mappers/UserDeviceExtMapper.xml
index 7259c9f..6b93738 100644
--- a/server/src/main/resources/mappers/UserDeviceExtMapper.xml
+++ b/server/src/main/resources/mappers/UserDeviceExtMapper.xml
@@ -201,7 +201,7 @@
         AND `umodel`.`ROOT_DEPART_ID` = #{umodelRootDepartId}
       </if>
       <if test="umodelName != null and umodelName != ''">
-        AND `umodel`.`NAME` = #{umodelName}
+        AND `umodel`.`NAME` like concat('%', #{umodelName} , '%')
       </if>
       <if test="umodelPhone != null and umodelPhone != ''">
         AND `umodel`.`PHONE` = #{umodelPhone}

--
Gitblit v1.9.3