【admin】新增#备件领用管理

dev
renfan 2024-08-07 20:59:14 +08:00
parent 68c7c1ac16
commit 0127551a59
13 changed files with 108 additions and 63 deletions

View File

@ -6,6 +6,7 @@ import com.hcy.admin.service.sparePartOutWarehouse.ISparePartOutWarehouseService
import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.sparePartStockAudit.SparePartStockAuditParam;
import com.hcy.admin.vo.SparePartOutWarehouseListVo.SparePartOutWarehouseListVo;
import com.hcy.admin.vo.sparePartReceive.SparePartReceiveListVo;
import com.hcy.common.core.AjaxResult;
import com.hcy.common.core.PageResult;
import com.hcy.common.validator.annotation.IDMust;
@ -16,7 +17,7 @@ import javax.annotation.Resource;
import java.util.Map;
/**
*
*
*/
@RestController
@RequestMapping("api/sparePartReceive")
@ -26,7 +27,7 @@ public class SparePartReceiveController {
ISparePartReceiveService iSparePartReceiveService;
/**
*
*
*
* @author hcy
* @param pageParam
@ -36,11 +37,11 @@ public class SparePartReceiveController {
@GetMapping("/list")
public Object list(@Validated PageParam pageParam,
@RequestParam Map<String, String> params) {
PageResult<SparePartOutWarehouseListVo> list = iSparePartReceiveService.list(pageParam, params);
PageResult<SparePartReceiveListVo> list = iSparePartReceiveService.list(pageParam, params);
return AjaxResult.success(list);
}
/**
*
*
*
* @author hcy
* @param id ID
@ -48,18 +49,18 @@ public class SparePartReceiveController {
*/
@GetMapping("/detail")
public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) {
SparePartOutWarehouseListVo detail = iSparePartReceiveService.detail(id);
SparePartReceiveListVo detail = iSparePartReceiveService.detail(id);
return AjaxResult.success(detail);
}
/**
*
*
*
* @author hcy
* @param sparePartStockAuditParam
* @return Object
*/
@Log(title = "备件出库新增")
@Log(title = "备件领用新增")
@PostMapping("/add")
public Object add(@Validated(value = SparePartStockAuditParam.create.class) @RequestBody SparePartStockAuditParam sparePartStockAuditParam) {
iSparePartReceiveService.add(sparePartStockAuditParam);
@ -67,13 +68,13 @@ public class SparePartReceiveController {
}
/**
*
*
*
* @author hcy
* @param sparePartStockAuditParam
* @return Object
*/
@Log(title = "备件出库编辑")
@Log(title = "备件领用编辑")
@PostMapping("/edit")
public Object edit(@Validated(value = SparePartStockAuditParam.update.class) @RequestBody SparePartStockAuditParam sparePartStockAuditParam) {
iSparePartReceiveService.edit(sparePartStockAuditParam);
@ -81,13 +82,13 @@ public class SparePartReceiveController {
}
/**
*
*
*
* @author hcy
* @param sparePartStockAuditParam
* @return Object
*/
@Log(title = "备件出库删除")
@Log(title = "备件领用删除")
@PostMapping("/del")
public Object del(@Validated(value = SparePartStockAuditParam.delete.class) @RequestBody SparePartStockAuditParam sparePartStockAuditParam) {
iSparePartReceiveService.del(Math.toIntExact(sparePartStockAuditParam.getId()));

View File

@ -3,12 +3,13 @@ package com.hcy.admin.service.SparePartReceive;
import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.sparePartStockAudit.SparePartStockAuditParam;
import com.hcy.admin.vo.SparePartOutWarehouseListVo.SparePartOutWarehouseListVo;
import com.hcy.admin.vo.sparePartReceive.SparePartReceiveListVo;
import com.hcy.common.core.PageResult;
import java.util.Map;
/**
*
*
*/
public interface ISparePartReceiveService {
@ -20,7 +21,7 @@ public interface ISparePartReceiveService {
* @return PageResult<SparePartInWarehouseListVo>
* @author hcy
*/
PageResult<SparePartOutWarehouseListVo> list(PageParam pageParam, Map<String, String> params);
PageResult<SparePartReceiveListVo> list(PageParam pageParam, Map<String, String> params);
/**
*
@ -29,7 +30,7 @@ public interface ISparePartReceiveService {
* @param id ID
* @return SparePartInWarehouseListVo
*/
SparePartOutWarehouseListVo detail(Integer id);
SparePartReceiveListVo detail(Integer id);
/**
*

View File

@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hcy.admin.AdminThreadLocal;
import com.hcy.admin.service.SparePartReceive.ISparePartReceiveService;
import com.hcy.admin.service.sparePartOutWarehouse.ISparePartOutWarehouseService;
import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.sparePartStockAudit.SparePartStockAuditParam;
import com.hcy.admin.vo.SparePartOutWarehouseListVo.SparePartOutWarehouseListVo;
import com.hcy.admin.vo.sparePartReceive.SparePartReceiveListVo;
import com.hcy.common.core.PageResult;
import com.hcy.common.entity.SparePartAudit.SparePartAudit;
import com.hcy.common.entity.sparePart.SparePart;
@ -28,10 +30,10 @@ import java.text.SimpleDateFormat;
import java.util.*;
/**
*
*
*/
@Service
public class SparePartReceiveServiceImpl implements ISparePartOutWarehouseService {
public class SparePartReceiveServiceImpl implements ISparePartReceiveService {
@Resource
SparePartStockAuditMapper sparePartStockAuditMapper;
@ -46,7 +48,7 @@ public class SparePartReceiveServiceImpl implements ISparePartOutWarehouseServic
WarehouseMapper warehouseMapper;
/**
*
*
*
* @param pageParam
* @param params
@ -54,7 +56,7 @@ public class SparePartReceiveServiceImpl implements ISparePartOutWarehouseServic
* @author hcy
*/
public PageResult<SparePartOutWarehouseListVo> list(PageParam pageParam, Map<String, String> params) {
public PageResult<SparePartReceiveListVo> list(PageParam pageParam, Map<String, String> params) {
Integer page = pageParam.getPageNo();
Integer limit = pageParam.getPageSize();
@ -65,41 +67,64 @@ public class SparePartReceiveServiceImpl implements ISparePartOutWarehouseServic
sparePartStockAuditMapper.setSearch(queryWrapper, params, new String[]{
"like:receiptNumber@receipt_number:str",
"=:warehouseId@warehouse_id:long",
"=:outInWarehouseType@out_in_warehouse_type:long",
"=:auditState@audit_state:int",
"like:workOrderId@work_order_id:str",
"like:recipient@recipient:str",
"=:purchaseStatus@purchase_status:int",
});
IPage<SparePartStockAudit> iPage = sparePartStockAuditMapper.selectPage(new Page<>(page, limit), queryWrapper);
List<SparePartOutWarehouseListVo> list = new LinkedList<>();
List<SparePartReceiveListVo> list = new LinkedList<>();
for(SparePartStockAudit item : iPage.getRecords()) {
SparePartOutWarehouseListVo vo = new SparePartOutWarehouseListVo();
SparePartReceiveListVo vo = new SparePartReceiveListVo();
BeanUtils.copyProperties(item, vo);
vo.setCreateTime(TimeUtil.timestampToDate(item.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(item.getUpdateTime()));
vo.setHandlingTime(TimeUtil.timestampToDate(item.getHandlingTime())); //经办时间
vo.setConsigneePhone(item.getConsignee() + "/" + item.getPhone());
Warehouse warehouse = warehouseMapper.selectOne(
new QueryWrapper<Warehouse>()
.eq("id", item.getWarehouseId())
vo.setRecipientAndPhone(item.getRecipient() + "/" + item.getRecipientPhone()); //领料员工/联系电话
int number = 0; //领用数量
//获取待审核备件信息
List<SparePartAudit> stockAuditId = sparePartAuditMapper.selectList(
new QueryWrapper<SparePartAudit>()
.eq("stock_audit_id", item.getId())
.eq("is_delete", 0)
.last("limit 1"));
vo.setWarehouseName(warehouse.getWarehouseName());
);
//获取备件信息
List<SparePartAudit> listVo = new ArrayList<>();
for (SparePartAudit sparePartAudit : stockAuditId) {
SparePart sparePart = sparePartMapper.selectOne(
new QueryWrapper<SparePart>()
.eq("id", sparePartAudit.getSparePartsId())
.eq("is_delete", 0)
.last("limit 1"));
SparePartAudit sparePartAudit1 = new SparePartAudit();
BeanUtils.copyProperties(sparePart, sparePartAudit1);
sparePartAudit1.setId(sparePartAudit.getId());
sparePartAudit1.setSparePartsId(sparePart.getId());
sparePartAudit1.setStockAuditId(sparePartAudit.getStockAuditId());
sparePartAudit1.setCount(sparePartAudit.getCount()); // 出库数量
number = number + sparePartAudit.getCount();
listVo.add(sparePartAudit1);
}
vo.setRecipientNumber(number); //领用数量
vo.setSparePartAuditList(listVo);
list.add(vo);
}
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
}
/**
*
*
*
* @author hcy
* @param id
* @return SparePartInWarehouseListVo
*/
@Override
public SparePartOutWarehouseListVo detail(Integer id) {
public SparePartReceiveListVo detail(Integer id) {
SparePartStockAudit model = sparePartStockAuditMapper.selectOne(
new QueryWrapper<SparePartStockAudit>()
.eq("id", id)
@ -108,16 +133,9 @@ public class SparePartReceiveServiceImpl implements ISparePartOutWarehouseServic
Assert.notNull(model, "数据不存在");
SparePartOutWarehouseListVo vo = new SparePartOutWarehouseListVo();
SparePartReceiveListVo vo = new SparePartReceiveListVo();
BeanUtils.copyProperties(model, vo);
Warehouse warehouse = warehouseMapper.selectOne(
new QueryWrapper<Warehouse>()
.eq("id", model.getWarehouseId())
.eq("is_delete", 0)
.last("limit 1"));
vo.setWarehouseName(warehouse.getWarehouseName());
//获取待审核备件信息
List<SparePartAudit> stockAuditId = sparePartAuditMapper.selectList(
new QueryWrapper<SparePartAudit>()
@ -141,14 +159,14 @@ public class SparePartReceiveServiceImpl implements ISparePartOutWarehouseServic
sparePartAudit1.setCount(sparePartAudit.getCount()); // 出库数量
listVo.add(sparePartAudit1);
}
vo.setSparePartAuditList(listVo);
vo.setConsigneePhone(model.getConsignee() + "/" + model.getPhone());
vo.setHandlingTime(TimeUtil.timestampToDate(model.getHandlingTime())); //经办时间
return vo;
}
/**
*
*
*
* @author hcy
* @param sparePartStockAuditParam
@ -171,6 +189,17 @@ public class SparePartReceiveServiceImpl implements ISparePartOutWarehouseServic
model.setConsignee(sparePartStockAuditParam.getConsignee()); // 收货单位(人员)
model.setPhone(sparePartStockAuditParam.getPhone()); // 联系电话
model.setReceiptNumber(generateOrderNumber()); // 单据编号
model.setShippingAddress(sparePartStockAuditParam.getShippingAddress()); //收货地址
model.setRecipient(sparePartStockAuditParam.getRecipient()); //领用员工
model.setRecipientPhone(sparePartStockAuditParam.getRecipientPhone()); //领用员工联系电话
model.setConsigner(sparePartStockAuditParam.getConsigner()); //发货人
model.setConsignerPhone(sparePartStockAuditParam.getConsignerPhone()); //发货人联系电话
model.setShipAddress(sparePartStockAuditParam.getShipAddress()); //发货地址
model.setLogisticsCompany(sparePartStockAuditParam.getLogisticsCompany()); //物流公司
model.setTrackingNumber(sparePartStockAuditParam.getTrackingNumber()); //物流编号
model.setDeliveryMethod(sparePartStockAuditParam.getDeliveryMethod()); //配送方式0=物流快递1=上门取件2=送货上门)
model.setPurchaseStatus(AuditStateEnum.UNREVIEWED.getStatus()); //状态 未审核
// 获取当前的用户
Object username = AdminThreadLocal.get("username");
@ -202,7 +231,7 @@ public class SparePartReceiveServiceImpl implements ISparePartOutWarehouseServic
}
/**
*
*
*
* @author hcy
* @param sparePartStockAuditParam
@ -218,10 +247,20 @@ public class SparePartReceiveServiceImpl implements ISparePartOutWarehouseServic
Assert.notNull(model, "数据不存在!");
model.setId(sparePartStockAuditParam.getId());
model.setWarehouseId(sparePartStockAuditParam.getWarehouseId()); // 出库仓库
model.setOutInWarehouseType(sparePartStockAuditParam.getOutInWarehouseType()); // 出库类别1=调拨出库)
model.setOutInWarehouseType(sparePartStockAuditParam.getOutInWarehouseType()); // 出库类别 2=员工领料3=销售出库)
model.setConsignee(sparePartStockAuditParam.getConsignee()); // 收货单位(人员)
model.setPhone(sparePartStockAuditParam.getPhone()); // 联系电话
model.setReceiptNumber(sparePartStockAuditParam.getReceiptNumber()); // 单据编号
model.setReceiptNumber(generateOrderNumber()); // 单据编号
model.setShippingAddress(sparePartStockAuditParam.getShippingAddress()); //收货地址
model.setRecipient(sparePartStockAuditParam.getRecipient()); //领用员工
model.setRecipientPhone(sparePartStockAuditParam.getRecipientPhone()); //领用员工联系电话
model.setConsigner(sparePartStockAuditParam.getConsigner()); //发货人
model.setConsignerPhone(sparePartStockAuditParam.getConsignerPhone()); //发货人联系电话
model.setShipAddress(sparePartStockAuditParam.getShipAddress()); //发货地址
model.setLogisticsCompany(sparePartStockAuditParam.getLogisticsCompany()); //物流公司
model.setTrackingNumber(sparePartStockAuditParam.getTrackingNumber()); //物流编号
model.setDeliveryMethod(sparePartStockAuditParam.getDeliveryMethod()); //配送方式0=物流快递1=上门取件2=送货上门)
model.setPurchaseStatus(AuditStateEnum.UNREVIEWED.getStatus()); //状态 未审核
List<SparePartAudit> sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList();
// 使用StringBuilder来拼接id值
@ -275,7 +314,7 @@ public class SparePartReceiveServiceImpl implements ISparePartOutWarehouseServic
}
/**
*
*
*
* @author hcy
* @param id ID

View File

@ -52,5 +52,5 @@ public class SparePartAuditParam implements Serializable {
@NotNull(message = "unitPrice参数缺失", groups = {create.class, update.class})
private BigDecimal unitPrice;
private Long count;
private Integer count;
}

View File

@ -48,12 +48,8 @@ public class SparePartParam implements Serializable {
@Length(max = 11, message = "unit参数不能超出11个字符", groups = {create.class, update.class})
private String unit;
@NotNull(message = "quantity参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "quantity参数值不能少于0", groups = {create.class, update.class})
private Long quantity;
private Integer quantity;
@NotNull(message = "unitPrice参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "unitPrice参数值不能少于0", groups = {create.class, update.class})
private BigDecimal unitPrice;
private List<Integer> ids; //备件id集合

View File

@ -94,10 +94,10 @@ public class SparePartStockAuditParam implements Serializable {
private String shipAddress; //发货地址
private String logisticsCompany; //物流公司
private String trackingNumber; //物流编号
private Long distributionMode; //配送方式0=物流快递1=送货上门2=上门取件
private Integer deliveryMethod; //配送方式0=物流快递1=上门取件2=送货上门)
private BigDecimal salesPrice; //销售价
private String recipient; //领用员工
private String recipientPhone; //领用员工联系电话
private Integer recipientNumber; //领用数量
private Long state; //状态0=未审核1=待管理员审核2=未通过3=待发货4=待收货5=已完成)
private Integer purchaseStatus; //配件领用状态0=待审核1=未通过2=待管理员审核3=待发货4=待收货5=已完成)
}

View File

@ -33,15 +33,17 @@ public class SparePartReceiveListVo implements Serializable {
private String warehouseName; // 所属仓库名
private Long outInWarehouseType; // 出入库类别0=采购入库1=库存调拨2=员工领料3=销售出库)
private String workOrderId; //工单号
private String recipient; //领用员工
private String recipientPhone; //领用员工联系电话
private Integer recipientNumber; //领用数量
private Long state; //状态0=未审核1=待管理员审核2=未通过3=待发货4=待收货5=已完成)
private Integer purchaseStatus; //配件领用状态0=待审核1=未通过2=待管理员审核3=待发货4=待收货5=已完成)
private String shippingAddress; //收货地址
private String consigner; //发货人
private String consignerPhone; //发货人联系电话
private String shipAddress; //发货地址
private String logisticsCompany; //物流公司
private String trackingNumber; //物流编号
private String recipientAndPhone; //领用员工/联系电话
}

View File

@ -48,11 +48,11 @@ public class SparePartStockAuditDetailVo implements Serializable {
private String shipAddress; //发货地址
private String logisticsCompany; //物流公司
private String trackingNumber; //物流编号
private Long distributionMode; //配送方式0=物流快递1=送货上门2=上门取件
private Integer deliveryMethod; //配送方式0=物流快递1=上门取件2=送货上门)
private BigDecimal salesPrice; //销售价
private String recipient; //领用员工
private String recipientPhone; //领用员工联系电话
private Integer recipientNumber; //领用数量
private Long state; //状态0=未审核1=待管理员审核2=未通过3=待发货4=待收货5=已完成)
private Integer purchaseStatus; //配件领用状态0=待审核1=未通过2=待管理员审核3=待发货4=待收货5=已完成)
}

View File

@ -47,11 +47,11 @@ public class SparePartStockAuditListVo implements Serializable {
private String shipAddress; //发货地址
private String logisticsCompany; //物流公司
private String trackingNumber; //物流编号
private Long distributionMode; //配送方式0=物流快递1=送货上门2=上门取件
private Integer deliveryMethod; //配送方式0=物流快递1=上门取件2=送货上门)
private BigDecimal salesPrice; //销售价
private String recipient; //领用员工
private String recipientPhone; //领用员工联系电话
private Integer recipientNumber; //领用数量
private Long state; //状态0=未审核1=待管理员审核2=未通过3=待发货4=待收货5=已完成)
private Integer purchaseStatus; //配件领用状态0=待审核1=未通过2=待管理员审核3=待发货4=待收货5=已完成)
}

View File

@ -30,6 +30,6 @@ public class SparePartAudit implements Serializable {
private Long createTime; // 创建时间
private Long updateTime; // 更新时间
private Long deleteTime; // 删除时间
private Long count; // 出入库数量
private Integer count; // 出入库数量
}

View File

@ -23,7 +23,7 @@ public class SparePart implements Serializable {
private Long warehouseId; // 所属仓库
private String specificationsModel; // 规格型号
private String unit; // 单位
private Long quantity; // 库存数量
private Integer quantity; // 库存数量
private BigDecimal unitPrice; // 单价
private Integer isDelete; // 是否删除: [0=否, 1=是]
private Long createTime; // 创建时间

View File

@ -49,10 +49,10 @@ public class SparePartStockAudit implements Serializable {
private String shipAddress; //发货地址
private String logisticsCompany; //物流公司
private String trackingNumber; //物流编号
private Long distributionMode; //配送方式0=物流快递1=送货上门2=上门取件
private Integer deliveryMethod; //配送方式0=物流快递1=上门取件2=送货上门)
private BigDecimal salesPrice; //销售价
private String recipient; //领用员工
private String recipientPhone; //领用员工联系电话
private Integer recipientNumber; //领用数量
private Long state; //状态0=未审核1=待管理员审核2=未通过3=待发货4=待收货5=已完成)
private Integer purchaseStatus; //配件领用状态0=待审核1=未通过2=待管理员审核3=待发货4=待收货5=已完成)
}

View File

@ -11,9 +11,15 @@ import java.util.Map;
*/
public enum AuditStateEnum {
UNREVIEWED(0, "未审核"),
//配件领用状态0=待审核1=未通过2=待管理员审核3=待发货4=待收货5=已完成)
UNREVIEWED(0, "待审核"),
AUDITED(1, "已审核"),
CANCELED(2,"已取消"),
NOTPASSSTATE(1, "未通过"),
CHECKPENDING(2, "待管理员审核"),
WAITDELIVER(3, "待发货"),
WAITFORRECEIVING(4, "待收货"),
DONE(5, "已完成"),
//审核结果0=已通过1=未通过)
NOTPASS(1,"未通过"),