制造库存
parent
5e55f21584
commit
1bfbcf123f
|
|
@ -48,7 +48,9 @@ public interface PointRepository extends JpaRepository<Point, Long>, JpaSpecific
|
|||
|
||||
@Query(value = "select p.code,area.`name` areaName from base_point p \n" +
|
||||
"left join base_area area on area.id=p.area_id " +
|
||||
" where (area.name=:areaName or :areaName is null) and p.description='自由货位标签'", nativeQuery = true)
|
||||
List<PointZyPrint> queryPrintAll(String areaName);
|
||||
" where (area.name=:areaName or :areaName is null) " +
|
||||
" and (p.code like CONCAT('%',:pointCode,'%') or :pointCode is null) " +
|
||||
"and p.bqlx='自由货位标签'", nativeQuery = true)
|
||||
List<PointZyPrint> queryPrintAll(String areaName,String pointCode);
|
||||
|
||||
}
|
||||
|
|
@ -202,7 +202,7 @@ public class PointController {
|
|||
public ResponseEntity<Object> queryPointPrintList(PointQueryCriteria criteria){
|
||||
RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class);
|
||||
redisUtils.del(SecurityUtils.getCurrentUsername()+"_BiaoQian_ZY");
|
||||
List<PointZyPrint> list=pointRepository.queryPrintAll(criteria.getAreaName());
|
||||
List<PointZyPrint> list=pointRepository.queryPrintAll(criteria.getAreaName(),criteria.getCode());
|
||||
redisUtils.set(SecurityUtils.getCurrentUsername()+"_BiaoQian_ZY", JsonUtil.toJson(list));
|
||||
return new ResponseEntity<>(list,HttpStatus.OK);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -94,12 +94,15 @@ public class ImportProductionPlanServiceImpl implements ImportProductionPlanServ
|
|||
}
|
||||
maps.put(zcdx+machineNo,IDNO);
|
||||
}
|
||||
int hyCount = productionPlanRepository.existsGwHyIdno(IDNO,zcdx,machineNo);
|
||||
if (hyCount > 0) {
|
||||
throw new BadRequestException( "大于" + IDNO + "存在已耗用数据");
|
||||
} else {
|
||||
List<ProductionPlan> productionPlans = productionPlanRepository.findByGwIdnoList(IDNO ,zcdx,machineNo);
|
||||
productionPlanRepository.deleteAll(productionPlans);
|
||||
//如果IDNO为自编码,则不校验直接存储
|
||||
if(IDNO.indexOf("-")<0) {
|
||||
int hyCount = productionPlanRepository.existsGwHyIdno(IDNO, zcdx, machineNo);
|
||||
if (hyCount > 0) {
|
||||
throw new BadRequestException("大于" + IDNO + "存在已耗用数据");
|
||||
} else {
|
||||
List<ProductionPlan> productionPlans = productionPlanRepository.findByGwIdnoList(IDNO, zcdx, machineNo);
|
||||
productionPlanRepository.deleteAll(productionPlans);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
package com.youchain.businessdata.inputJson.buttenJson;
|
||||
|
||||
import com.youchain.basicdata.domain.Point;
|
||||
import com.youchain.businessdata.domain.Inventory;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class InvYW {
|
||||
//目标库位
|
||||
private Point dstPoint;
|
||||
//目标库位
|
||||
private Long id;
|
||||
//移动数量
|
||||
private double rmNumber;
|
||||
|
||||
}
|
||||
|
|
@ -25,6 +25,7 @@ import com.youchain.basicdata.repository.BomAccountRepository;
|
|||
import com.youchain.basicdata.repository.PointRepository;
|
||||
import com.youchain.businessdata.domain.*;
|
||||
import com.youchain.businessdata.inputJson.XdMoveReq;
|
||||
import com.youchain.businessdata.inputJson.buttenJson.InvYW;
|
||||
import com.youchain.businessdata.inputJson.buttenJson.InventoryButton;
|
||||
import com.youchain.businessdata.repository.InventoryRepository;
|
||||
import com.youchain.businessdata.repository.TaskRepository;
|
||||
|
|
@ -103,7 +104,8 @@ public class InventoryController {
|
|||
@GetMapping(value = "/downloadZz")
|
||||
@AnonymousAccess
|
||||
public void downloadZz(HttpServletResponse response, InventoryQueryCriteria criteria) throws Exception {
|
||||
inventoryService.downloadZz(inventoryService.queryAll(criteria), response);
|
||||
List<InventoryQueryDto> all= inventoryService.queryInvAll(criteria);
|
||||
inventoryService.downloadZz(all, response);
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
|
|
@ -123,7 +125,7 @@ public class InventoryController {
|
|||
@ApiOperation("查询制造库存")
|
||||
@AnonymousAccess
|
||||
public ResponseEntity<Object> queryInventoryZz(InventoryQueryCriteria criteria, Pageable pageable) {
|
||||
return new ResponseEntity<>(inventoryService.queryAll(criteria, pageable), HttpStatus.OK);
|
||||
return new ResponseEntity<>(inventoryService.queryInvAll(criteria, pageable), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
|
|
@ -140,15 +142,17 @@ public class InventoryController {
|
|||
@PreAuthorize("@el.check('super:man')")
|
||||
public ResponseEntity<Object> updateInventory(@Validated @RequestBody Inventory resources) {
|
||||
//库存修改
|
||||
Inventory byId = inventoryRepository.getById(resources.getId());
|
||||
if (byId.getQuantity()>resources.getQuantity()){//以前的大于现在的
|
||||
inventoryLogService.storeInventoryLog(BizStatus.INVENTORY_ADJUST, BizStatus.REDUCE, null, byId.getArea(), byId.getItemKey(), byId.getPoint(), byId.getPoint(), byId.getStock(), byId.getStock(), byId.getQuantity(), (byId.getQuantity() - resources.getQuantity()),
|
||||
null,null,BizStatus.INVENTORY_ADJUST, byId.getId(), byId.getId(), resources.getDescription());
|
||||
Inventory inventory = inventoryRepository.getById(resources.getId());
|
||||
ItemKey itemKey=inventory.getItemKey();
|
||||
if (inventory.getQuantity()>resources.getQuantity()){//以前的大于现在的
|
||||
inventoryLogService.storeInventoryLog(BizStatus.INVENTORY_ADJUST, BizStatus.REDUCE, null, inventory.getArea(), itemKey, inventory.getPoint(), inventory.getPoint(), inventory.getStock(), inventory.getStock(), inventory.getQuantity(), (inventory.getQuantity() - resources.getQuantity()),
|
||||
inventory.getStockCode(),null,BizStatus.INVENTORY_ADJUST, inventory.getId(), inventory.getId(), resources.getDescription());
|
||||
}else {
|
||||
inventoryLogService.storeInventoryLog(BizStatus.INVENTORY_ADJUST, BizStatus.ADD, null, byId.getArea(), byId.getItemKey(), byId.getPoint(), byId.getPoint(), byId.getStock(), byId.getStock(), byId.getQuantity(), (resources.getQuantity()-byId.getQuantity()),
|
||||
null,null,BizStatus.INVENTORY_ADJUST, byId.getId(), byId.getId(), resources.getDescription());
|
||||
inventoryLogService.storeInventoryLog(BizStatus.INVENTORY_ADJUST, BizStatus.ADD, null, inventory.getArea(), itemKey, inventory.getPoint(), inventory.getPoint(), inventory.getStock(), inventory.getStock(), inventory.getQuantity(), (resources.getQuantity()-inventory.getQuantity()),
|
||||
inventory.getStockCode(),null,BizStatus.INVENTORY_ADJUST, inventory.getId(), inventory.getId(), resources.getDescription());
|
||||
}
|
||||
inventoryService.update(resources);
|
||||
inventory.setQuantity(resources.getQuantity());
|
||||
inventoryService.update(inventory);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
|
|
@ -197,8 +201,8 @@ public class InventoryController {
|
|||
@Log("库内移位")
|
||||
@ApiOperation("库内移位")
|
||||
@PreAuthorize("@el.check('super:man')")
|
||||
public ResponseEntity<Object> knywInventory(@RequestBody InventoryButton resources) {
|
||||
inventoryService.kuneMovePosition(resources);
|
||||
public ResponseEntity<Object> knywInventory(@RequestBody InvYW invYW) {
|
||||
inventoryService.kuneMovePosition(invYW);
|
||||
return new ResponseEntity<>("库内移位成功", HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
|
|
@ -313,6 +317,7 @@ public class InventoryController {
|
|||
throw new BadRequestException("库位品番"+point.getItemCode()+"不一致,不能移位");
|
||||
}
|
||||
}
|
||||
inventory.setArea(point.getArea());
|
||||
inventory.setPoint(point);
|
||||
inventoryRepository.save(inventory);
|
||||
InventoryLog inventoryLog = inventoryLogService.storeInventoryLog(BizStatus.XD_MOVE, BizStatus.REDUCE, "箱单移位", point.getArea(), inventory.getItemKey(), srcPoint, point, null, null, srcQty, inventory.getQuantity(), xdMoveReq.getStockCode(), null,
|
||||
|
|
|
|||
|
|
@ -21,12 +21,14 @@ import com.youchain.basicdata.domain.Point;
|
|||
import com.youchain.basicdata.domain.Stock;
|
||||
import com.youchain.businessdata.domain.Inventory;
|
||||
import com.youchain.businessdata.domain.ItemKey;
|
||||
import com.youchain.businessdata.inputJson.buttenJson.InvYW;
|
||||
import com.youchain.businessdata.inputJson.buttenJson.InventoryButton;
|
||||
import com.youchain.businessdata.returnJson.RInvQuery;
|
||||
import com.youchain.businessdata.returnJson.XdInventory;
|
||||
import com.youchain.businessdata.service.dto.InvQueryCriteria;
|
||||
import com.youchain.businessdata.service.dto.InventoryDto;
|
||||
import com.youchain.businessdata.service.dto.InventoryQueryCriteria;
|
||||
import com.youchain.businessdata.service.dto.InventoryQueryDto;
|
||||
import com.youchain.modules.system.domain.Dept;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import java.util.Map;
|
||||
|
|
@ -60,6 +62,7 @@ public interface InventoryService {
|
|||
|
||||
List<InventoryDto> queryAll(InvQueryCriteria criteria);
|
||||
Map<String,Object> queryInvAll(InventoryQueryCriteria criteria, Pageable pageable);
|
||||
List<InventoryQueryDto> queryInvAll(InventoryQueryCriteria criteria);
|
||||
|
||||
/**
|
||||
* 根据ID查询
|
||||
|
|
@ -101,7 +104,7 @@ public interface InventoryService {
|
|||
void downloadXt(List<InventoryDto> all, HttpServletResponse response) throws Exception, Exception;
|
||||
|
||||
|
||||
void downloadZz(List<InventoryDto> all, HttpServletResponse response) throws Exception, Exception;
|
||||
void downloadZz(List<InventoryQueryDto> all, HttpServletResponse response) throws Exception, Exception;
|
||||
|
||||
List<Inventory> queryInventoryAllocate(long itemId,long areaId,Long zzkwId,Long pointId,String stockCode,String propC2,String type);
|
||||
|
||||
|
|
@ -132,11 +135,8 @@ public interface InventoryService {
|
|||
|
||||
List<Inventory> getInvForPlan(String type,Long areaId,Long itemId,Long deptId);
|
||||
|
||||
/**
|
||||
* 库内移位
|
||||
* @param inventoryButton 页面操作数据
|
||||
*/
|
||||
void kuneMovePosition(InventoryButton inventoryButton);
|
||||
|
||||
void kuneMovePosition(InvYW invYW);
|
||||
|
||||
/**
|
||||
* 查询库存
|
||||
|
|
|
|||
|
|
@ -93,4 +93,7 @@ public class InventoryQueryCriteria{
|
|||
/** 模糊 */
|
||||
@Query(type = Query.Type.INNER_LIKE)
|
||||
private String stockCode;
|
||||
|
||||
@Query(type = Query.Type.EQUAL)
|
||||
private Boolean kcyj;
|
||||
}
|
||||
|
|
@ -42,4 +42,5 @@ public class InventoryQueryDto implements Serializable {
|
|||
private String queued_qty;
|
||||
private String prop_c2;
|
||||
private String inv_min;
|
||||
private String kcyj_qty;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import com.youchain.basicdata.domain.Point;
|
|||
import com.youchain.basicdata.domain.Stock;
|
||||
import com.youchain.basicdata.service.PointService;
|
||||
import com.youchain.businessdata.domain.*;
|
||||
import com.youchain.businessdata.inputJson.buttenJson.InvYW;
|
||||
import com.youchain.businessdata.inputJson.buttenJson.InventoryButton;
|
||||
import com.youchain.businessdata.inputJson.buttenJson.dataAll.InventoryYW;
|
||||
import com.youchain.businessdata.repository.PickDetailRepository;
|
||||
|
|
@ -31,6 +32,7 @@ import com.youchain.businessdata.returnJson.RPTaskList;
|
|||
import com.youchain.businessdata.returnJson.XdInventory;
|
||||
import com.youchain.businessdata.service.InventoryLogService;
|
||||
import com.youchain.businessdata.service.dto.*;
|
||||
import com.youchain.businessdata.service.mapstruct.InventoryQQMapper;
|
||||
import com.youchain.exception.BadRequestException;
|
||||
import com.youchain.modules.system.domain.Dept;
|
||||
import com.youchain.utils.*;
|
||||
|
|
@ -71,6 +73,8 @@ public class InventoryServiceImpl implements InventoryService {
|
|||
|
||||
private final InventoryRepository inventoryRepository;
|
||||
private final InventoryMapper inventoryMapper;
|
||||
private final InventoryQQMapper inventoryQQMapper;
|
||||
|
||||
private final EntityManager entityManager;
|
||||
private final InventoryLogService invLogService;
|
||||
private final PointService pointService;
|
||||
|
|
@ -124,6 +128,9 @@ public class InventoryServiceImpl implements InventoryService {
|
|||
|
||||
@Override
|
||||
public void download(List<InventoryDto> all, HttpServletResponse response) throws Exception {
|
||||
|
||||
|
||||
|
||||
List<Map<String, Object>> list=ExcelDownUtils.CreateMap(all,"Inventory");
|
||||
FileUtil.downloadExcel(list, response);
|
||||
}
|
||||
|
|
@ -141,7 +148,7 @@ public class InventoryServiceImpl implements InventoryService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void downloadZz(List<InventoryDto> all, HttpServletResponse response) throws Exception {
|
||||
public void downloadZz(List<InventoryQueryDto> all, HttpServletResponse response) throws Exception {
|
||||
List<Map<String, Object>> list=ExcelDownUtils.CreateMap(all,"InvZz");
|
||||
FileUtil.downloadExcel(list, response);
|
||||
}
|
||||
|
|
@ -181,6 +188,33 @@ public class InventoryServiceImpl implements InventoryService {
|
|||
List<Inventory> inventoryList = query.getResultList();
|
||||
return inventoryList;
|
||||
}
|
||||
@Override
|
||||
public List<InventoryQueryDto> queryInvAll(InventoryQueryCriteria criteria) {
|
||||
//return inventoryQQMapper.toDto(inventoryRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder)));
|
||||
Query query = getQuery(criteria,BizStatus.QUERY_PAGE);
|
||||
List queryResultList = query.unwrap(SQLQuery.class)
|
||||
.setResultTransformer(
|
||||
AliasToEntityMapResultTransformer.INSTANCE
|
||||
)
|
||||
.list();
|
||||
List<InventoryQueryDto> list = JSON.parseArray(JSON.toJSONString(queryResultList),InventoryQueryDto.class);
|
||||
// List<InventoryQueryDto> list=new ArrayList<>();
|
||||
// for (InventoryQueryDto obj: queryResultList) {
|
||||
// InventoryQueryDto dto=new InventoryQueryDto();
|
||||
// dto.setId(obj.getId());
|
||||
// dto.setItem_code(obj.getItem_code());
|
||||
// dto.setItem_name(obj.getItem_name());
|
||||
// dto.setArea_name(obj.getArea_name());
|
||||
// dto.setPoint_code(obj.getPoint_code());
|
||||
// dto.setProp_c2(obj.getProp_c2());
|
||||
// dto.setQuantity(obj.getQuantity());
|
||||
// dto.setInv_min(obj.getInv_min());
|
||||
// dto.setKcyj_qty(obj.getKcyj_qty());
|
||||
// dto.setQuantity(obj.getQuantity());
|
||||
// list.add(dto);
|
||||
// }
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String,Object> queryInvAll(InventoryQueryCriteria criteria, Pageable pageable) {
|
||||
|
|
@ -208,7 +242,7 @@ public class InventoryServiceImpl implements InventoryService {
|
|||
|
||||
public Query getQuery(InventoryQueryCriteria criteria,String type){
|
||||
String midSql="SELECT inv.id,area.name area_name,p.code point_code,it.code item_code,it.name item_name," +
|
||||
" inv.quantity ,inv.queued_qty,ik.prop_c2 ,p.inv_min " ;
|
||||
" inv.quantity ,inv.queued_qty,ik.prop_c2 ,p.inv_min,IF(inv.quantity<p.inv_min,(p.inv_min-inv.quantity),'') kcyj_qty " ;
|
||||
if(type.equals(BizStatus.QUERY_TOTAL)){
|
||||
midSql="SELECT count(inv.id) ";
|
||||
}
|
||||
|
|
@ -225,22 +259,29 @@ public class InventoryServiceImpl implements InventoryService {
|
|||
String point_code=criteria.getPointCode();
|
||||
String prop_c2=criteria.getBonded();
|
||||
String point_type=criteria.getPointType();
|
||||
Boolean kcbz=true;
|
||||
if (item_code!=null &&item_code.equals("") ) {
|
||||
String area_name=criteria.getAreaName();
|
||||
Boolean kcyj=criteria.getKcyj();
|
||||
if (item_code!=null &&!item_code.equals("") ) {
|
||||
sql += " and it.code like '%" + item_code + "%'";
|
||||
}
|
||||
if (item_name!=null &&item_name.equals("") ) {
|
||||
if (item_name!=null &&!item_name.equals("") ) {
|
||||
sql += " and it.name like '%" + item_code + "%'";
|
||||
}
|
||||
if (point_code!=null &&point_code.equals("") ) {
|
||||
if (point_code!=null &&!point_code.equals("") ) {
|
||||
sql += " and p.code like '%" + point_code + "%'";
|
||||
}
|
||||
if (point_type!=null &&point_type.equals("") ) {
|
||||
if (point_type!=null &&!point_type.equals("") ) {
|
||||
sql += " and p.type='" + point_type + "'";
|
||||
}
|
||||
if (prop_c2!=null &&prop_c2.equals("") ) {
|
||||
if (area_name!=null &&!area_name.equals("") ) {
|
||||
sql += " and area.name='" + area_name + "'";
|
||||
}
|
||||
if (prop_c2!=null &&!prop_c2.equals("") ) {
|
||||
sql += " and it.name like '%" + item_code + "%'";
|
||||
}
|
||||
if(kcyj!=null&&kcyj){
|
||||
sql += " and inv.quantity<p.inv_min ";
|
||||
}
|
||||
}
|
||||
sql+=" order by it.code ";
|
||||
Query query = entityManager.createNativeQuery(sql);
|
||||
|
|
@ -407,50 +448,36 @@ public class InventoryServiceImpl implements InventoryService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void kuneMovePosition(InventoryButton inventoryButton) {
|
||||
//操作类型=移位,增加/减少=减少 ,
|
||||
//原点位=之前记录的库位,目标库位=选择的库位 库区、品番、暂存库位、制造库位都取inv上的。 原数量取原纪录,目标数量取移出后的数量, 发生数量=输入的移位数量
|
||||
//操作类型=库存调整,增加/减少=根据实际数量判断,大于原数量为增加,小于原数量为减少,其他的类似上面数据
|
||||
//移位时,加入目标库位之前没有这个记录,则自动生成
|
||||
//库存唯一键:area,point,itemKey,zzkw,stockCode
|
||||
//位移所需要的数据
|
||||
InventoryYW inventoryYW = inventoryButton.getInventoryYW();
|
||||
//原数据
|
||||
Inventory inventoryOld = inventoryRepository.getById(inventoryYW.getInventory().getId());
|
||||
public void kuneMovePosition(InvYW invYW) {
|
||||
Inventory srcInv = inventoryRepository.getById(invYW.getId());
|
||||
if(srcInv.getStockCode()!=null){
|
||||
throw new BadRequestException( "箱单库存需使用箱单移位功能");
|
||||
}
|
||||
Point dstPoint=invYW.getDstPoint();
|
||||
// 位移数量
|
||||
double rmNumber = inventoryYW.getRmNumber();
|
||||
double rmNumber = invYW.getRmNumber();
|
||||
//判断 库存-要移动的数量
|
||||
double rmNum = inventoryOld.getQuantity() - rmNumber;
|
||||
if (rmNum > 0) {//移除数量小于库存数量
|
||||
double rmNum = srcInv.getQuantity() - rmNumber;
|
||||
if(srcInv.getPoint().getCode().equals(invYW.getDstPoint().getCode())){
|
||||
throw new BadRequestException( "库位不能一致");
|
||||
}
|
||||
if (rmNum >= 0) {//移除数量小于库存数量
|
||||
//生成库存或生成记录
|
||||
Inventory inventory = this.getInventory(inventoryOld.getItemKey(), inventoryOld.getArea(), inventoryYW.getDstPoint(), inventoryOld.getZzkw(), inventoryOld.getDept(), BizStatus.MOVE,null);
|
||||
Inventory dstInv = this.getInventory(srcInv.getItemKey(), dstPoint.getArea(), dstPoint, srcInv.getZzkw(), srcInv.getDept(), BizStatus.MOVE,srcInv.getStockCode());
|
||||
//生成移除的日志
|
||||
invLogService.storeInventoryLog(BizStatus.MOVE, BizStatus.REDUCE, null, inventoryOld.getArea(), inventoryOld.getItemKey(), inventoryOld.getPoint(), inventoryYW.getDstPoint(), inventoryOld.getStock(), inventoryOld.getStock(), inventoryOld.getQuantity(), rmNumber,
|
||||
null,null, BizStatus.MOVE, inventoryOld.getId(), inventoryOld.getId(), inventoryOld.getDescription());
|
||||
invLogService.storeInventoryLog(BizStatus.MOVE, BizStatus.REDUCE, null, srcInv.getArea(), srcInv.getItemKey(), srcInv.getPoint(), invYW.getDstPoint(), srcInv.getStock(), srcInv.getStock(), srcInv.getQuantity(), rmNumber,
|
||||
srcInv.getStockCode(),null, BizStatus.MOVE, srcInv.getId(), srcInv.getId(), srcInv.getDescription());
|
||||
//生成目标点位的日志
|
||||
invLogService.storeInventoryLog(BizStatus.MOVE, BizStatus.ADD, null, inventory.getArea(), inventory.getItemKey(), inventory.getPoint(), inventoryYW.getDstPoint(), inventoryOld.getStock(), inventory.getStock(), inventory.getQuantity(), rmNumber,
|
||||
null,null, BizStatus.MOVE, inventoryOld.getId(), inventoryOld.getId(), inventoryOld.getDescription());
|
||||
invLogService.storeInventoryLog(BizStatus.MOVE, BizStatus.ADD, null, dstPoint.getArea(), dstInv.getItemKey(), dstPoint, dstPoint, dstInv.getStock(), dstInv.getStock(), dstInv.getQuantity(), rmNumber,
|
||||
dstInv.getStockCode(),null, BizStatus.MOVE, dstInv.getId(), dstInv.getId(), dstInv.getDescription());
|
||||
//减库存
|
||||
inventoryOld.setQuantity(rmNum);
|
||||
this.update(inventoryOld);
|
||||
srcInv.setQuantity(rmNum);
|
||||
this.update(srcInv);
|
||||
//加库存
|
||||
inventory.setQuantity(inventory.getQuantity() + rmNumber);
|
||||
this.update(inventory);
|
||||
dstInv.setQuantity(dstInv.getQuantity() + rmNumber);
|
||||
this.update(dstInv);
|
||||
} else if (rmNum < 0) {//移除数量大于库存数量
|
||||
throw new BadRequestException(HttpStatus.NOT_FOUND, "移除数量大于库存数量");
|
||||
} else {//移除数量等于库存数量
|
||||
//生成库存或生成记录
|
||||
Inventory inventory = this.getInventory(inventoryOld.getItemKey(), inventoryOld.getArea(), inventoryYW.getDstPoint(), inventoryOld.getZzkw(), inventoryOld.getDept(), BizStatus.MOVE,null);
|
||||
//生成移除的日志
|
||||
invLogService.storeInventoryLog(BizStatus.MOVE, BizStatus.REDUCE, null, inventoryOld.getArea(), inventoryOld.getItemKey(), inventoryOld.getPoint(), inventoryYW.getDstPoint(), inventoryOld.getStock(), inventoryOld.getStock(), inventoryOld.getQuantity(), rmNumber,
|
||||
null,null,BizStatus.MOVE, inventoryOld.getId(), inventoryOld.getId(), inventoryOld.getDescription());
|
||||
//生成目标点位的日志
|
||||
invLogService.storeInventoryLog(BizStatus.MOVE, BizStatus.ADD, null, inventory.getArea(), inventory.getItemKey(), inventory.getPoint(), inventoryYW.getDstPoint(), inventoryOld.getStock(), inventory.getStock(), inventory.getQuantity(), rmNumber,
|
||||
null,null,BizStatus.MOVE, inventoryOld.getId(), inventoryOld.getId(), inventoryOld.getDescription());
|
||||
inventoryRepository.delete(inventoryOld);
|
||||
//加库存
|
||||
inventory.setQuantity(inventory.getQuantity() + rmNumber);
|
||||
this.update(inventory);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -418,7 +418,7 @@ public class PickDetailServiceImpl implements PickDetailService {
|
|||
}
|
||||
|
||||
public List<ZzjlPickList> queryZzjlPickList(String itemCode,String areaName) {
|
||||
String sql="SELECT d.id detail_id,IFNULL(a.name,\"\") area_name,IFNULL(ck_point.code,\"\") ck_point_code," +
|
||||
String sql="SELECT d.id detail_id,IFNULL(a.name,\"材管库位无库存\") area_name,IFNULL(ck_point.code,\"\") ck_point_code," +
|
||||
"d.be_xd_pf,s.`name` s_area_name,it.code item_code,it.name item_name, p.code point_code,d.prop_c2 bonded,d.order_qty,d.allocated_qty,d.picked_qty,d.create_by,d.create_time\n" +
|
||||
" from data_pick_detail d\n" +
|
||||
" LEFT JOIN base_item it on it.id=d.item_id\n" +
|
||||
|
|
@ -429,7 +429,11 @@ public class PickDetailServiceImpl implements PickDetailService {
|
|||
" where 1=1 and d.type='ZZJL' and d.picked_qty=0 ";
|
||||
|
||||
if(areaName!=null&&!areaName.equals("")){
|
||||
sql+= " and a.`name`='"+areaName+"'";
|
||||
if(areaName.equals("材管库位无库存")){
|
||||
sql+= " and a.`name` is null";
|
||||
}else {
|
||||
sql += " and a.`name`='" + areaName + "'";
|
||||
}
|
||||
}else{
|
||||
sql+= " and a.`name` is null";
|
||||
}
|
||||
|
|
@ -449,7 +453,7 @@ public class PickDetailServiceImpl implements PickDetailService {
|
|||
}
|
||||
|
||||
public List<ZzjlPickCountList> queryZzjlPickCountList() {
|
||||
String sql="SELECT IFNULL(ck_area.name,\"\") area_name,sum(d.order_qty) order_qty,sum(d.allocated_qty) allocated_qty ,count(d.id) count_qty\n" +
|
||||
String sql="SELECT IFNULL(ck_area.name,\"材管库位无库存\") area_name,sum(d.order_qty) order_qty,sum(d.allocated_qty) allocated_qty ,count(d.id) count_qty\n" +
|
||||
"from data_pick_detail d\n" +
|
||||
"left join base_area ck_area on ck_Area.id=d.area_id\n" +
|
||||
"where d.picked_qty<d.order_qty and d.type='ZZJL' " +
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* Copyright 2019-2020 Zheng Jie
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.youchain.businessdata.service.mapstruct;
|
||||
|
||||
import com.youchain.base.BaseMapper;
|
||||
import com.youchain.businessdata.domain.Inventory;
|
||||
import com.youchain.businessdata.service.dto.InventoryDto;
|
||||
import com.youchain.businessdata.service.dto.InventoryQueryDto;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.ReportingPolicy;
|
||||
|
||||
/**
|
||||
* @website https://eladmin.vip
|
||||
* @author huojin
|
||||
* @date 2023-08-22
|
||||
**/
|
||||
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
||||
public interface InventoryQQMapper extends BaseMapper<InventoryQueryDto, Inventory> {
|
||||
|
||||
}
|
||||
|
|
@ -124,15 +124,40 @@ public class ExcelDownUtils {
|
|||
}
|
||||
return list;
|
||||
}
|
||||
private static Field getFieldRecursively(Class<?> clazz, String fieldName) {
|
||||
while (clazz != null) {
|
||||
try {
|
||||
return clazz.getDeclaredField(fieldName);
|
||||
} catch (NoSuchFieldException e) {
|
||||
clazz = clazz.getSuperclass();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Object getNestedFieldValue(Object obj, String nestedFieldName) throws Exception {
|
||||
String[] fields = nestedFieldName.split("\\.");
|
||||
Object result = obj;
|
||||
for (String field : fields) {
|
||||
Field f = result.getClass().getDeclaredField(field);
|
||||
f.setAccessible(true); // 确保可以访问私有字段
|
||||
result = f.get(result);
|
||||
try {
|
||||
Object result = obj;
|
||||
for (String field : fields) {
|
||||
if (result == null) {
|
||||
throw new IllegalArgumentException("尝试在 null 对象上访问字段: " + field);
|
||||
}
|
||||
|
||||
Field f = getFieldRecursively(result.getClass(), field);
|
||||
if (f == null) {
|
||||
throw new NoSuchFieldException("字段 " + field + " 在类 " +
|
||||
result.getClass().getName() + " 中不存在");
|
||||
}
|
||||
|
||||
f.setAccessible(true);
|
||||
result = f.get(result);
|
||||
}
|
||||
return result;
|
||||
} catch (Exception e) {
|
||||
log.error("获取字段值失败: " + e.getMessage());
|
||||
|
||||
return null;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue