【admin】新增#1、入库备件管理 2、出库备件管理

dev
renfan 2024-08-02 20:56:41 +08:00
parent af1f20052b
commit 566abd1972
20 changed files with 698 additions and 79 deletions

View File

@ -33,6 +33,17 @@
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.12</version>
<scope>compile</scope>
</dependency>
</dependencies>
<!-- 插件管理 -->

View File

@ -1,6 +1,6 @@
package com.hcy.admin.controller.order;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson.JSON;
import com.hcy.admin.config.aop.Log;
import com.hcy.admin.service.order.ICancelOrderConfigService;
import com.hcy.admin.validate.order.CancelOrderConfigParam;

View File

@ -1,4 +1,4 @@
package com.hcy.admin.controller.SparePartAudit;
package com.hcy.admin.controller.sparePartAudit;
import com.hcy.admin.config.aop.Log;
import com.hcy.admin.service.SparePartAudit.ISparePartAuditService;

View File

@ -4,6 +4,7 @@ import com.hcy.admin.config.aop.Log;
import com.hcy.admin.service.sparePartInWarehouse.ISparePartInWarehouseService;
import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.sparePartStockAudit.SparePartStockAuditParam;
import com.hcy.admin.vo.sparePartInWarehouse.SparePartInWarehouseListVo;
import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditDetailVo;
import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditListVo;
import com.hcy.common.core.AjaxResult;
@ -36,7 +37,7 @@ public class SparePartInWarehouseController {
@GetMapping("/list")
public Object list(@Validated PageParam pageParam,
@RequestParam Map<String, String> params) {
PageResult<SparePartStockAuditListVo> list = iSparePartInWarehouseService.list(pageParam, params);
PageResult<SparePartInWarehouseListVo> list = iSparePartInWarehouseService.list(pageParam, params);
return AjaxResult.success(list);
}
/**
@ -48,7 +49,7 @@ public class SparePartInWarehouseController {
*/
@GetMapping("/detail")
public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) {
SparePartStockAuditDetailVo detail = iSparePartInWarehouseService.detail(id);
SparePartInWarehouseListVo detail = iSparePartInWarehouseService.detail(id);
return AjaxResult.success(detail);
}
@ -59,7 +60,7 @@ public class SparePartInWarehouseController {
* @param sparePartStockAuditParam
* @return Object
*/
@Log(title = "备件入库审核新增")
@Log(title = "备件入库新增")
@PostMapping("/add")
public Object add(@Validated(value = SparePartStockAuditParam.create.class) @RequestBody SparePartStockAuditParam sparePartStockAuditParam) {
iSparePartInWarehouseService.add(sparePartStockAuditParam);
@ -73,7 +74,7 @@ public class SparePartInWarehouseController {
* @param sparePartStockAuditParam
* @return Object
*/
@Log(title = "备件入库审核编辑")
@Log(title = "备件入库编辑")
@PostMapping("/edit")
public Object edit(@Validated(value = SparePartStockAuditParam.update.class) @RequestBody SparePartStockAuditParam sparePartStockAuditParam) {
iSparePartInWarehouseService.edit(sparePartStockAuditParam);
@ -87,7 +88,7 @@ public class SparePartInWarehouseController {
* @param sparePartStockAuditParam
* @return Object
*/
@Log(title = "备件入库审核删除")
@Log(title = "备件入库删除")
@PostMapping("/del")
public Object del(@Validated(value = SparePartStockAuditParam.delete.class) @RequestBody SparePartStockAuditParam sparePartStockAuditParam) {
iSparePartInWarehouseService.del(Math.toIntExact(sparePartStockAuditParam.getId()));

View File

@ -0,0 +1,98 @@
package com.hcy.admin.controller.sparePartOutWarehouse;
import com.hcy.admin.config.aop.Log;
import com.hcy.admin.service.sparePartInWarehouse.ISparePartInWarehouseService;
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.sparePartInWarehouse.SparePartInWarehouseListVo;
import com.hcy.common.core.AjaxResult;
import com.hcy.common.core.PageResult;
import com.hcy.common.validator.annotation.IDMust;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
/**
*
*/
@RestController
@RequestMapping("api/sparePartOutWarehouse")
public class SparePartOutWarehouseController {
@Resource
ISparePartOutWarehouseService iSparePartOutWarehouseService;
/**
*
*
* @author hcy
* @param pageParam
* @param params
* @return Object
*/
@GetMapping("/list")
public Object list(@Validated PageParam pageParam,
@RequestParam Map<String, String> params) {
PageResult<SparePartOutWarehouseListVo> list = iSparePartOutWarehouseService.list(pageParam, params);
return AjaxResult.success(list);
}
/**
*
*
* @author hcy
* @param id ID
* @return Object
*/
@GetMapping("/detail")
public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) {
SparePartOutWarehouseListVo detail = iSparePartOutWarehouseService.detail(id);
return AjaxResult.success(detail);
}
/**
*
*
* @author hcy
* @param sparePartStockAuditParam
* @return Object
*/
@Log(title = "备件出库新增")
@PostMapping("/add")
public Object add(@Validated(value = SparePartStockAuditParam.create.class) @RequestBody SparePartStockAuditParam sparePartStockAuditParam) {
iSparePartOutWarehouseService.add(sparePartStockAuditParam);
return AjaxResult.success();
}
/**
*
*
* @author hcy
* @param sparePartStockAuditParam
* @return Object
*/
@Log(title = "备件出库编辑")
@PostMapping("/edit")
public Object edit(@Validated(value = SparePartStockAuditParam.update.class) @RequestBody SparePartStockAuditParam sparePartStockAuditParam) {
iSparePartOutWarehouseService.edit(sparePartStockAuditParam);
return AjaxResult.success();
}
/**
*
*
* @author hcy
* @param sparePartStockAuditParam
* @return Object
*/
@Log(title = "备件出库删除")
@PostMapping("/del")
public Object del(@Validated(value = SparePartStockAuditParam.delete.class) @RequestBody SparePartStockAuditParam sparePartStockAuditParam) {
iSparePartOutWarehouseService.del(Math.toIntExact(sparePartStockAuditParam.getId()));
return AjaxResult.success();
}
}

View File

@ -110,6 +110,9 @@ public class SparePartAuditServiceImpl implements ISparePartAuditService {
model.setUnit(sparePartAuditParam.getUnit());
model.setQuantity(sparePartAuditParam.getQuantity());
model.setUnitPrice(sparePartAuditParam.getUnitPrice());
model.setIntCount(sparePartAuditParam.getIntCount());
model.setOutCount(sparePartAuditParam.getOutCount());
model.setCreateTime(System.currentTimeMillis() / 1000);
sparePartAuditMapper.insert(model);
}

View File

@ -2,8 +2,8 @@ package com.hcy.admin.service.sparePartInWarehouse;
import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.sparePartStockAudit.SparePartStockAuditParam;
import com.hcy.admin.vo.sparePartInWarehouse.SparePartInWarehouseListVo;
import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditDetailVo;
import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditListVo;
import com.hcy.common.core.PageResult;
import java.util.Map;
@ -16,21 +16,21 @@ public interface ISparePartInWarehouseService {
/**
*
*
* @author hcy
* @param pageParam
* @param params
* @return PageResult<SparePartStockAuditVo>
* @param params
* @return PageResult<SparePartInWarehouseListVo>
* @author hcy
*/
PageResult<SparePartStockAuditListVo> list(PageParam pageParam, Map<String, String> params);
PageResult<SparePartInWarehouseListVo> list(PageParam pageParam, Map<String, String> params);
/**
*
*
* @author hcy
* @param id ID
* @return SparePartStockAudit
* @return SparePartInWarehouseListVo
*/
SparePartStockAuditDetailVo detail(Integer id);
SparePartInWarehouseListVo detail(Integer id);
/**
*

View File

@ -3,24 +3,30 @@ package com.hcy.admin.service.sparePartInWarehouse.impl;
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.sparePartInWarehouse.ISparePartInWarehouseService;
import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.sparePartStockAudit.SparePartStockAuditParam;
import com.hcy.admin.vo.sparePartInWarehouse.SparePartInWarehouseListVo;
import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditDetailVo;
import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditListVo;
import com.hcy.common.constant.GlobalConstant;
import com.hcy.common.core.PageResult;
import com.hcy.common.entity.SparePartAudit.SparePartAudit;
import com.hcy.common.entity.sparePartStockAudit.SparePartStockAudit;
import com.hcy.common.entity.user.User;
import com.hcy.common.enums.Audit.AuditStateEnum;
import com.hcy.common.mapper.SparePartAudit.SparePartAuditMapper;
import com.hcy.common.mapper.sparePartStockAudit.SparePartStockAuditMapper;
import com.hcy.common.utils.TimeUtil;
import io.lettuce.core.ScriptOutputType;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import javax.annotation.Resource;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.text.SimpleDateFormat;
import java.util.*;
/**
*
@ -31,37 +37,42 @@ public class SparePartInWarehouseServiceImpl implements ISparePartInWarehouseSer
@Resource
SparePartStockAuditMapper sparePartStockAuditMapper;
@Resource
SparePartAuditMapper sparePartAuditMapper;
/**
*
*
* @author hcy
* @param pageParam
* @param params
* @return PageResult<SparePartStockAuditListVo>
* @param params
* @return PageResult<SparePartInWarehouseListVo>
* @author hcy
*/
@Override
public PageResult<SparePartStockAuditListVo> list(PageParam pageParam, Map<String, String> params) {
public PageResult<SparePartInWarehouseListVo> list(PageParam pageParam, Map<String, String> params) {
Integer page = pageParam.getPageNo();
Integer limit = pageParam.getPageSize();
QueryWrapper<SparePartStockAudit> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("in_warehouse_type",0);
queryWrapper.eq("is_delete", 0);
queryWrapper.orderByDesc("id");
sparePartStockAuditMapper.setSearch(queryWrapper, params, new String[]{
"=:receiptNumber@receipt_number:str",
"like:receiptNumber@receipt_number:str",
"=:warehouseId@warehouse_id:long",
"=:inWarehouseType@in_warehouse_type:long",
"=:outWarehouseType@out_warehouse_type:long",
"=:auditState@audit_state:int",
});
IPage<SparePartStockAudit> iPage = sparePartStockAuditMapper.selectPage(new Page<>(page, limit), queryWrapper);
List<SparePartStockAuditListVo> list = new LinkedList<>();
List<SparePartInWarehouseListVo> list = new LinkedList<>();
for(SparePartStockAudit item : iPage.getRecords()) {
SparePartStockAuditListVo vo = new SparePartStockAuditListVo();
SparePartInWarehouseListVo vo = new SparePartInWarehouseListVo();
BeanUtils.copyProperties(item, vo);
vo.setCreateTime(TimeUtil.timestampToDate(item.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(item.getUpdateTime()));
vo.setSupplierPhone(item.getSupplier() + "/" + item.getPhone());
list.add(vo);
}
@ -73,10 +84,10 @@ public class SparePartInWarehouseServiceImpl implements ISparePartInWarehouseSer
*
* @author hcy
* @param id
* @return SparePartStockAudit
* @return SparePartInWarehouseListVo
*/
@Override
public SparePartStockAuditDetailVo detail(Integer id) {
public SparePartInWarehouseListVo detail(Integer id) {
SparePartStockAudit model = sparePartStockAuditMapper.selectOne(
new QueryWrapper<SparePartStockAudit>()
.eq("id", id)
@ -85,8 +96,16 @@ public class SparePartInWarehouseServiceImpl implements ISparePartInWarehouseSer
Assert.notNull(model, "数据不存在");
SparePartStockAuditDetailVo vo = new SparePartStockAuditDetailVo();
SparePartInWarehouseListVo vo = new SparePartInWarehouseListVo();
BeanUtils.copyProperties(model, vo);
//获取待审核备件信息
List<SparePartAudit> stockAuditId = sparePartAuditMapper.selectList(
new QueryWrapper<SparePartAudit>()
.eq("stock_audit_id", model.getId())
);
vo.setSparePartAuditList(stockAuditId);
return vo;
}
@ -99,15 +118,42 @@ public class SparePartInWarehouseServiceImpl implements ISparePartInWarehouseSer
@Override
public void add(SparePartStockAuditParam sparePartStockAuditParam) {
SparePartStockAudit model = new SparePartStockAudit();
QueryWrapper<SparePartStockAudit> qw = new QueryWrapper<>();
qw.select("max(id) as id");
SparePartStockAudit sparePartStockAudit = sparePartStockAuditMapper.selectOne(qw);
if(sparePartStockAudit.getId() == null){
model.setId(1L);
}else{
model.setId(sparePartStockAudit.getId() + 1);
}
model.setWarehouseId(sparePartStockAuditParam.getWarehouseId()); // 入库仓库
model.setInWarehouseType(sparePartStockAuditParam.getInWarehouseType()); //入库类别
model.setSupplier(sparePartStockAuditParam.getSupplier()); //供应商
model.setPhone(sparePartStockAuditParam.getPhone()); // 联系电话
model.setSparePartAuditId(sparePartStockAuditParam.getSparePartAuditId()); // 备件审核id
List<SparePartAudit> sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList();
for (SparePartAudit sparePartAudit : sparePartAuditList) {
model.setReceiptNumber(generateOrderNumber()); // 单据编号
// 获取当前的用户
Object username = AdminThreadLocal.get("username");
model.setResponsiblePerson((String) username);
// 审核状态
model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus());
//单据类型0=入库单1=出库单2=仓库调拨单)
model.setReceiptType(AuditStateEnum.INWAREHOUSE.getStatus());
//model.setSparePartAuditId(sparePartStockAuditParam.getSparePartAuditId()); // 备件审核id
List<SparePartAudit> sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList();
// 使用StringBuilder来拼接id值
StringBuilder sb = new StringBuilder();
for (SparePartAudit sparePartAudit : sparePartAuditList) {
sparePartAudit.setStockAuditId(model.getId());
sparePartAudit.setUpdateTime(System.currentTimeMillis() / 1000);
sparePartAuditMapper.updateById(sparePartAudit);//插入备件审核信息
sb.append(sparePartAudit.getId()).append(",");
}
sb.deleteCharAt(sb.length() - 1); // 删除最后一个逗号
model.setSparePartAuditId(String.valueOf(sb));// 备件审核id
model.setCreateTime(System.currentTimeMillis() / 1000);
sparePartStockAuditMapper.insert(model);
}
@ -126,26 +172,22 @@ public class SparePartInWarehouseServiceImpl implements ISparePartInWarehouseSer
.last("limit 1"));
Assert.notNull(model, "数据不存在!");
model.setId(sparePartStockAuditParam.getId());
model.setReceiptNumber(sparePartStockAuditParam.getReceiptNumber());
model.setReceiptType(sparePartStockAuditParam.getReceiptType());
model.setWarehouseId(sparePartStockAuditParam.getWarehouseId());
model.setImportWarehouse(sparePartStockAuditParam.getImportWarehouse());
model.setExportWarehouse(sparePartStockAuditParam.getExportWarehouse());
model.setInWarehouseType(sparePartStockAuditParam.getInWarehouseType());
model.setSupplier(sparePartStockAuditParam.getSupplier());
model.setOutWarehouseType(sparePartStockAuditParam.getOutWarehouseType());
model.setResponsiblePerson(sparePartStockAuditParam.getResponsiblePerson());
model.setHandlingTime(sparePartStockAuditParam.getHandlingTime().getTime());
model.setAllotType(sparePartStockAuditParam.getAllotType());
model.setConsignee(sparePartStockAuditParam.getConsignee());
model.setAuditState(sparePartStockAuditParam.getAuditState());
model.setAuditResult(sparePartStockAuditParam.getAuditResult());
model.setAuditTime(sparePartStockAuditParam.getAuditTime().getTime());
model.setAuditIdea(sparePartStockAuditParam.getAuditIdea());
model.setPhone(sparePartStockAuditParam.getPhone());
model.setRemark(sparePartStockAuditParam.getRemark());
model.setWarehouseId(sparePartStockAuditParam.getWarehouseId()); // 入库仓库
model.setInWarehouseType(sparePartStockAuditParam.getInWarehouseType()); //入库类别
model.setSupplier(sparePartStockAuditParam.getSupplier()); //供应商
model.setPhone(sparePartStockAuditParam.getPhone()); // 联系电话
model.setReceiptNumber(sparePartStockAuditParam.getReceiptNumber()); // 单据编号
List<SparePartAudit> sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList();
// 使用StringBuilder来拼接id值
StringBuilder sb = new StringBuilder();
for (SparePartAudit sparePartAudit : sparePartAuditList) {
sb.append(sparePartAudit.getId()).append(",");
}
sb.deleteCharAt(sb.length() - 1); // 删除最后一个逗号
model.setSparePartAuditId(String.valueOf(sb));// 备件审核id
model.setUpdateTime(System.currentTimeMillis() / 1000);
sparePartStockAuditMapper.updateById(model);
}
@ -170,4 +212,37 @@ public class SparePartInWarehouseServiceImpl implements ISparePartInWarehouseSer
sparePartStockAuditMapper.updateById(model);
}
/**
* +6
* @return
*/
public String generateOrderNumber() {
String DATE_FORMAT = "yyyyMMdd";
int SEQUENCE_LENGTH = 6;
int sequence = 1; // 流水号从1开始
// 获取当前日期
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
String dateStr = dateFormat.format(new Date());
//查看数据库是否今日有订单编号
QueryWrapper<SparePartStockAudit> queryWrapper = new QueryWrapper<>();
queryWrapper.like("receipt_number",dateStr);
List<SparePartStockAudit> sparePartStockAudits = sparePartStockAuditMapper.selectList(queryWrapper);
int max = sparePartStockAudits.size();
if(sequence <= max){
sequence = max + 1; // 递增流水号
}
// 生成6位流水号
StringBuilder sequenceBuilder = new StringBuilder();
for (int i = 0; i < SEQUENCE_LENGTH; i++) {
sequenceBuilder.append(String.format("%0" + (SEQUENCE_LENGTH - i) + "d", sequence));
}
String truncatedString = sequenceBuilder.substring(0, 6);
// 拼接订单号
String orderNumber = dateStr + truncatedString;
return orderNumber;
}
}

View File

@ -0,0 +1,59 @@
package com.hcy.admin.service.sparePartOutWarehouse;
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.sparePartInWarehouse.SparePartInWarehouseListVo;
import com.hcy.common.core.PageResult;
import java.util.Map;
/**
*
*/
public interface ISparePartOutWarehouseService {
/**
*
*
* @param pageParam
* @param params
* @return PageResult<SparePartInWarehouseListVo>
* @author hcy
*/
PageResult<SparePartOutWarehouseListVo> list(PageParam pageParam, Map<String, String> params);
/**
*
*
* @author hcy
* @param id ID
* @return SparePartInWarehouseListVo
*/
SparePartOutWarehouseListVo detail(Integer id);
/**
*
*
* @author hcy
* @param sparePartStockAuditParam
*/
void add(SparePartStockAuditParam sparePartStockAuditParam);
/**
*
*
* @author hcy
* @param sparePartStockAuditParam
*/
void edit(SparePartStockAuditParam sparePartStockAuditParam);
/**
*
*
* @author hcy
* @param id ID
*/
void del(Integer id);
}

View File

@ -0,0 +1,246 @@
package com.hcy.admin.service.sparePartOutWarehouse.impl;
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.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.sparePartInWarehouse.SparePartInWarehouseListVo;
import com.hcy.common.core.PageResult;
import com.hcy.common.entity.SparePartAudit.SparePartAudit;
import com.hcy.common.entity.sparePartStockAudit.SparePartStockAudit;
import com.hcy.common.enums.Audit.AuditStateEnum;
import com.hcy.common.mapper.SparePartAudit.SparePartAuditMapper;
import com.hcy.common.mapper.sparePartStockAudit.SparePartStockAuditMapper;
import com.hcy.common.utils.TimeUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
*
*/
@Service
public class SparePartOutWarehouseServiceImpl implements ISparePartOutWarehouseService {
@Resource
SparePartStockAuditMapper sparePartStockAuditMapper;
@Resource
SparePartAuditMapper sparePartAuditMapper;
/**
*
*
* @param pageParam
* @param params
* @return PageResult<SparePartInWarehouseListVo>
* @author hcy
*/
public PageResult<SparePartOutWarehouseListVo> list(PageParam pageParam, Map<String, String> params) {
Integer page = pageParam.getPageNo();
Integer limit = pageParam.getPageSize();
QueryWrapper<SparePartStockAudit> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("out_warehouse_type",0);
queryWrapper.eq("is_delete", 0);
queryWrapper.orderByDesc("id");
sparePartStockAuditMapper.setSearch(queryWrapper, params, new String[]{
"like:receiptNumber@receipt_number:str",
"=:warehouseId@warehouse_id:long",
"=:outWarehouseType@out_warehouse_type:long",
"=:auditState@audit_state:int",
});
IPage<SparePartStockAudit> iPage = sparePartStockAuditMapper.selectPage(new Page<>(page, limit), queryWrapper);
List<SparePartOutWarehouseListVo> list = new LinkedList<>();
for(SparePartStockAudit item : iPage.getRecords()) {
SparePartOutWarehouseListVo vo = new SparePartOutWarehouseListVo();
BeanUtils.copyProperties(item, vo);
vo.setCreateTime(TimeUtil.timestampToDate(item.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(item.getUpdateTime()));
vo.setConsigneePhone(item.getConsignee() + "/" + item.getPhone());
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) {
SparePartStockAudit model = sparePartStockAuditMapper.selectOne(
new QueryWrapper<SparePartStockAudit>()
.eq("id", id)
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在");
SparePartOutWarehouseListVo vo = new SparePartOutWarehouseListVo();
BeanUtils.copyProperties(model, vo);
//获取待审核备件信息
List<SparePartAudit> stockAuditId = sparePartAuditMapper.selectList(
new QueryWrapper<SparePartAudit>()
.eq("stock_audit_id", model.getId())
);
vo.setSparePartAuditList(stockAuditId); // 待入库的备件
return vo;
}
/**
*
*
* @author hcy
* @param sparePartStockAuditParam
*/
@Override
public void add(SparePartStockAuditParam sparePartStockAuditParam) {
SparePartStockAudit model = new SparePartStockAudit();
QueryWrapper<SparePartStockAudit> qw = new QueryWrapper<>();
qw.select("max(id) as id");
SparePartStockAudit sparePartStockAudit = sparePartStockAuditMapper.selectOne(qw);
if(sparePartStockAudit.getId() == null){
model.setId(1L);
}else{
model.setId(sparePartStockAudit.getId() + 1);
}
model.setWarehouseId(sparePartStockAuditParam.getWarehouseId()); // 出库仓库
model.setOutWarehouseType(sparePartStockAuditParam.getOutWarehouseType()); // 出库类别0=调拨出库)
model.setConsignee(sparePartStockAuditParam.getConsignee()); // 收货单位(人员)
model.setPhone(sparePartStockAuditParam.getPhone()); // 联系电话
model.setReceiptNumber(generateOrderNumber()); // 单据编号
// 获取当前的用户
Object username = AdminThreadLocal.get("username");
model.setResponsiblePerson((String) username);
// 审核状态
model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus());
//单据类型0=入库单1=出库单2=仓库调拨单)
model.setReceiptType(AuditStateEnum.OUTWAREHOUSE.getStatus());
List<SparePartAudit> sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList();
// 使用StringBuilder来拼接id值
StringBuilder sb = new StringBuilder();
for (SparePartAudit sparePartAudit : sparePartAuditList) {
sparePartAudit.setStockAuditId(model.getId());
sparePartAudit.setUpdateTime(System.currentTimeMillis() / 1000);
sparePartAuditMapper.updateById(sparePartAudit);//插入备件审核信息
sb.append(sparePartAudit.getId()).append(",");
}
sb.deleteCharAt(sb.length() - 1); // 删除最后一个逗号
model.setSparePartAuditId(String.valueOf(sb));// 备件审核id
model.setCreateTime(System.currentTimeMillis() / 1000);
sparePartStockAuditMapper.insert(model);
}
/**
*
*
* @author hcy
* @param sparePartStockAuditParam
*/
@Override
public void edit(SparePartStockAuditParam sparePartStockAuditParam) {
SparePartStockAudit model = sparePartStockAuditMapper.selectOne(
new QueryWrapper<SparePartStockAudit>()
.eq("id", sparePartStockAuditParam.getId())
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在!");
model.setId(sparePartStockAuditParam.getId());
model.setWarehouseId(sparePartStockAuditParam.getWarehouseId()); // 出库仓库
model.setOutWarehouseType(sparePartStockAuditParam.getOutWarehouseType()); // 出库类别
model.setConsignee(sparePartStockAuditParam.getConsignee()); // 收货单位(人员)
model.setPhone(sparePartStockAuditParam.getPhone()); // 联系电话
model.setReceiptNumber(sparePartStockAuditParam.getReceiptNumber()); // 单据编号
List<SparePartAudit> sparePartAuditList = sparePartStockAuditParam.getSparePartAuditList();
// 使用StringBuilder来拼接id值
StringBuilder sb = new StringBuilder();
for (SparePartAudit sparePartAudit : sparePartAuditList) {
sb.append(sparePartAudit.getId()).append(",");
}
sb.deleteCharAt(sb.length() - 1); // 删除最后一个逗号
model.setSparePartAuditId(String.valueOf(sb));// 备件审核id
model.setUpdateTime(System.currentTimeMillis() / 1000);
sparePartStockAuditMapper.updateById(model);
}
/**
*
*
* @author hcy
* @param id ID
*/
@Override
public void del(Integer id) {
SparePartStockAudit model = sparePartStockAuditMapper.selectOne(
new QueryWrapper<SparePartStockAudit>()
.eq("id", id)
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在!");
model.setIsDelete(1);
model.setDeleteTime(System.currentTimeMillis() / 1000);
sparePartStockAuditMapper.updateById(model);
}
/**
* +6
* @return
*/
public String generateOrderNumber() {
String DATE_FORMAT = "yyyyMMdd";
int SEQUENCE_LENGTH = 6;
int sequence = 1; // 流水号从1开始
// 获取当前日期
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
String dateStr = dateFormat.format(new Date());
//查看数据库是否今日有订单编号
QueryWrapper<SparePartStockAudit> queryWrapper = new QueryWrapper<>();
queryWrapper.like("receipt_number",dateStr);
List<SparePartStockAudit> sparePartStockAudits = sparePartStockAuditMapper.selectList(queryWrapper);
int max = sparePartStockAudits.size();
if(sequence <= max){
sequence = max + 1; // 递增流水号
}
// 生成6位流水号
StringBuilder sequenceBuilder = new StringBuilder();
for (int i = 0; i < SEQUENCE_LENGTH; i++) {
sequenceBuilder.append(String.format("%0" + (SEQUENCE_LENGTH - i) + "d", sequence));
}
String truncatedString = sequenceBuilder.substring(0, 6);
// 拼接订单号
String orderNumber = dateStr + truncatedString;
return orderNumber;
}
}

View File

@ -25,8 +25,6 @@ public class SparePartAuditParam implements Serializable {
private Long id;
@NotNull(message = "stockAuditId参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "stockAuditId参数值不能少于0", groups = {create.class, update.class})
private Long stockAuditId;
@NotNull(message = "sparePartsCode参数缺失", groups = {create.class, update.class})
@ -45,9 +43,7 @@ public class SparePartAuditParam implements Serializable {
@Length(max = 255, message = "specificationsModel参数不能超出255个字符", groups = {create.class, update.class})
private String specificationsModel;
@NotNull(message = "unit参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "unit参数值不能少于0", groups = {create.class, update.class})
private Long unit;
private String unit;
@NotNull(message = "quantity参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "quantity参数值不能少于0", groups = {create.class, update.class})
@ -56,4 +52,6 @@ public class SparePartAuditParam implements Serializable {
@NotNull(message = "unitPrice参数缺失", groups = {create.class, update.class})
private BigDecimal unitPrice;
private Integer intCount;
private Integer outCount;
}

View File

@ -1,6 +1,7 @@
package com.hcy.admin.validate.sparePartStockAudit;
import com.hcy.common.entity.SparePartAudit.SparePartAudit;
import io.swagger.models.auth.In;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
@ -27,70 +28,66 @@ public class SparePartStockAuditParam implements Serializable {
private Long id;
@NotNull(message = "receiptNumber参数缺失", groups = {create.class, update.class})
@Length(max = 255, message = "receiptNumber参数不能超出255个字符", groups = {create.class, update.class})
private String receiptNumber;
@NotNull(message = "receiptType参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "receiptType参数值不能少于0", groups = {create.class, update.class})
private Long receiptType;
private Integer receiptType;
@NotNull(message = "warehouseId参数缺失", groups = {create.class, update.class})
//@NotNull(message = "warehouseId参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "warehouseId参数值不能少于0", groups = {create.class, update.class})
private Long warehouseId;
@NotNull(message = "importWarehouse参数缺失", groups = {create.class, update.class})
//@NotNull(message = "importWarehouse参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "importWarehouse参数值不能少于0", groups = {create.class, update.class})
private Long importWarehouse;
@NotNull(message = "exportWarehouse参数缺失", groups = {create.class, update.class})
//@NotNull(message = "exportWarehouse参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "exportWarehouse参数值不能少于0", groups = {create.class, update.class})
private Long exportWarehouse;
@NotNull(message = "inWarehouseType参数缺失", groups = {create.class, update.class})
//@NotNull(message = "inWarehouseType参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "inWarehouseType参数值不能少于0", groups = {create.class, update.class})
private Long inWarehouseType;
@NotNull(message = "supplier参数缺失", groups = {create.class, update.class})
//@NotNull(message = "supplier参数缺失", groups = {create.class, update.class})
@Length(max = 32, message = "supplier参数不能超出32个字符", groups = {create.class, update.class})
private String supplier;
@NotNull(message = "outWarehouseType参数缺失", groups = {create.class, update.class})
//@NotNull(message = "outWarehouseType参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "outWarehouseType参数值不能少于0", groups = {create.class, update.class})
private Long outWarehouseType;
@NotNull(message = "responsiblePerson参数缺失", groups = {create.class, update.class})
//@NotNull(message = "responsiblePerson参数缺失", groups = {create.class, update.class})
@Length(max = 32, message = "responsiblePerson参数不能超出32个字符", groups = {create.class, update.class})
private String responsiblePerson;
@NotNull(message = "handlingTime参数缺失", groups = {create.class, update.class})
// @NotNull(message = "handlingTime参数缺失", groups = {create.class, update.class})
private Date handlingTime;
@NotNull(message = "allotType参数缺失", groups = {create.class, update.class})
//@NotNull(message = "allotType参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "allotType参数值不能少于0", groups = {create.class, update.class})
private Long allotType;
@NotNull(message = "consignee参数缺失", groups = {create.class, update.class})
//@NotNull(message = "consignee参数缺失", groups = {create.class, update.class})
@Length(max = 255, message = "consignee参数不能超出255个字符", groups = {create.class, update.class})
private String consignee;
@NotNull(message = "auditState参数缺失", groups = {create.class, update.class})
//@NotNull(message = "auditState参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "auditState参数值不能少于0", groups = {create.class, update.class})
private Integer auditState;
@NotNull(message = "auditResult参数缺失", groups = {create.class, update.class})
//@NotNull(message = "auditResult参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "auditResult参数值不能少于0", groups = {create.class, update.class})
private Integer auditResult;
private Date auditTime;
@Length(max = 255, message = "auditIdea参数不能超出255个字符", groups = {create.class, update.class})
//@Length(max = 255, message = "auditIdea参数不能超出255个字符", groups = {create.class, update.class})
private String auditIdea;
@Length(max = 32, message = "phone参数不能超出32个字符", groups = {create.class, update.class})
//@Length(max = 32, message = "phone参数不能超出32个字符", groups = {create.class, update.class})
private String phone;
@Length(max = 255, message = "remark参数不能超出255个字符", groups = {create.class, update.class})
//@Length(max = 255, message = "remark参数不能超出255个字符", groups = {create.class, update.class})
private String remark;
private String sparePartAuditId; // 备件审核id

View File

@ -0,0 +1,34 @@
package com.hcy.admin.vo.SparePartOutWarehouseListVo;
import com.hcy.common.entity.SparePartAudit.SparePartAudit;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* sparePartOutWarehouseListVo
*/
@Data
public class SparePartOutWarehouseListVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // 主键id
private String receiptNumber; // 单据编号
private Long warehouseId; // 所属仓库
private Long outWarehouseType; // 出库类别0=调拨出库)
private String consignee; // 收货单位(人员)
private String phone; // 联系电话
private String responsiblePerson; // 经办人
private Long handlingTime; // 经办时间
private Integer auditState; // 审核状态0=未审核1=已审核2=已取消)
private Integer auditResult; // 审核结果0=未通过1=已通过)
private Long auditTime; // 审核时间
private String auditIdea; // 审核意见
private String createTime; // 创建时间
private String updateTime; // 更新时间
private String sparePartAuditId; // 备件审核id
private String consigneePhone; // 供应商/电话
private List<SparePartAudit> sparePartAuditList; //待入库的备件
}

View File

@ -0,0 +1,34 @@
package com.hcy.admin.vo.sparePartInWarehouse;
import com.hcy.common.entity.SparePartAudit.SparePartAudit;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* sparePartInWarehouseListVo
*/
@Data
public class SparePartInWarehouseListVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // 主键id
private String receiptNumber; // 单据编号
private Long warehouseId; // 所属仓库
private Long inWarehouseType; // 入库类别0=采购入库)
private String supplier; // 供应商
private String phone; // 联系电话
private String responsiblePerson; // 经办人
private Long handlingTime; // 经办时间
private Integer auditState; // 审核状态0=未审核1=已审核2=已取消)
private Integer auditResult; // 审核结果0=未通过1=已通过)
private Long auditTime; // 审核时间
private String auditIdea; // 审核意见
private String createTime; // 创建时间
private String updateTime; // 更新时间
private String sparePartAuditId; // 备件审核id
private String supplierPhone; // 供应商/电话
private List<SparePartAudit> sparePartAuditList; //待入库的备件
}

View File

@ -22,12 +22,14 @@ public class SparePartAudit implements Serializable {
private String sparePartsName; // 备件名称
private Long warehouseId; // 所属仓库
private String specificationsModel; // 规格型号
private Long unit; // 单位
private String unit; // 单位
private Long quantity; // 库存数量
private BigDecimal unitPrice; // 单价(元)
private Integer isDelete; // 是否删除: [0=否, 1=是]
private Long createTime; // 创建时间
private Long updateTime; // 更新时间
private Long deleteTime; // 删除时间
private Integer intCount; // 入库数量
private Integer OutCount; // 出库数量
}

View File

@ -17,7 +17,7 @@ public class SparePartStockAudit implements Serializable {
@TableId(value="id", type= IdType.AUTO)
private Long id; // 主键id
private String receiptNumber; // 单据编号
private Long receiptType; // 单据类型0=入库单1=出库单2=仓库调拨单)
private Integer receiptType; // 单据类型0=入库单1=出库单2=仓库调拨单)
private Long warehouseId; // 所属仓库
private Long importWarehouse; // 调入仓库
private Long exportWarehouse; // 调出仓库

View File

@ -0,0 +1,61 @@
package com.hcy.common.enums.Audit;
import com.google.common.collect.Maps;
import com.hcy.common.enums.coupon.UserCouponStatusEnum;
import java.util.Map;
/**
*
* @author dabin
*/
public enum AuditStateEnum {
UNREVIEWED(0, "未审核"),
AUDITED(1, "已审核"),
CANCELED(2,"已取消"),
NOTPASS(0,"未通过"),
ALREADYPASSED(1, "已通过"),
// 单据类型0=入库单1=出库单2=仓库调拨单)
INWAREHOUSE(0,"入库单"),
OUTWAREHOUSE(1, "出库单"),
ALLOT(2,"仓库调拨单");
private final int status;
private final String desc;
AuditStateEnum(int status, String desc) {
this.status = status;
this.desc = desc;
}
/**
*
*
* @return int
* @author dabin
*/
public int getStatus() {
return this.status;
}
/**
*
*
* @return String
* @author dabin
*/
public String getDesc() {
return this.desc;
}
public static Map<Integer, String> getMap() {
Map<Integer, String> map = Maps.newHashMap();
for (AuditStateEnum auditStateEnum : AuditStateEnum.values()) {
map.put(auditStateEnum.status, auditStateEnum.desc);
}
return map;
}
}