【admin】新增#备件采购管理

dev
renfan 2024-08-08 21:13:14 +08:00
parent 0127551a59
commit e811bb95ec
16 changed files with 721 additions and 20 deletions

View File

@ -103,4 +103,18 @@ public class DictTypeController {
return AjaxResult.success(); return AjaxResult.success();
} }
/**
*
*
* @author fzr
* @param pageParam
* @param params
* @return Object
*/
@GetMapping("/allDataList")
public Object allDataList(@Validated PageParam pageParam,
@RequestParam Map<String, String> params) {
PageResult<DictTypeVo> list = iSettingDictTypeService.allDataList(pageParam, params);
return AjaxResult.success(list);
}
} }

View File

@ -0,0 +1,98 @@
package com.hcy.admin.controller.sparePartPurchase;
import com.hcy.admin.config.aop.Log;
import com.hcy.admin.service.SparePartReceive.ISparePartReceiveService;
import com.hcy.admin.service.sparePartPurchase.ISparePartPurchaseService;
import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.sparePartStockAudit.SparePartStockAuditParam;
import com.hcy.admin.vo.sparePartPurchase.SparePartPurchaseListVo;
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;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
/**
*
*/
@RestController
@RequestMapping("api/sparePartPurchase")
public class sparePartPurchaseController {
@Resource
ISparePartPurchaseService iSparePartPurchaseService;
/**
*
*
* @author hcy
* @param pageParam
* @param params
* @return Object
*/
@GetMapping("/list")
public Object list(@Validated PageParam pageParam,
@RequestParam Map<String, String> params) {
PageResult<SparePartPurchaseListVo> list = iSparePartPurchaseService.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) {
SparePartPurchaseListVo detail = iSparePartPurchaseService.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) {
iSparePartPurchaseService.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) {
iSparePartPurchaseService.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) {
iSparePartPurchaseService.del(Math.toIntExact(sparePartStockAuditParam.getId()));
return AjaxResult.success();
}
}

View File

@ -8,6 +8,7 @@ import com.hcy.admin.service.SparePartReceive.ISparePartReceiveService;
import com.hcy.admin.service.sparePartOutWarehouse.ISparePartOutWarehouseService; import com.hcy.admin.service.sparePartOutWarehouse.ISparePartOutWarehouseService;
import com.hcy.admin.validate.common.PageParam; import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.sparePartStockAudit.SparePartStockAuditParam; import com.hcy.admin.validate.sparePartStockAudit.SparePartStockAuditParam;
import com.hcy.admin.vo.SparePartAudit.SparePartAuditListVo;
import com.hcy.admin.vo.SparePartOutWarehouseListVo.SparePartOutWarehouseListVo; import com.hcy.admin.vo.SparePartOutWarehouseListVo.SparePartOutWarehouseListVo;
import com.hcy.admin.vo.sparePartReceive.SparePartReceiveListVo; import com.hcy.admin.vo.sparePartReceive.SparePartReceiveListVo;
import com.hcy.common.core.PageResult; import com.hcy.common.core.PageResult;
@ -80,7 +81,11 @@ public class SparePartReceiveServiceImpl implements ISparePartReceiveService {
vo.setCreateTime(TimeUtil.timestampToDate(item.getCreateTime())); vo.setCreateTime(TimeUtil.timestampToDate(item.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(item.getUpdateTime())); vo.setUpdateTime(TimeUtil.timestampToDate(item.getUpdateTime()));
vo.setHandlingTime(TimeUtil.timestampToDate(item.getHandlingTime())); //经办时间 vo.setHandlingTime(TimeUtil.timestampToDate(item.getHandlingTime())); //经办时间
vo.setRecipientAndPhone(item.getRecipient() + "/" + item.getRecipientPhone()); //领料员工/联系电话 if(item.getRecipient() != null && item.getRecipientPhone() != null){
vo.setRecipientAndPhone(item.getRecipient() + "/" + item.getRecipientPhone()); //领料员工/联系电话
}else{
vo.setRecipientAndPhone("--");
}
int number = 0; //领用数量 int number = 0; //领用数量
//获取待审核备件信息 //获取待审核备件信息
List<SparePartAudit> stockAuditId = sparePartAuditMapper.selectList( List<SparePartAudit> stockAuditId = sparePartAuditMapper.selectList(
@ -89,7 +94,7 @@ public class SparePartReceiveServiceImpl implements ISparePartReceiveService {
.eq("is_delete", 0) .eq("is_delete", 0)
); );
//获取备件信息 //获取备件信息
List<SparePartAudit> listVo = new ArrayList<>(); List<SparePartAuditListVo> listVo = new ArrayList<>();
for (SparePartAudit sparePartAudit : stockAuditId) { for (SparePartAudit sparePartAudit : stockAuditId) {
SparePart sparePart = sparePartMapper.selectOne( SparePart sparePart = sparePartMapper.selectOne(
new QueryWrapper<SparePart>() new QueryWrapper<SparePart>()
@ -97,7 +102,7 @@ public class SparePartReceiveServiceImpl implements ISparePartReceiveService {
.eq("is_delete", 0) .eq("is_delete", 0)
.last("limit 1")); .last("limit 1"));
SparePartAudit sparePartAudit1 = new SparePartAudit(); SparePartAuditListVo sparePartAudit1 = new SparePartAuditListVo();
BeanUtils.copyProperties(sparePart, sparePartAudit1); BeanUtils.copyProperties(sparePart, sparePartAudit1);
sparePartAudit1.setId(sparePartAudit.getId()); sparePartAudit1.setId(sparePartAudit.getId());
sparePartAudit1.setSparePartsId(sparePart.getId()); sparePartAudit1.setSparePartsId(sparePart.getId());
@ -143,7 +148,7 @@ public class SparePartReceiveServiceImpl implements ISparePartReceiveService {
.eq("is_delete", 0) .eq("is_delete", 0)
); );
//获取备件信息 //获取备件信息
List<SparePartAudit> listVo = new ArrayList<>(); List<SparePartAuditListVo> listVo = new ArrayList<>();
for (SparePartAudit sparePartAudit : stockAuditId) { for (SparePartAudit sparePartAudit : stockAuditId) {
SparePart sparePart = sparePartMapper.selectOne( SparePart sparePart = sparePartMapper.selectOne(
new QueryWrapper<SparePart>() new QueryWrapper<SparePart>()
@ -151,12 +156,20 @@ public class SparePartReceiveServiceImpl implements ISparePartReceiveService {
.eq("is_delete", 0) .eq("is_delete", 0)
.last("limit 1")); .last("limit 1"));
SparePartAudit sparePartAudit1 = new SparePartAudit(); SparePartAuditListVo sparePartAudit1 = new SparePartAuditListVo();
BeanUtils.copyProperties(sparePart, sparePartAudit1); BeanUtils.copyProperties(sparePart, sparePartAudit1);
sparePartAudit1.setId(sparePartAudit.getId()); sparePartAudit1.setId(sparePartAudit.getId());
sparePartAudit1.setSparePartsId(sparePart.getId()); sparePartAudit1.setSparePartsId(sparePart.getId()); // 备件id
sparePartAudit1.setStockAuditId(sparePartAudit.getStockAuditId()); sparePartAudit1.setStockAuditId(sparePartAudit.getStockAuditId()); // 出入库审核id
sparePartAudit1.setUnit(sparePart.getUnit()); //单位
sparePartAudit1.setCount(sparePartAudit.getCount()); // 出库数量 sparePartAudit1.setCount(sparePartAudit.getCount()); // 出库数量
sparePartAudit1.setQuantity(sparePart.getQuantity()); //库存数量
Warehouse warehouse = warehouseMapper.selectOne(
new QueryWrapper<Warehouse>()
.eq("id", sparePart.getWarehouseId())
.eq("is_delete", 0)
.last("limit 1"));
sparePartAudit1.setWarehouseName(warehouse.getWarehouseName());
listVo.add(sparePartAudit1); listVo.add(sparePartAudit1);
} }
vo.setSparePartAuditList(listVo); vo.setSparePartAuditList(listVo);

View File

@ -64,4 +64,13 @@ public interface ISettingDictTypeService {
*/ */
void del(List<Integer> ids); void del(List<Integer> ids);
/**
*
*
* @author fzr
* @param pageParam
* @param params
* @return PageResult<DictDataVo>
*/
PageResult<DictTypeVo> allDataList(PageParam pageParam, Map<String, String> params);
} }

View File

@ -53,7 +53,7 @@ public class SettingDictDataServiceImpl implements ISettingDictDataService {
queryWrapper.select("id,type_id,name,value,remark,sort,status,create_time,update_time"); queryWrapper.select("id,type_id,name,value,remark,sort,status,create_time,update_time");
queryWrapper.eq("is_delete", 0); queryWrapper.eq("is_delete", 0);
queryWrapper.eq("type_id", dictType.getId()); queryWrapper.eq("type_id", dictType.getId());
queryWrapper.orderByDesc("id"); queryWrapper.orderByDesc("sort");
dictDataMapper.setSearch(queryWrapper, params, new String[]{ dictDataMapper.setSearch(queryWrapper, params, new String[]{
"like:name:str", "like:name:str",
@ -100,7 +100,7 @@ public class SettingDictDataServiceImpl implements ISettingDictDataService {
queryWrapper.select("id,type_id,name,value,remark,sort,status,create_time,update_time"); queryWrapper.select("id,type_id,name,value,remark,sort,status,create_time,update_time");
queryWrapper.eq("type_id", dictType.getId()); queryWrapper.eq("type_id", dictType.getId());
queryWrapper.eq("is_delete", 0); queryWrapper.eq("is_delete", 0);
queryWrapper.orderByDesc("id"); queryWrapper.orderByDesc("sort");
dictDataMapper.setSearch(queryWrapper, params, new String[]{ dictDataMapper.setSearch(queryWrapper, params, new String[]{
"like:name:str", "like:name:str",

View File

@ -7,15 +7,22 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hcy.admin.service.setting.ISettingDictTypeService; import com.hcy.admin.service.setting.ISettingDictTypeService;
import com.hcy.admin.validate.common.PageParam; import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.setting.DictTypeParam; import com.hcy.admin.validate.setting.DictTypeParam;
import com.hcy.admin.vo.SparePartAudit.SparePartAuditListVo;
import com.hcy.admin.vo.setting.DictDataVo;
import com.hcy.admin.vo.setting.DictTypeVo; import com.hcy.admin.vo.setting.DictTypeVo;
import com.hcy.common.core.PageResult; import com.hcy.common.core.PageResult;
import com.hcy.common.entity.SparePartAudit.SparePartAudit;
import com.hcy.common.entity.setting.DictData;
import com.hcy.common.entity.setting.DictType; import com.hcy.common.entity.setting.DictType;
import com.hcy.common.entity.sparePart.SparePart;
import com.hcy.common.mapper.setting.DictDataMapper;
import com.hcy.common.mapper.setting.DictTypeMapper; import com.hcy.common.mapper.setting.DictTypeMapper;
import com.hcy.common.utils.TimeUtil; import com.hcy.common.utils.TimeUtil;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -29,6 +36,9 @@ public class SettingDictTypeServiceImpl implements ISettingDictTypeService {
@Resource @Resource
DictTypeMapper dictTypeMapper; DictTypeMapper dictTypeMapper;
@Resource
DictDataMapper dictDataMapper;
/** /**
* *
* *
@ -202,4 +212,57 @@ public class SettingDictTypeServiceImpl implements ISettingDictTypeService {
} }
} }
/**
*
*
* @author fzr
* @param pageParam
* @param params
* @return PageResult<DictDataVo>
*/
@Override
public PageResult<DictTypeVo> allDataList(PageParam pageParam, Map<String, String> params) {
Integer page = pageParam.getPageNo();
Integer limit = pageParam.getPageSize();
QueryWrapper<DictType> queryWrapper = new QueryWrapper<>();
queryWrapper.select("id,dict_name,dict_type,dict_remark,dict_status,create_time,update_time");
queryWrapper.eq("is_delete", 0);
queryWrapper.orderByDesc("id");
dictTypeMapper.setSearch(queryWrapper, params, new String[]{
"like:dictName@dict_name:str",
"like:dictType@dict_type:str",
"=:dictStatus@dict_status:int",
});
IPage<DictType> iPage = dictTypeMapper.selectPage(new Page<>(page, limit), queryWrapper);
List<DictTypeVo> list = new LinkedList<>();
for (DictType dictType : iPage.getRecords()) {
DictTypeVo vo = new DictTypeVo();
BeanUtils.copyProperties(dictType, vo);
vo.setCreateTime(TimeUtil.timestampToDate(dictType.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(dictType.getUpdateTime()));
//获取字典数据
List<DictData> dictDataList = dictDataMapper.selectList(
new QueryWrapper<DictData>()
.eq("type_id", dictType.getId())
.eq("is_delete", 0)
);
//获取字典数据
List<DictDataVo> listVo = new ArrayList<>();
for (DictData dictData : dictDataList) {
DictDataVo dictDataVo = new DictDataVo();
BeanUtils.copyProperties(dictData, dictDataVo);
listVo.add(dictDataVo);
}
vo.setDictDataVoList(listVo);
list.add(vo);
}
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
}
} }

View File

@ -0,0 +1,59 @@
package com.hcy.admin.service.sparePartPurchase;
import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.sparePartStockAudit.SparePartStockAuditParam;
import com.hcy.admin.vo.sparePartPurchase.SparePartPurchaseListVo;
import com.hcy.admin.vo.sparePartReceive.SparePartReceiveListVo;
import com.hcy.common.core.PageResult;
import java.util.Map;
/**
*
*/
public interface ISparePartPurchaseService {
/**
*
*
* @param pageParam
* @param params
* @return PageResult<SparePartPurchaseListVo>
* @author hcy
*/
PageResult<SparePartPurchaseListVo> list(PageParam pageParam, Map<String, String> params);
/**
*
*
* @author hcy
* @param id ID
* @return SparePartPurchaseListVo
*/
SparePartPurchaseListVo 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,394 @@
package com.hcy.admin.service.sparePartPurchase.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.sparePartPurchase.ISparePartPurchaseService;
import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.sparePartStockAudit.SparePartStockAuditParam;
import com.hcy.admin.vo.SparePartAudit.SparePartAuditListVo;
import com.hcy.admin.vo.sparePartPurchase.SparePartPurchaseListVo;
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;
import com.hcy.common.entity.sparePartStockAudit.SparePartStockAudit;
import com.hcy.common.entity.warehouse.Warehouse;
import com.hcy.common.enums.Audit.AuditStateEnum;
import com.hcy.common.mapper.SparePartAudit.SparePartAuditMapper;
import com.hcy.common.mapper.sparePart.SparePartMapper;
import com.hcy.common.mapper.sparePartStockAudit.SparePartStockAuditMapper;
import com.hcy.common.mapper.warehouse.WarehouseMapper;
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.*;
/**
*
*/
@Service
public class SparePartPurchaseServiceImpl implements ISparePartPurchaseService {
@Resource
SparePartStockAuditMapper sparePartStockAuditMapper;
@Resource
SparePartAuditMapper sparePartAuditMapper;
@Resource
SparePartMapper sparePartMapper;
@Resource
WarehouseMapper warehouseMapper;
/**
*
*
* @param pageParam
* @param params
* @return PageResult<SparePartPurchaseListVo>
* @author hcy
*/
public PageResult<SparePartPurchaseListVo> list(PageParam pageParam, Map<String, String> params) {
Integer page = pageParam.getPageNo();
Integer limit = pageParam.getPageSize();
QueryWrapper<SparePartStockAudit> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("receipt_type",1);
queryWrapper.eq("is_delete", 0);
queryWrapper.orderByDesc("id");
sparePartStockAuditMapper.setSearch(queryWrapper, params, new String[]{
"like:receiptNumber@receipt_number:str",
"=:deliveryMethod@delivery_method:int",
"like:responsiblePerson@responsible_person:str",
"=:purchaseStatus@purchase_status:int",
"datetime:createTimeStart-createTimeEnd@create_time:str",
});
IPage<SparePartStockAudit> iPage = sparePartStockAuditMapper.selectPage(new Page<>(page, limit), queryWrapper);
List<SparePartPurchaseListVo> list = new LinkedList<>();
for(SparePartStockAudit item : iPage.getRecords()) {
SparePartPurchaseListVo vo = new SparePartPurchaseListVo();
BeanUtils.copyProperties(item, vo);
vo.setCreateTime(TimeUtil.timestampToDate(item.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(item.getUpdateTime()));
vo.setHandlingTime(TimeUtil.timestampToDate(item.getHandlingTime())); //经办时间
vo.setResponsiblePersonPhone(vo.getResponsiblePerson() + "/" + vo.getPhone()); //采购人/联系电话
//获取待审核备件信息
List<SparePartAudit> stockAuditId = sparePartAuditMapper.selectList(
new QueryWrapper<SparePartAudit>()
.eq("stock_audit_id", item.getId())
.eq("is_delete", 0)
);
//获取备件信息
List<SparePartAuditListVo> 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"));
SparePartAuditListVo sparePartAudit1 = new SparePartAuditListVo();
BeanUtils.copyProperties(sparePart, sparePartAudit1);
sparePartAudit1.setId(sparePartAudit.getId());
sparePartAudit1.setSparePartsId(sparePart.getId());
sparePartAudit1.setStockAuditId(sparePartAudit.getStockAuditId());
sparePartAudit1.setCount(sparePartAudit.getCount()); // 出库数量
listVo.add(sparePartAudit1);
}
vo.setSparePartAuditList(listVo);
list.add(vo);
}
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
}
/**
*
*
* @author hcy
* @param id
* @return SparePartPurchaseListVo
*/
@Override
public SparePartPurchaseListVo detail(Integer id) {
SparePartStockAudit model = sparePartStockAuditMapper.selectOne(
new QueryWrapper<SparePartStockAudit>()
.eq("id", id)
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在");
SparePartPurchaseListVo vo = new SparePartPurchaseListVo();
BeanUtils.copyProperties(model, vo);
Warehouse warehouseName = warehouseMapper.selectOne(
new QueryWrapper<Warehouse>()
.eq("id", model.getWarehouseId())
.eq("is_delete", 0)
.last("limit 1"));
vo.setWarehouseName(warehouseName.getWarehouseName());
//获取待审核备件信息
List<SparePartAudit> stockAuditId = sparePartAuditMapper.selectList(
new QueryWrapper<SparePartAudit>()
.eq("stock_audit_id", model.getId())
.eq("is_delete", 0)
);
//获取备件信息
List<SparePartAuditListVo> 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"));
SparePartAuditListVo sparePartAudit1 = new SparePartAuditListVo();
BeanUtils.copyProperties(sparePart, sparePartAudit1);
sparePartAudit1.setId(sparePartAudit.getId());
sparePartAudit1.setSparePartsId(sparePart.getId()); // 备件id
sparePartAudit1.setStockAuditId(sparePartAudit.getStockAuditId()); // 出入库审核id
sparePartAudit1.setUnit(sparePart.getUnit()); //单位
sparePartAudit1.setCount(sparePartAudit.getCount()); // 出库数量
sparePartAudit1.setQuantity(sparePart.getQuantity()); //库存数量
Warehouse warehouse = warehouseMapper.selectOne(
new QueryWrapper<Warehouse>()
.eq("id", sparePart.getWarehouseId())
.eq("is_delete", 0)
.last("limit 1"));
sparePartAudit1.setWarehouseName(warehouse.getWarehouseName());
listVo.add(sparePartAudit1);
}
vo.setSparePartAuditList(listVo);
vo.setResponsiblePersonPhone(vo.getResponsiblePerson() + "/" + vo.getPhone()); //采购人/联系电话
vo.setHandlingTime(TimeUtil.timestampToDate(model.getHandlingTime())); //经办时间
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 == null){
model.setId(1L);
}else{
model.setId(sparePartStockAudit.getId() + 1);
}
model.setWarehouseId(sparePartStockAuditParam.getWarehouseId()); // 出库仓库
model.setOutInWarehouseType(sparePartStockAuditParam.getOutInWarehouseType()); // 出库类别 2=员工领料3=销售出库)
model.setPhone(sparePartStockAuditParam.getPhone()); // 联系电话
model.setReceiptNumber(generateOrderNumber()); // 单据编号
model.setShippingAddress(sparePartStockAuditParam.getShippingAddress()); //收货地址
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");
model.setResponsiblePerson((String) username); // 经办人
model.setConsignee((String) username); // 收货单位(人员)
model.setHandlingTime(System.currentTimeMillis() / 1000); //经办时间
// 审核状态
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 insertSparePartAudit = new SparePartAudit();
insertSparePartAudit.setSparePartsId(sparePartAudit.getId()); //备件id
sb.append(sparePartAudit.getId()).append(",");
insertSparePartAudit.setCount(sparePartAudit.getCount()); //备件出库数量
insertSparePartAudit.setStockAuditId(model.getId()); // 出入库审核id
insertSparePartAudit.setCreateTime(System.currentTimeMillis() / 1000);
sparePartAuditMapper.insert(insertSparePartAudit);//插入备件审核信息
}
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.setOutInWarehouseType(sparePartStockAuditParam.getOutInWarehouseType()); // 出库类别 2=员工领料3=销售出库)
model.setPhone(sparePartStockAuditParam.getPhone()); // 联系电话
model.setReceiptNumber(generateOrderNumber()); // 单据编号
model.setShippingAddress(sparePartStockAuditParam.getShippingAddress()); //收货地址
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");
model.setResponsiblePerson((String) username); // 经办人
model.setConsignee((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();
List<SparePartAudit> auditList = sparePartAuditMapper.selectList(
new QueryWrapper<SparePartAudit>()
.eq("stock_audit_id", model.getId())
.eq("is_delete", 0));
for (SparePartAudit sparePartAudit : auditList) {
//将旧备件审核信息删除
SparePartAudit delectSparePartAudit = sparePartAuditMapper.selectOne(
new QueryWrapper<SparePartAudit>()
.eq("stock_audit_id", model.getId())
.eq("is_delete", 0)
.last("limit 1"));
if(delectSparePartAudit != null){
delectSparePartAudit.setIsDelete(1);
delectSparePartAudit.setDeleteTime(System.currentTimeMillis() / 1000);
sparePartAuditMapper.updateById(delectSparePartAudit);
}
}
for (SparePartAudit sparePartAudit : sparePartAuditList) {
//插入新的备件审核信息
SparePartAudit insertSparePartAudit = new SparePartAudit();
if(sparePartAudit.getSparePartsId() != null){
insertSparePartAudit.setSparePartsId(sparePartAudit.getSparePartsId()); //备件id
}else {
insertSparePartAudit.setSparePartsId(sparePartAudit.getId());
}
sb.append(sparePartAudit.getId()).append(",");
insertSparePartAudit.setCount(sparePartAudit.getCount()); //备件出库数量
insertSparePartAudit.setStockAuditId(model.getId()); // 出入库审核id
insertSparePartAudit.setUpdateTime(System.currentTimeMillis() / 1000);
sparePartAuditMapper.insert(insertSparePartAudit);//插入备件审核信息
}
//如果是已取消状态编辑改成未审核
if(model.getAuditState() == AuditStateEnum.CANCELED.getStatus()){
model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus());
}
//已审核,但不通过的,重新编辑之后状态也要变成未审核,审核结果改成空
if(model.getAuditState() == AuditStateEnum.AUDITED.getStatus()
&& model.getAuditResult() == AuditStateEnum.NOTPASS.getStatus()){
model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus());
model.setAuditResult(null);
}
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

@ -1,5 +1,6 @@
package com.hcy.admin.validate.SparePartAudit; package com.hcy.admin.validate.SparePartAudit;
import io.swagger.models.auth.In;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;
@ -45,9 +46,7 @@ public class SparePartAuditParam implements Serializable {
private String unit; private String unit;
@NotNull(message = "quantity参数缺失", groups = {create.class, update.class}) private Integer quantity;
@DecimalMin(value = "0", message = "quantity参数值不能少于0", groups = {create.class, update.class})
private Long quantity;
@NotNull(message = "unitPrice参数缺失", groups = {create.class, update.class}) @NotNull(message = "unitPrice参数缺失", groups = {create.class, update.class})
private BigDecimal unitPrice; private BigDecimal unitPrice;

View File

@ -14,16 +14,17 @@ public class SparePartAuditListVo implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private Long id; // 主键id private Long id; // 主键id
private Long sparePartsId; // 备件id
private Long stockAuditId; // 出入库审核id private Long stockAuditId; // 出入库审核id
private String sparePartsCode; // 备件编码 private String sparePartsCode; // 备件编码
private String sparePartsName; // 备件名称 private String sparePartsName; // 备件名称
private Long warehouseId; // 所属仓库 private Long warehouseId; // 所属仓库
private String specificationsModel; // 规格型号 private String specificationsModel; // 规格型号
private Long unit; // 单位 private String unit; // 单位
private Long quantity; // 库存数量 private Integer quantity; // 库存数量
private BigDecimal unitPrice; // 单价(元) private BigDecimal unitPrice; // 单价(元)
private String createTime; // 创建时间 private String createTime; // 创建时间
private String updateTime; // 更新时间 private String updateTime; // 更新时间
private String warehouseName; // 所属仓库名 private String warehouseName; // 所属仓库名
private Integer count; // 出入库数量
} }

View File

@ -3,6 +3,7 @@ package com.hcy.admin.vo.setting;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
/** /**
* Vo * Vo
@ -19,5 +20,5 @@ public class DictTypeVo implements Serializable {
private Integer dictStatus; // 字典状态 private Integer dictStatus; // 字典状态
private String createTime; // 创建时间 private String createTime; // 创建时间
private String updateTime; // 更新时间 private String updateTime; // 更新时间
private List<DictDataVo> dictDataVoList; //字典数据
} }

View File

@ -19,7 +19,7 @@ public class SparePartDetailVo implements Serializable {
private Long warehouseId; // 所属仓库 private Long warehouseId; // 所属仓库
private String specificationsModel; // 规格型号 private String specificationsModel; // 规格型号
private String unit; // 单位 private String unit; // 单位
private Long quantity; // 库存数量 private Integer quantity; // 库存数量
private BigDecimal unitPrice; // 单价 private BigDecimal unitPrice; // 单价
private String warehouseName; // 所属仓库名 private String warehouseName; // 所属仓库名
} }

View File

@ -19,7 +19,7 @@ public class SparePartListVo implements Serializable {
private Long warehouseId; // 所属仓库 private Long warehouseId; // 所属仓库
private String specificationsModel; // 规格型号 private String specificationsModel; // 规格型号
private String unit; // 单位 private String unit; // 单位
private Long quantity; // 库存数量 private Integer quantity; // 库存数量
private String createTime; // 创建时间 private String createTime; // 创建时间
private String updateTime; // 更新时间 private String updateTime; // 更新时间
private BigDecimal unitPrice; // 单价 private BigDecimal unitPrice; // 单价

View File

@ -0,0 +1,48 @@
package com.hcy.admin.vo.sparePartPurchase;
import com.hcy.admin.vo.SparePartAudit.SparePartAuditListVo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* SparePartPurchaseListVo
*/
@Data
public class SparePartPurchaseListVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // 主键id
private String receiptNumber; // 单据编号
private Long warehouseId; // 所属仓库
private String consignee; // 收货单位(人员)
private String phone; // 联系电话
private String responsiblePerson; // 经办人
private String 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<SparePartAuditListVo> sparePartAuditList; //待入库的备件
private String warehouseName; // 所属仓库名
private Long outInWarehouseType; // 出入库类别0=采购入库1=库存调拨2=员工领料3=销售出库)
private String orderId; //订单编号
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 Integer deliveryMethod; //配送方式0=物流快递1=上门取件2=送货上门)
private String responsiblePersonPhone; //采购人/联系电话
private String createTimeStart;
private String createTimeEnd;
}

View File

@ -1,5 +1,6 @@
package com.hcy.admin.vo.sparePartReceive; package com.hcy.admin.vo.sparePartReceive;
import com.hcy.admin.vo.SparePartAudit.SparePartAuditListVo;
import com.hcy.common.entity.SparePartAudit.SparePartAudit; import com.hcy.common.entity.SparePartAudit.SparePartAudit;
import lombok.Data; import lombok.Data;
@ -29,7 +30,7 @@ public class SparePartReceiveListVo implements Serializable {
private String updateTime; // 更新时间 private String updateTime; // 更新时间
private String sparePartAuditId; // 备件审核id private String sparePartAuditId; // 备件审核id
private String consigneePhone; // 收货单位(人员)/电话 private String consigneePhone; // 收货单位(人员)/电话
private List<SparePartAudit> sparePartAuditList; //待入库的备件 private List<SparePartAuditListVo> sparePartAuditList; //待入库的备件
private String warehouseName; // 所属仓库名 private String warehouseName; // 所属仓库名
private Long outInWarehouseType; // 出入库类别0=采购入库1=库存调拨2=员工领料3=销售出库) private Long outInWarehouseType; // 出入库类别0=采购入库1=库存调拨2=员工领料3=销售出库)
@ -45,5 +46,6 @@ public class SparePartReceiveListVo implements Serializable {
private String shipAddress; //发货地址 private String shipAddress; //发货地址
private String logisticsCompany; //物流公司 private String logisticsCompany; //物流公司
private String trackingNumber; //物流编号 private String trackingNumber; //物流编号
private Integer deliveryMethod; //配送方式0=物流快递1=上门取件2=送货上门)
private String recipientAndPhone; //领用员工/联系电话 private String recipientAndPhone; //领用员工/联系电话
} }

View File

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