|
|
|
|
package com.glxp.api.req.dev;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import com.baomidou.mybatisplus.annotation.TableField;
|
|
|
|
|
import com.baomidou.mybatisplus.annotation.TableId;
|
|
|
|
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
|
|
|
import com.glxp.api.constant.Constant;
|
|
|
|
|
import com.glxp.api.entity.auth.AuthAdmin;
|
|
|
|
|
import com.glxp.api.entity.dev.DeviceChangeOrderEntity;
|
|
|
|
|
import com.glxp.api.entity.dev.DeviceChangeOrderItemEntity;
|
|
|
|
|
import com.glxp.api.enums.dev.DeviceChangeStatusEnum;
|
|
|
|
|
import com.glxp.api.enums.dev.DeviceChangeTypeEnum;
|
|
|
|
|
import com.glxp.api.exception.JsonException;
|
|
|
|
|
import com.glxp.api.util.GennerOrderUtils;
|
|
|
|
|
import com.glxp.api.util.OrderNoTypeBean;
|
|
|
|
|
import com.glxp.api.util.SnowflakeUtil;
|
|
|
|
|
import lombok.Data;
|
|
|
|
|
import org.hibernate.validator.constraints.Length;
|
|
|
|
|
|
|
|
|
|
import javax.validation.Valid;
|
|
|
|
|
import javax.validation.constraints.NotBlank;
|
|
|
|
|
import javax.validation.constraints.NotEmpty;
|
|
|
|
|
import javax.validation.constraints.NotNull;
|
|
|
|
|
import javax.validation.constraints.Pattern;
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
import java.time.LocalDate;
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 设备变更单
|
|
|
|
|
*/
|
|
|
|
|
@Data
|
|
|
|
|
public class DeviceChangeOrderParam {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 变更单类型
|
|
|
|
|
*/
|
|
|
|
|
@NotNull(message = "类型不能为空")
|
|
|
|
|
DeviceChangeTypeEnum type;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 单据号
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "billNo")
|
|
|
|
|
private String billNo;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 目标部门
|
|
|
|
|
*/
|
|
|
|
|
String toDeptCode;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 备注
|
|
|
|
|
*/
|
|
|
|
|
@Length(max = 500, message = "备注最多500个字")
|
|
|
|
|
String remark;
|
|
|
|
|
|
|
|
|
|
@Valid
|
|
|
|
|
@NotEmpty(message = "明细不能为空")
|
|
|
|
|
List<Item> items;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 编码
|
|
|
|
|
*/
|
|
|
|
|
@TableId(value = "orderId")
|
|
|
|
|
private Long orderId;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 1.待目标部门接收 ,2.完成(目标确认接收) ,3.目标部门拒收,4.取消
|
|
|
|
|
*/
|
|
|
|
|
private DeviceChangeStatusEnum status;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建部门
|
|
|
|
|
*/
|
|
|
|
|
private String deptCode;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 确认人id
|
|
|
|
|
*/
|
|
|
|
|
private Long confirmUser;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 确认人姓名
|
|
|
|
|
*/
|
|
|
|
|
private String confirmUserName;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 确认时间
|
|
|
|
|
*/
|
|
|
|
|
private LocalDateTime confirmTime;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
private String confirmRemark;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建人
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "createUserName")
|
|
|
|
|
private String createUserName;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建人id
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "createUser")
|
|
|
|
|
private Long createUser;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建时间
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "createTime")
|
|
|
|
|
private LocalDateTime createTime;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 移除类型
|
|
|
|
|
*/
|
|
|
|
|
private Integer destroyType;
|
|
|
|
|
|
|
|
|
|
@Data
|
|
|
|
|
public static class Item {
|
|
|
|
|
/**
|
|
|
|
|
* 设备编码
|
|
|
|
|
*/
|
|
|
|
|
@NotBlank(message = "设备编码不能为空")
|
|
|
|
|
@Pattern(regexp = "^[A-Za-z0-9]{1,20}$", message = "设备编码只能为(大小写字母、数字)组合或其中一项,最多20个字符")
|
|
|
|
|
private String deviceCode;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 产品id
|
|
|
|
|
*/
|
|
|
|
|
// @NotNull(message = "产品id不能为空")
|
|
|
|
|
private Long productId;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* UDI码
|
|
|
|
|
*/
|
|
|
|
|
private String udi;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 批次号
|
|
|
|
|
*/
|
|
|
|
|
private String batchNo;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 序列号
|
|
|
|
|
*/
|
|
|
|
|
private String serialNo;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 生产日期
|
|
|
|
|
*/
|
|
|
|
|
private String productionDate;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 失效日期
|
|
|
|
|
*/
|
|
|
|
|
private String expireDate;
|
|
|
|
|
|
|
|
|
|
private String ggxh;
|
|
|
|
|
private String manufactory;
|
|
|
|
|
private String measname;
|
|
|
|
|
private String nameCode;
|
|
|
|
|
private String productName;
|
|
|
|
|
private String zczbhhzbapzbh;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 来源类型
|
|
|
|
|
*/
|
|
|
|
|
private String sourceType;
|
|
|
|
|
/**
|
|
|
|
|
* 供应商ID
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "supId")
|
|
|
|
|
private String supId;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 供应商名称
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "supName")
|
|
|
|
|
private String supName;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 备注
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "remark")
|
|
|
|
|
private String remark;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 资产分类
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "assetType")
|
|
|
|
|
private String assetType;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 国资分类
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "sasacType")
|
|
|
|
|
private String sasacType;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 资产助记码
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "assetMnemonicCode")
|
|
|
|
|
private String assetMnemonicCode;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 数量
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "number")
|
|
|
|
|
private Integer number;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 取得方式
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "acquisitionMethod")
|
|
|
|
|
private String acquisitionMethod;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 用途
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "purpose")
|
|
|
|
|
private String purpose;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 折旧年
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "depreciationYear")
|
|
|
|
|
private Integer depreciationYear;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 折旧月
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "depreciationMonth")
|
|
|
|
|
private Integer depreciationMonth;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 存储仓库
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "invCode")
|
|
|
|
|
private String invCode;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 预计总工时
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "estimatedTotalHour")
|
|
|
|
|
private Integer estimatedTotalHour;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 单日工时
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "dayHour")
|
|
|
|
|
private Integer dayHour;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 单个资产价值
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "assetValue")
|
|
|
|
|
private BigDecimal assetValue;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 自有资金
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "ownFund")
|
|
|
|
|
private BigDecimal ownFund;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 财政拨款
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "financialAppropriation")
|
|
|
|
|
private BigDecimal financialAppropriation;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 科教基金
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "educationFund")
|
|
|
|
|
private BigDecimal educationFund;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 其他资金
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "otherFund")
|
|
|
|
|
private BigDecimal otherFund;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 非同级财政拨款
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "nonPeerFinancialAppropriation")
|
|
|
|
|
private BigDecimal nonPeerFinancialAppropriation;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 医疗器械分类编码
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "ybbm")
|
|
|
|
|
private String ybbm;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 一级分类名称(学科,品名)
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "catalogname1")
|
|
|
|
|
private String catalogname1;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 二级分类名称(用途、品目)
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "catalogname2")
|
|
|
|
|
private String catalogname2;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 三级分类名称(部位、功能、品种)
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "catalogname3")
|
|
|
|
|
private String catalogname3;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 编码
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "catalogCode")
|
|
|
|
|
private String catalogCode;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 编码
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "catalogCode1")
|
|
|
|
|
private Integer catalogCode1;
|
|
|
|
|
/**
|
|
|
|
|
* 编码
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "catalogCode2")
|
|
|
|
|
private Integer catalogCode2;
|
|
|
|
|
/**
|
|
|
|
|
* 编码
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "catalogCode3")
|
|
|
|
|
private Integer catalogCode3;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 管理类别
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "managementCategory")
|
|
|
|
|
private String managementCategory;
|
|
|
|
|
/**
|
|
|
|
|
* 使用人
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "endUser")
|
|
|
|
|
private String endUser;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 预计残值
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "estimatedResidualValue")
|
|
|
|
|
private BigDecimal estimatedResidualValue;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 币种
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "currencyType")
|
|
|
|
|
private String currencyType;
|
|
|
|
|
/**
|
|
|
|
|
* 采购类型
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "purType")
|
|
|
|
|
private String purType;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 购置日期
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "purchaseDate")
|
|
|
|
|
@JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
|
|
|
|
|
private Date purchaseDate;
|
|
|
|
|
/**
|
|
|
|
|
* 添加日期
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "addDate")
|
|
|
|
|
@JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
|
|
|
|
|
private Date addDate;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 资产品名
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "assetName")
|
|
|
|
|
private String assetName;
|
|
|
|
|
/**
|
|
|
|
|
* 是否强检
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "isImperative")
|
|
|
|
|
private Boolean isImperative;
|
|
|
|
|
/**
|
|
|
|
|
* 是否保养
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "isMaintain")
|
|
|
|
|
private Boolean isMaintain;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 检定周期(月)
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "imperativeCycle")
|
|
|
|
|
private Integer imperativeCycle;
|
|
|
|
|
/**
|
|
|
|
|
* 保养周期(月)
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "maintainCycle")
|
|
|
|
|
private Integer maintainCycle;
|
|
|
|
|
/**
|
|
|
|
|
* 开始检定日期
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "startImperativeDate")
|
|
|
|
|
@JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
|
|
|
|
|
private Date startImperativeDate;
|
|
|
|
|
/**
|
|
|
|
|
* 开始保养日期
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "startMaintainDate")
|
|
|
|
|
@JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
|
|
|
|
|
private Date startMaintainDate;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 维修组
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "serviceType")
|
|
|
|
|
private String serviceType;
|
|
|
|
|
/**
|
|
|
|
|
* 保养组
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "maintainType")
|
|
|
|
|
private String maintainType;
|
|
|
|
|
/**
|
|
|
|
|
* 管理人
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "managerUser")
|
|
|
|
|
private String managerUser;
|
|
|
|
|
/**
|
|
|
|
|
* 审核人
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "approveUser")
|
|
|
|
|
private String approveUser;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 对应会计科目
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "ledgerAccount")
|
|
|
|
|
private String ledgerAccount;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 减值准备
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "impairmentProvision")
|
|
|
|
|
private String impairmentProvision;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 预计工作量
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "estimatedWorkload")
|
|
|
|
|
private String estimatedWorkload;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 已完成工作量
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "completedWorkload")
|
|
|
|
|
private String completedWorkload;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 维保类型
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "maintenanceType")
|
|
|
|
|
private String maintenanceType;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 维保周期
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "maintenanceCycle")
|
|
|
|
|
private Integer maintenanceCycle;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 维保开始日期
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "startMaintenancDate")
|
|
|
|
|
@JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
|
|
|
|
|
private Date startMaintenancDate;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 维保结束日期
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "endMaintenancDate")
|
|
|
|
|
@JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
|
|
|
|
|
private Date endMaintenancDate;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 内外网
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "networkType")
|
|
|
|
|
private Integer networkType;
|
|
|
|
|
/**
|
|
|
|
|
* 使用角色
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "userRole")
|
|
|
|
|
private Integer userRole;
|
|
|
|
|
/**
|
|
|
|
|
* 是否加域
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "isAddDomain")
|
|
|
|
|
private Boolean isAddDomain;
|
|
|
|
|
/**
|
|
|
|
|
* u盘是否禁用
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "isUDisc")
|
|
|
|
|
private Boolean isUDisc;
|
|
|
|
|
/**
|
|
|
|
|
* 设备归类
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "ascriptionType")
|
|
|
|
|
private Integer ascriptionType;
|
|
|
|
|
/**
|
|
|
|
|
* 资产备用类型
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "assetReserveType")
|
|
|
|
|
private String assetReserveType;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 申购订单id外键
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "purApplyBillNo")
|
|
|
|
|
private String purApplyBillNo;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 采购订单id外键
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "purOrderBillNo")
|
|
|
|
|
private String purOrderBillNo;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 采购合同id外键
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "purContractBillNo")
|
|
|
|
|
private String purContractBillNo;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 采购计划id外键
|
|
|
|
|
*/
|
|
|
|
|
@TableField(value = "purPlanBillNo")
|
|
|
|
|
private String purPlanBillNo;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void valid(AuthAdmin user) {
|
|
|
|
|
if (StrUtil.isBlank(this.deptCode)) {
|
|
|
|
|
throw new JsonException("请选择操作部门");
|
|
|
|
|
}
|
|
|
|
|
if (this.type == DeviceChangeTypeEnum.CHANGE) {
|
|
|
|
|
if (StrUtil.isBlank(this.toDeptCode)) {
|
|
|
|
|
throw new JsonException("请选择目标部门");
|
|
|
|
|
} else if (this.toDeptCode.equals(user.getLocDeptCode())) {
|
|
|
|
|
throw new JsonException("目标部门不能为当前部门");
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
this.toDeptCode = user.getLocDeptCode();
|
|
|
|
|
items.stream().forEach(i -> {
|
|
|
|
|
if (i.getProductId() == null) {
|
|
|
|
|
throw new JsonException("产品id不能为空");
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
Map<String, List<Item>> map = items.stream().collect(Collectors.groupingBy(Item::getDeviceCode));
|
|
|
|
|
map.entrySet().stream().forEach(i -> {
|
|
|
|
|
if (i.getValue().size() > 1) {
|
|
|
|
|
throw new JsonException(500, String.format("设备编码[%s]重复请检查", i.getKey()));
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public DeviceChangeOrderEntity getOrderEntity(AuthAdmin user) {
|
|
|
|
|
|
|
|
|
|
if (billNo != null) {
|
|
|
|
|
DeviceChangeOrderEntity deviceChangeOrderEntity = new DeviceChangeOrderEntity();
|
|
|
|
|
BeanUtil.copyProperties(this, deviceChangeOrderEntity);
|
|
|
|
|
return deviceChangeOrderEntity;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DeviceChangeOrderEntity order = DeviceChangeOrderEntity.builder()
|
|
|
|
|
.orderId(SnowflakeUtil.getId())
|
|
|
|
|
.type(type)
|
|
|
|
|
.status(DeviceChangeStatusEnum.WAIT_CONFIRM)
|
|
|
|
|
.deptCode(deptCode)
|
|
|
|
|
.toDeptCode(toDeptCode)
|
|
|
|
|
.remark(remark)
|
|
|
|
|
.destroyType(destroyType)
|
|
|
|
|
.createUser(user.getId())
|
|
|
|
|
.createUserName(user.getEmployeeName())
|
|
|
|
|
.createTime(LocalDateTime.now())
|
|
|
|
|
.build();
|
|
|
|
|
// 新增时状态直接为完成
|
|
|
|
|
if (type == DeviceChangeTypeEnum.ADD || type == DeviceChangeTypeEnum.DESTROY) {
|
|
|
|
|
order.setStatus(DeviceChangeStatusEnum.FINISH)
|
|
|
|
|
.setConfirmTime(order.getCreateTime())
|
|
|
|
|
.setConfirmUser(order.getCreateUser())
|
|
|
|
|
.setConfirmUserName(order.getCreateUserName())
|
|
|
|
|
;
|
|
|
|
|
}
|
|
|
|
|
return order;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<DeviceChangeOrderItemEntity> getOrderItemList(Long orderId, AuthAdmin user) {
|
|
|
|
|
return items.stream().map(i -> {
|
|
|
|
|
DeviceChangeOrderItemEntity itemEntity = new DeviceChangeOrderItemEntity();
|
|
|
|
|
if (type == DeviceChangeTypeEnum.ADD) {
|
|
|
|
|
BeanUtil.copyProperties(i, itemEntity);
|
|
|
|
|
} else {
|
|
|
|
|
itemEntity.setDeviceCode(i.getDeviceCode());
|
|
|
|
|
}
|
|
|
|
|
itemEntity.setOrderId(orderId);
|
|
|
|
|
return itemEntity;
|
|
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<DeviceChangeOrderItemEntity> getDraftOrderItemList(Long orderId, AuthAdmin user) {
|
|
|
|
|
return items.stream().map(i -> {
|
|
|
|
|
DeviceChangeOrderItemEntity itemEntity = new DeviceChangeOrderItemEntity();
|
|
|
|
|
BeanUtil.copyProperties(i, itemEntity);
|
|
|
|
|
itemEntity.setOrderId(orderId);
|
|
|
|
|
return itemEntity;
|
|
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|