You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udi-wms-java/src/main/java/com/glxp/api/req/dev/DeviceChangeOrderParam.java

597 lines
15 KiB
Java

2 years ago
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;
2 years ago
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.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;
2 years ago
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
2 years ago
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
*/
@Data
public class DeviceChangeOrderParam {
/**
*
*/
@NotNull(message = "类型不能为空")
DeviceChangeTypeEnum type;
/**
*
*/
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;
2 years ago
@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 LocalDate productionDate;
/**
*
*/
private LocalDate 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;
2 years ago
}
public void valid(AuthAdmin user) {
1 year ago
if (StrUtil.isBlank(this.deptCode)) {
throw new JsonException("请选择操作部门");
}
2 years ago
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 (createUser != null) {
DeviceChangeOrderEntity deviceChangeOrderEntity = new DeviceChangeOrderEntity();
BeanUtil.copyProperties(this, deviceChangeOrderEntity);
return deviceChangeOrderEntity;
}
2 years ago
DeviceChangeOrderEntity order = DeviceChangeOrderEntity.builder()
.orderId(SnowflakeUtil.getId())
.type(type)
.status(DeviceChangeStatusEnum.WAIT_CONFIRM)
1 year ago
.deptCode(deptCode)
2 years ago
.toDeptCode(toDeptCode)
.remark(remark)
.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());
}
2 years ago
}