111
k94314517
2023-08-16 e1ee1084bb6db4f8a87894109be1b7a9d216cfec
111
已添加6个文件
已修改10个文件
752 ■■■■ 文件已修改
server/src/main/java/doumeemes/api/business/UnqualifiedRecordController.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/api/ext/CategoryExtController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/config/shiro/ShiroRealm.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/dao/business/UnqualifiedRecordMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/dao/business/dto/AutoWorkReportDTO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/dao/business/dto/CreateUnqualifiedDTO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/dao/business/model/UnqualifiedRecord.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/dao/ext/vo/PlansExtListVO.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/service/business/UnqualifiedRecordService.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/service/business/impl/UnqualifiedRecordServiceImpl.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/service/ext/CategoryExtService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/service/ext/impl/CategoryExtServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java 262 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/mappers/PlansExtMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/mappers/UserDeviceExtMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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));
    }
}
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")
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());
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> {
}
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 ;
}
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;
}
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;
}
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")
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;
/**
 * å·¥å•ç±»-报工不良记录类型表Service定义
 * @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);
}
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;
/**
 * å·¥å•ç±»-报工不良记录类型表Service实现
 * @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);
    }
}
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);
}
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);
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);
            }
        }
    }
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);
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
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}