From bf1929bbc7959a1f196de63d859ce8750810e094 Mon Sep 17 00:00:00 2001 From: FOAM <491460741@qq.com> Date: Fri, 14 Nov 2025 15:50:13 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E4=BD=8D=E3=80=81=E5=88=B6=E9=80=A0?= =?UTF-8?q?=E5=8F=AB=E6=96=99=E3=80=81=E5=88=B6=E9=80=A0=E7=A7=BB=E4=BD=8D?= =?UTF-8?q?=E3=80=81=E5=8F=B0=E8=BD=A6=E9=85=8D=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/youchain/basicdata/domain/Area.java | 4 + .../com/youchain/basicdata/domain/Point.java | 3 + .../repository/BomAccountRepository.java | 8 +- .../basicdata/rest/BomAccountController.java | 181 ++++++++---------- .../basicdata/service/BomAccountService.java | 25 +++ .../basicdata/service/dto/AreaDto.java | 3 +- .../service/dto/BomAccountQueryCriteria.java | 2 +- .../basicdata/service/dto/PointDto.java | 2 + .../service/impl/BomAccountServiceImpl.java | 146 +++++++++++++- .../service/impl/ImportPointServiceImpl.java | 4 + .../domain/CountMoveDetailRecord.java | 2 +- .../inputJson/imports/BomAccountImport.java | 2 +- .../repository/InventoryRepository.java | 5 + .../rest/CountDetailController.java | 4 + .../rest/InventoryController.java | 81 +++++--- .../rest/XppRecordController.java | 16 +- .../businessdata/returnJson/BomPrint.java | 32 ---- .../businessdata/returnJson/TcOutList.java | 26 +++ .../service/dto/InventoryQueryCriteria.java | 3 + .../service/impl/AsnDetailServiceImpl.java | 11 +- .../service/impl/CountMoveServiceImpl.java | 11 +- .../service/impl/InventoryServiceImpl.java | 3 +- .../service/impl/PickTicketServiceImpl.java | 2 +- .../service/impl/SparepartsServiceImpl.java | 58 +----- .../java/com/youchain/utils/BaseStatus.java | 12 ++ .../java/com/youchain/utils/BizStatus.java | 12 +- 26 files changed, 418 insertions(+), 240 deletions(-) create mode 100644 youchain-system/src/main/java/com/youchain/businessdata/returnJson/TcOutList.java diff --git a/youchain-system/src/main/java/com/youchain/basicdata/domain/Area.java b/youchain-system/src/main/java/com/youchain/basicdata/domain/Area.java index e82c556..07ac867 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/domain/Area.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/domain/Area.java @@ -123,6 +123,10 @@ public class Area extends BaseEntity implements Serializable { @ApiModelProperty(value = "制造库位耗用") private Boolean bezz; + @Column(name = "`betc`") + @ApiModelProperty(value = "台车库区") + private Boolean betc; + @Column(name = "`shdd`") @ApiModelProperty(value = "收货担当") private String shdd; diff --git a/youchain-system/src/main/java/com/youchain/basicdata/domain/Point.java b/youchain-system/src/main/java/com/youchain/basicdata/domain/Point.java index d14f58a..9a75573 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/domain/Point.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/domain/Point.java @@ -131,6 +131,9 @@ public class Point extends BaseEntity implements Serializable { @Column(name = "`glzkw`") @ApiModelProperty(value = "关联总库位") private String glzkw; + @Column(name = "`update_des`") + @ApiModelProperty(value = "更新描述") + private String updateDes; public void copy(Point source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); } diff --git a/youchain-system/src/main/java/com/youchain/basicdata/repository/BomAccountRepository.java b/youchain-system/src/main/java/com/youchain/basicdata/repository/BomAccountRepository.java index 21a9135..eef1e81 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/repository/BomAccountRepository.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/repository/BomAccountRepository.java @@ -57,7 +57,9 @@ public interface BomAccountRepository extends JpaRepository, J List queryBomUnique(Long area_id, Long item_id, Long poin_id); @Query(value = "SELECT IFNULL(sum(pc_qty),0) FROM `base_bom_account` b where b.r_area_id=?1 and b.item_id=?2 and b.z_point_id=?3", nativeQuery = true) Double getPcQty(Long area_id, Long item_id, Long point_id); - + /**台车库位对应的bom*/ + @Query(value = "SELECT * FROM `base_bom_account` b where b.station_type=:station_type", nativeQuery = true) + List queryTchws(String station_type); /**固定库位二维码解析*/ @Query(value = "SELECT * FROM `base_bom_account` b where b.item_id=:item_id and b.z_point_id=:z_point_id and b.bonded=:bonded", nativeQuery = true) List queryEwmJx(Long item_id, Long z_point_id,String bonded); @@ -134,4 +136,8 @@ public interface BomAccountRepository extends JpaRepository, J + @Query(value = "select v.tckw hw,v.jxs from bom_tckw_print_view v " + + "where (v.tckw=:tckw or :tckw is null) " + + " and (v.jxs LIKE CONCAT('%',:jx,'%') or :jx is null) ", nativeQuery = true) + List queryTckwPrintAll(String tckw,String jx); } \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/basicdata/rest/BomAccountController.java b/youchain-system/src/main/java/com/youchain/basicdata/rest/BomAccountController.java index d3eabf3..a5a3baa 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/rest/BomAccountController.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/rest/BomAccountController.java @@ -17,6 +17,7 @@ package com.youchain.basicdata.rest; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONUtil; +import com.youchain.DuplicateSubmission.DuplicateSubmission; import com.youchain.annotation.AnonymousAccess; import com.youchain.annotation.Log; import com.youchain.basicdata.domain.*; @@ -30,9 +31,7 @@ import com.youchain.basicdata.service.PointService; import com.youchain.basicdata.service.dto.*; import com.youchain.basicdata.service.impl.TableConfigServiceImpl; import com.youchain.basicdata.service.mapstruct.BomAccountMapper; -import com.youchain.businessdata.returnJson.BomPrint; -import com.youchain.businessdata.returnJson.BomPrint_BiaoQian; -import com.youchain.businessdata.returnJson.BomPrint_BiaoQian2; +import com.youchain.businessdata.returnJson.*; import com.youchain.utils.*; import lombok.extern.slf4j.Slf4j; import net.dreamlu.mica.core.utils.JsonUtil; @@ -41,6 +40,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import io.swagger.annotations.*; @@ -119,109 +119,17 @@ public class BomAccountController { return new ResponseEntity<>(list,HttpStatus.OK); } -// @GetMapping("/bomPrintBiaoQianList/{dxw}") -// @Log("获取Bom中库位标签") -// @ApiOperation("获取Bom中库位标签") -// @AnonymousAccess -// public ResponseEntity bomPrintBiaoQianList(@PathVariable("dxw") String dxw){ -// RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class); -// String json=(String)redisUtils.get(SecurityUtils.getCurrentUsername()+dxw); -// //log.info(SecurityUtils.getCurrentUsername()+dxw+"-----"+json); -// List list= JSONUtil.toList(json, BomPrint_BiaoQian2.class); -// List list2=new ArrayList<>(); -// for(BomPrint_BiaoQian2 l:list){ -// BomPrint_BiaoQian bq=new BomPrint_BiaoQian(); -// String code=l.getCode().substring(0,5)+"-"+l.getCode().substring(5,l.getCode().length()); -// bq.setNs(l.getNs()+"/"+code); -// bq.setCode(code); -// String hw=l.getHw(); -// hw=hw.substring(0,3)+"-"+hw.substring(3,hw.length()); -// bq.setHw(hw); -// bq.setPm(l.getPm()); -// bq.setEwm(l.getId()+"]"+l.getCode()+"]"+l.getNs()+"]"+l.getBonded()+"]"+l.getHw()); -// bq.setBonded(l.getBonded()); -// bq.setSrs(l.getSrs()); -// bq.setXz(l.getXz()); -// bq.setSupplier(l.getSupplier()); -// bq.setId(l.getId()); -// bq.setJxs(l.getJxs() == null ? null : -// Arrays.stream(l.getJxs().split(";")) -// .map(s -> s.length() > 16 ? s.substring(0, 16) : s) -// .toArray(String[]::new)); -// bq.setTyls(l.getTyls()==null?null:l.getTyls().split(";")); -// list2.add(bq); -// } -// return new ResponseEntity<>( list2,HttpStatus.OK); -// } - - - @GetMapping("/bomPrintBiaoQianListold/{dxw}") - @Log("获取Bom中库位标签") - @ApiOperation("获取Bom中库位标签") + @GetMapping("/queryBomPrintListTC") + @Log("查询台车标签") + @ApiOperation("查询台车标签") @AnonymousAccess - public ResponseEntity bomPrintBiaoQianListold(@PathVariable("dxw") String dxw){ + public ResponseEntity queryBomPrintListTC(BomAccountQueryCriteria criteria){ RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class); - String json=(String)redisUtils.get(SecurityUtils.getCurrentUsername()+dxw); - //log.info(SecurityUtils.getCurrentUsername()+dxw+"-----"+json); - List list= JSONUtil.toList(json, BomPrint_BiaoQian2.class); - HashMap> map=new HashMap<>(); - List sortList=new ArrayList<>(); - for(BomPrint_BiaoQian2 l:list){ - String key=l.getCode()+"]"+l.getNs()+"]"+l.getBonded()+"]"+l.getHw(); - if(map.containsKey(key)){ - List list2=map.get(key); - list2.add(l); - map.put(key,list2); - }else{ - List list2=new ArrayList<>(); - list2.add(l); - map.put(key,list2); - sortList.add(key); - } - } - List list2=new ArrayList<>(); -// for (String key : map.keySet()) { - for(String key:sortList){ - log.info(key); - List bqs=map.get(key); - BomPrint_BiaoQian bq=new BomPrint_BiaoQian(); - BomPrint_BiaoQian2 l=bqs.get(0); - String code=l.getCode().substring(0,5)+"-"+l.getCode().substring(5,l.getCode().length()); - bq.setNs(l.getNs()+"/"+code); - bq.setCode(code); - String hw=l.getHw(); - hw=hw.substring(0,3)+"-"+hw.substring(3,hw.length()); - bq.setHw(hw); - bq.setPm(l.getPm()); - bq.setEwm(key); - bq.setBonded(l.getBonded()); - bq.setSrs(l.getSrs()); - bq.setXz(l.getXz()); - bq.setSupplier(l.getSupplier()); - bq.setId(l.getId()); - String[] jxs=new String[bqs.size()]; - String[] tyls=new String[bqs.size()]; - for(int i=0;i { -// String[] parts = item.getHw().split("-"); -// // 将前后部分都转换为整数进行比较 -// int firstPart = Integer.parseInt(parts[0]); -// int secondPart = Integer.parseInt(parts[1]); -// // 先比较前部分,再比较后部分 -// return firstPart * 1000 + secondPart; -// })); - redisUtils.set(SecurityUtils.getCurrentUsername()+"_BiaoQian_X",JsonUtil.toJson(list)); + redisUtils.del(SecurityUtils.getCurrentUsername()+"_BiaoQian_TC"); + List list=bomAccountService.queryTckwPrintAll(criteria); + redisUtils.set(SecurityUtils.getCurrentUsername()+"_BiaoQian_TC",JsonUtil.toJson(list)); return new ResponseEntity<>(list,HttpStatus.OK); } - @GetMapping("/queryBomPrintList") @Log("查询Bom标签") @ApiOperation("查询Bom标签") @@ -304,6 +212,39 @@ public class BomAccountController { return new ResponseEntity<>(map2,HttpStatus.OK); } + + @GetMapping("/queryBomTckwPrintList") + @Log("查询Bom台车标签") + @ApiOperation("查询Bom台车标签") + @AnonymousAccess + public ResponseEntity queryBomTckwPrintList(BomAccountQueryCriteria criteria,Pageable pageable){ + RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class); + redisUtils.del(SecurityUtils.getCurrentUsername()+BaseStatus.TCBQ); + List list=bomAccountService.queryTckwPrintAll(criteria); + List list_bq=new ArrayList<>(); + for(BomPrint p:list){ + String key=p.getHw(); + String jx=p.getJxs(); + String[] jxs=jx.split(","); + BomPrint_BiaoQian bq=new BomPrint_BiaoQian(); + bq.setCode(key); + bq.setHw(key); + bq.setJxs(jxs); + bq.setJx(jx); + list_bq.add(bq); + } + redisUtils.set(SecurityUtils.getCurrentUsername()+BaseStatus.TCBQ,JsonUtil.toJson(list_bq)); + Map map2=new HashMap<>(); + int pageNum=pageable.getPageNumber();//当前页 + int pageSize=pageable.getPageSize();//条数 + List result = list_bq.stream() + .skip((pageNum)*pageSize) // 跳过前100个 + .limit(pageSize) // 取100个(101-200行) + .collect(Collectors.toList()); + map2.put("content",result); + map2.put("totalElements",list_bq.size()); + return new ResponseEntity<>(map2,HttpStatus.OK); + } @GetMapping("/bomPrintBiaoQianList/{dxw}") @Log("获取Bom中库位标签") @ApiOperation("获取Bom中库位标签") @@ -389,4 +330,40 @@ public class BomAccountController { bomAccountService.deleteAll(ids); return new ResponseEntity<>(HttpStatus.OK); } + + @PostMapping("/tcOut") + @Log("台车配料出库") + @ApiOperation("台车配料出库") + @PreAuthorize("@el.check('super:man')") + @Transactional + @DuplicateSubmission(10) + public ResponseEntity tcOut(@Validated @RequestBody String[] tckws){ + for (String tckw : tckws) { + bomAccountService.tcCount(tckw); + } + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/tcOutApp") + @Log("台车配料出库App") + @ApiOperation("台车配料出库") + @PreAuthorize("@el.check('super:man')") + @Transactional + @DuplicateSubmission(10) + public ResponseEntity tcOutApp( @RequestBody HashMap map){ + String tckw=map.get("tckw")==null?null:map.get("tckw").toString(); + bomAccountService.tcCount(tckw); + return new ResponseEntity<>("配料成功", HttpStatus.OK); + } + + @PostMapping("/tcOutList") + @Log("制造叫料拣货列表") + @ApiOperation("制造叫料拣货列表") + @AnonymousAccess + public ResponseEntity tcOutList(@RequestBody HashMap map) throws Exception { + String tckw=map.get("tckw")==null?null:map.get("tckw").toString(); + //查询叫料返回数据 + List list=bomAccountService.queryTckwList(tckw); + return new ResponseEntity<>(list,HttpStatus.OK); + } } \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/basicdata/service/BomAccountService.java b/youchain-system/src/main/java/com/youchain/basicdata/service/BomAccountService.java index cd15731..6194837 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/service/BomAccountService.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/service/BomAccountService.java @@ -22,6 +22,7 @@ import com.youchain.basicdata.service.dto.BomAccountDto; import com.youchain.basicdata.service.dto.BomAccountPointDto; import com.youchain.basicdata.service.dto.BomAccountQueryCriteria; import com.youchain.businessdata.returnJson.BomPrint; +import com.youchain.businessdata.returnJson.TcOutList; import org.springframework.data.domain.Pageable; import java.util.Map; import java.util.List; @@ -54,6 +55,7 @@ public interface BomAccountService { List queryPrintAll(BomAccountQueryCriteria criteria,String dxw); List queryPrintAll(BomAccountQueryCriteria criteria); + List queryTckwPrintAll(BomAccountQueryCriteria criteria); /** * 根据ID查询 @@ -138,4 +140,27 @@ public interface BomAccountService { */ void updateBatch(Long areaId); + /*** + * 台车配料查询 + * @param tckw + * @return + */ + List queryTckwList(String tckw) ; + /*** + * 台车配料出库 + * @param tckw + */ + void tcCount(String tckw); + + /** + * Bom对应库存扣减 + * @param bs + * @param orderQty + * @param logType + * @param billCode + * @param refObjId + * @param description + */ + void bomInvDeal(List bs,double orderQty,String logType,String billCode,Long refObjId,String description); + } \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/basicdata/service/dto/AreaDto.java b/youchain-system/src/main/java/com/youchain/basicdata/service/dto/AreaDto.java index 3dc86e4..6c9de8a 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/service/dto/AreaDto.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/service/dto/AreaDto.java @@ -91,7 +91,8 @@ public class AreaDto implements Serializable { /** 制造库位耗用 */ private Boolean bezz; - + /** 台车库区 */ + private Boolean betc; /**收货担当*/ private String shdd; /**工厂*/ diff --git a/youchain-system/src/main/java/com/youchain/basicdata/service/dto/BomAccountQueryCriteria.java b/youchain-system/src/main/java/com/youchain/basicdata/service/dto/BomAccountQueryCriteria.java index 10c40ab..50fa324 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/service/dto/BomAccountQueryCriteria.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/service/dto/BomAccountQueryCriteria.java @@ -45,7 +45,7 @@ public class BomAccountQueryCriteria{ private Boolean rAreaBexb; @Query(propName = "code",joinName = "cArea",type = Query.Type.INNER_LIKE) private String cAreaCode; - @Query(propName = "code",joinName = "zPoint",type = Query.Type.INNER_LIKE) + @Query(propName = "code",joinName = "zPoint",type = Query.Type.RIGHT_LIKE) private String zPointCode; /** 精确 */ @Query diff --git a/youchain-system/src/main/java/com/youchain/basicdata/service/dto/PointDto.java b/youchain-system/src/main/java/com/youchain/basicdata/service/dto/PointDto.java index c7a7ac5..106d80d 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/service/dto/PointDto.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/service/dto/PointDto.java @@ -105,4 +105,6 @@ public class PointDto implements Serializable { /** 修改时间 */ private Timestamp updateTime; + + private String updateDes; } \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/basicdata/service/impl/BomAccountServiceImpl.java b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/BomAccountServiceImpl.java index 041c01f..73bb88d 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/service/impl/BomAccountServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/BomAccountServiceImpl.java @@ -21,17 +21,27 @@ import cn.hutool.json.JSONUtil; import cn.hutool.log.Log; import com.alibaba.fastjson.JSON; import com.youchain.appupdate.ReturnJson.RLocLayout; -import com.youchain.basicdata.domain.BigItem; -import com.youchain.basicdata.domain.BomAccount; -import com.youchain.basicdata.domain.BomAccountLog; -import com.youchain.basicdata.domain.Item; +import com.youchain.basicdata.domain.*; +import com.youchain.basicdata.repository.AreaRepository; import com.youchain.basicdata.repository.ItemRepository; +import com.youchain.basicdata.repository.PointRepository; import com.youchain.basicdata.service.BomAccountLogService; import com.youchain.basicdata.service.PointService; import com.youchain.basicdata.service.dto.*; +import com.youchain.businessdata.domain.Inventory; +import com.youchain.businessdata.domain.InventoryLog; +import com.youchain.businessdata.domain.ItemKey; +import com.youchain.businessdata.domain.Spareparts; import com.youchain.businessdata.returnJson.BomPrint; +import com.youchain.businessdata.returnJson.TcOutList; +import com.youchain.businessdata.returnJson.ZzjlPickList; +import com.youchain.businessdata.service.InventoryLogService; +import com.youchain.businessdata.service.InventoryService; +import com.youchain.businessdata.service.ItemKeyService; +import com.youchain.exception.BadRequestException; import com.youchain.modules.system.domain.Dict; import com.youchain.modules.system.domain.DictDetail; +import com.youchain.modules.system.service.DictDetailService; import com.youchain.modules.system.service.dto.DictDto; import com.youchain.modules.system.service.dto.DictQueryCriteria; import com.youchain.modules.system.service.impl.DictDetailServiceImpl; @@ -51,6 +61,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import java.sql.Timestamp; import java.util.*; import java.io.IOException; import javax.persistence.EntityManager; @@ -70,12 +81,17 @@ import javax.servlet.http.HttpServletResponse; public class BomAccountServiceImpl implements BomAccountService { private final BomAccountRepository bomAccountRepository; + private final PointRepository pointRepository; + private final AreaRepository areaRepository; private final ItemRepository itemRepository; private final BomAccountMapper bomAccountMapper; private final PointService pointService; private final EntityManager entityManager; private final RedisUtils redisUtils; private final BomAccountLogService bomAccountLogService; + private final InventoryService inventoryService; + private final InventoryLogService inventoryLogService; + private final ItemKeyService itemKeyService; @Override // @Cacheable(key = "'queryALL1:' + #p0") @@ -112,6 +128,12 @@ public class BomAccountServiceImpl implements BomAccountService { } + public List queryTckwPrintAll(BomAccountQueryCriteria criteria){ + List bomPrints=bomAccountRepository.queryTckwPrintAll(criteria.getTckw(),criteria.getBigItemCode()); + return bomPrints; + } + + @Override @Transactional @Cacheable(key = "'id:' + #p0") @@ -349,4 +371,120 @@ public class BomAccountServiceImpl implements BomAccountService { } + public List queryTckwList(String tckw) { + List bs = bomAccountRepository.queryTchws(tckw); + List list =new ArrayList<>(); + for(BomAccount ba:bs){ + TcOutList tc=new TcOutList(); + tc.setItem_code(ba.getItem().getCode()); + tc.setItem_name(ba.getItem().getName()); + tc.setBig_item_code(ba.getBigItem().getCode()); + tc.setBig_item_name(ba.getBigItem().getName()); + tc.setBonded(ba.getBonded()); + tc.setOrder_qty(ba.getSingles()); + tc.setPoint_code(ba.getZPoint().getCode()); + list.add(tc); + } + return list; + } + + @Transactional + public void tcCount(String tckw){ + List bs = bomAccountRepository.queryTchws(tckw); + if (bs.size() <= 0) { + throw new BadRequestException(tckw + "未查到对应BOM工位清单"); + } + this.bomInvDeal(bs,1d,BizStatus.TC_OUT,tckw,null,"台车配料出库"); + } + + //根据BOM进行库存扣减 + public void bomInvDeal(List bs,double orderQty,String logType,String billCode,Long refObjId,String description){ + Area tcArea=areaRepository.getByCode(BaseStatus.DEFAULT_TC_AREA); + for(BomAccount ba:bs){ + if(ba.getZPoint()==null){ + throw new BadRequestException(ba.getItem().getCode()+"维护制造库位"); + } + if(!ba.getZPoint().getType().equals(BaseStatus.ZZKW)){ + throw new BadRequestException(ba.getZPoint().getCode()+"库位类型错误"); + } + double qty=orderQty*ba.getSingles(); + //扣除线边库存 + List inventorys=inventoryService.getXbHyInv(ba.getItem(),ba.getRArea(),ba.getZPoint(),"耗用"); + if(inventorys.size()>0){ + int num=0; + for(Inventory inv:inventorys){ + if(qty<=0){ + break; + } + num++; + if(numqty||num==inventorys.size()){ + hyQty=qty; + qty-=hyQty; + }else{ + hyQty=inv.getQuantity(); + qty-=hyQty; + } + inv.setQuantity(inv.getQuantity()-hyQty); + inventoryService.update(inv); + InventoryLog log= inventoryLogService.storeInventoryLog(logType,BizStatus.REDUCE,billCode,ba.getRArea(),inv.getItemKey(), + inv.getPoint(),inv.getPoint(),null,null,srcQty,hyQty,null,null,ba.getBigItem().getCode(), + refObjId,inv.getId(),description); + log.setZzkw(ba.getZPoint()); + inventoryLogService.update(log); + } + }else{ +// Point point=ba.getCArea().getPoint(); + Point point=pointService.findEntityById(ba.getRArea().getPointId()); + if(point==null){ + throw new BadRequestException(ba.getRArea().getCode()+"库区无对应待投料库位"); + } + ItemKey itemKey=itemKeyService.getItemKey(ba.getItem(),null,ba.getBonded()); + Inventory inventory = new Inventory(); + inventory.setItemKey(itemKey); + inventory.setPoint(ba.getZPoint()); + inventory.setPointCode(ba.getZPoint().getCode()); +// inventory.setZzkw(ba.getZPoint()); + inventory.setDept(UserUtils.getDept()); + inventory.setArea(ba.getRArea()); + inventory.setQuantity(-qty); + inventoryService.create(inventory); + InventoryLog log=inventoryLogService.storeInventoryLog(logType,BizStatus.REDUCE,billCode,ba.getRArea(),inventory.getItemKey(), + inventory.getPoint(),inventory.getPoint(),null,null,0d,qty,null,null,ba.getBigItem().getCode(), + refObjId,inventory.getId(),description); +// log.setZzkw(ba.getZPoint()); + inventoryLogService.update(log); + } + ItemKey dstItemKey = itemKeyService.getItemKey(ba.getItem(), null,ba.getBonded()); + //台车出库,创建台车库位 + if(logType.equals(BizStatus.TC_OUT)) { + Point dstPoint=pointRepository.findByCode(ba.getTckw()); + if (dstPoint==null){ + dstPoint=new Point(); + dstPoint.setDept(ba.getZPoint().getDept()); + dstPoint.setCode(ba.getTckw()); + dstPoint.setName(ba.getTckw()); + dstPoint.setType(BaseStatus.HCKW); + dstPoint.setArea(tcArea); + pointRepository.save(dstPoint); + }else{ + dstPoint.setArea(tcArea); + dstPoint.setType(BaseStatus.HCKW); + pointRepository.save(dstPoint); + } + Inventory dstInventory = inventoryService.getInventory(dstItemKey, tcArea, dstPoint, dstPoint, dstPoint.getDept(), BizStatus.TC_RK, null); + double srcQty = dstInventory.getQuantity(); + dstInventory.setQuantity(dstInventory.getQuantity() + orderQty*ba.getSingles()); + inventoryService.update(dstInventory); + InventoryLog inventoryLog = inventoryLogService.storeInventoryLog(BizStatus.TC_RK, BizStatus.ADD, billCode, tcArea, dstItemKey, dstInventory.getPoint(), dstInventory.getPoint(), null, null, srcQty, qty+0d, null, null, + ba.getBigItem().getCode(), ba.getId(), dstInventory.getId(), "台车配料入库"); + inventoryLogService.update(inventoryLog); + } + } + } + } \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ImportPointServiceImpl.java b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ImportPointServiceImpl.java index e4ad854..1424f96 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ImportPointServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ImportPointServiceImpl.java @@ -171,6 +171,7 @@ public class ImportPointServiceImpl implements ImportPointService { Map bqTypeMap = new HashMap<>(); bqTypeMap.put("中大物标签","中大物标签"); bqTypeMap.put("小物标签","小物标签"); + bqTypeMap.put("自由货位标签","自由货位标签"); for (PointImport data : dataList) { String code=data.getCode(); String areaName=data.getAreaName(); @@ -180,6 +181,7 @@ public class ImportPointServiceImpl implements ImportPointService { String ns= data.getNs(); String bqlx= data.getBqlx(); Point point = pointIdMap.get(data.getId()); + point.setUpdateDes(""); if(point==null){ throw new BadRequestException("库位不存在"); } @@ -188,6 +190,7 @@ public class ImportPointServiceImpl implements ImportPointService { if(point2!=null){ throw new BadRequestException(code+"库位已存在,不能重复更新"); } + point.setUpdateDes(point.getCode()+"update"+code+"\n"); point.setCode(code); } if(headersMap.containsKey("库区")) { @@ -195,6 +198,7 @@ public class ImportPointServiceImpl implements ImportPointService { if(area==null){ throw new BadRequestException("库区不存在"); } + point.setUpdateDes(point.getArea().getCode()+"update"+areaName+"\n"); point.setArea(area); } if(headersMap.containsKey("存储类型")) { diff --git a/youchain-system/src/main/java/com/youchain/businessdata/domain/CountMoveDetailRecord.java b/youchain-system/src/main/java/com/youchain/businessdata/domain/CountMoveDetailRecord.java index aef8084..f0e95a9 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/domain/CountMoveDetailRecord.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/domain/CountMoveDetailRecord.java @@ -82,7 +82,7 @@ public class CountMoveDetailRecord extends BaseEntity implements Serializable private String srcStockCode; @Column(name = "`plan_qty`") - @ApiModelProperty(value = "计划数量") + @ApiModelProperty(value = "") private Double planQty; @OneToOne diff --git a/youchain-system/src/main/java/com/youchain/businessdata/inputJson/imports/BomAccountImport.java b/youchain-system/src/main/java/com/youchain/businessdata/inputJson/imports/BomAccountImport.java index f48fbfd..4802e46 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/inputJson/imports/BomAccountImport.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/inputJson/imports/BomAccountImport.java @@ -50,7 +50,7 @@ public class BomAccountImport { @ExcelProperty("收容数") private String srs; - @ExcelProperty("台车库位") + @ExcelProperty("工程(台车库位)") private String tckw; @ExcelProperty("大小物") diff --git a/youchain-system/src/main/java/com/youchain/businessdata/repository/InventoryRepository.java b/youchain-system/src/main/java/com/youchain/businessdata/repository/InventoryRepository.java index 5ffaa83..aaac62f 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/repository/InventoryRepository.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/repository/InventoryRepository.java @@ -84,4 +84,9 @@ public interface InventoryRepository extends JpaRepository, Jpa " and inv.point_id=:point_id and inv.item_key_id=:item_key_id and p.type=:point_type and inv.stock_code=:stockCode" , nativeQuery = true) List queryInvPdXd(long point_id,Long item_key_id,String point_type,String stockCode); + @Query(value = "SELECT * FROM data_inventory inv " + + "left join base_point p on inv.point_id=p.id " + + " WHERE inv.point_id=:point_id and inv.item_key_id=:item_key_id and inv.stock_code=:stockCode" , nativeQuery = true) + List queryInvXdMove(long point_id,Long item_key_id,String stockCode); + } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/CountDetailController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/CountDetailController.java index 0f70be8..87fba30 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/rest/CountDetailController.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/rest/CountDetailController.java @@ -23,6 +23,7 @@ import com.youchain.businessdata.service.CountPlanService; import com.youchain.businessdata.service.CountRecordService; import com.youchain.businessdata.service.InventoryService; import com.youchain.businessdata.service.dto.CountDetailQueryCriteria; +import com.youchain.exception.BadRequestException; import com.youchain.exception.handler.ApiError; import com.youchain.exception.handler.ApiResult; import com.youchain.utils.BaseStatus; @@ -129,6 +130,9 @@ public class CountDetailController { for(CountDetail d:details){ List invs=inventoryService.getInvForPlan(p.getType(),d.getArea().getId(), null,null); for(Inventory inv:invs){ + if(inv.getQueuedQty()>0){ + throw new BadRequestException(d.getItem().getCode()+"包含占用数,不能移位"); + } inv.setQueuedQty(inv.getQuantity()); inventoryService.update(inv); countRecordService.createCountRecord(d,inv); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/InventoryController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/InventoryController.java index af6b62d..29cc7bc 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/rest/InventoryController.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/rest/InventoryController.java @@ -278,16 +278,21 @@ public class InventoryController { throw new BadRequestException("没有对应的库存"); } if (type.equals("xd_move_002")) { - String ewm=xdMoveReq.getEwm(); - String[] str=ewm.split("]"); - String pointCode=null; + String pointCode=xdMoveReq.getEwm(); + String[] str=pointCode.split("]"); + String gdItemCode=null; if(str.length>=3) {//固定库位标签 pointCode = str[3]; - }else { - pointCode=ewm; + gdItemCode= str[0]; } - Point point = pointRepository.findByCode(pointCode); - xdMoveReq.setPointId(point.getId()); + Point dstPoint=pointRepository.findByCode(pointCode); + if(dstPoint==null){ + throw new BadRequestException(pointCode + "库位不存在"); + } + if(gdItemCode==null){ + gdItemCode=dstPoint.getItemCode(); + } + xdMoveReq.setPointId(dstPoint.getId()); xdMoveReq.setStockCode(stockCode); this.xdMoveInv(xdMoveReq); } @@ -360,11 +365,11 @@ public class InventoryController { if(srcPoint==null||dstPoint==null) { throw new BadRequestException("请扫描库位"); } - if(!srcPoint.getType().equals(BaseStatus.ZZKW)&&!srcPoint.getType().equals(BaseStatus.HCKW)&&(srcPoint.getArea().getName()).indexOf("盘点")<0) { - throw new BadRequestException(srcPoint.getCode()+"该功能仅限于制造库位或缓存库位或盘点库位"); + if(!srcPoint.getType().equals(BaseStatus.ZZKW)&&(srcPoint.getArea().getName()).indexOf("盘点")<0&&(srcPoint.getArea().getName()).indexOf("临时")<=-1) { + throw new BadRequestException(srcPoint.getCode()+"该功能仅限于制造库位或临时库位或盘点库位"); } - if(!dstPoint.getType().equals(BaseStatus.ZZKW)&&!dstPoint.getType().equals(BaseStatus.HCKW)&&(dstPoint.getArea().getName()).indexOf("盘点")<0) { - throw new BadRequestException(dstPoint.getCode()+"该功能仅限于制造库位或缓存库位或盘点库位"); + if(!dstPoint.getType().equals(BaseStatus.ZZKW)&&(dstPoint.getArea().getName()).indexOf("盘点")<0&&(dstPoint.getArea().getName()).indexOf("临时")<0) { + throw new BadRequestException(dstPoint.getCode()+"该功能仅限于制造库位或临时库位或盘点库位"); } BomAccount bomAccount=bs.get(0); Item item=bomAccount.getItem(); @@ -381,15 +386,15 @@ public class InventoryController { double srcQty = srcInventory.getQuantity(); srcInventory.setQuantity(srcInventory.getQuantity() - move_qty); inventoryService.update(srcInventory); - InventoryLog inventoryLog = inventoryLogService.storeInventoryLog(BizStatus.MOVE, BizStatus.ADD, "制造入库APP", srcPoint.getArea(), itemKey, srcInventory.getPoint(), srcInventory.getPoint(), null, null, srcQty, move_qty + 0d, null, null, - BizStatus.ZZKW_TL, null, srcInventory.getId(), "制造移位APP"); + InventoryLog inventoryLog = inventoryLogService.storeInventoryLog(BizStatus.MOVE, BizStatus.REDUCE, "制造移位APP", srcPoint.getArea(), itemKey, srcInventory.getPoint(), srcInventory.getPoint(), null, null, srcQty, move_qty + 0d, null, null, + BizStatus.ZZKW_MOVE, null, srcInventory.getId(), "制造移位APP"); Inventory dstInventory = inventoryService.getInventory(itemKey, dstPoint.getArea(), dstPoint, dstPoint, dstPoint.getDept(), BizStatus.MOVE, null); double srcQty2 = dstInventory.getQuantity(); dstInventory.setQuantity(dstInventory.getQuantity() + move_qty); inventoryService.update(dstInventory); - InventoryLog dstInventoryLog = inventoryLogService.storeInventoryLog(BizStatus.MOVE, BizStatus.ADD, "制造入库APP", dstPoint.getArea(), itemKey, dstInventory.getPoint(), dstInventory.getPoint(), null, null, srcQty2, move_qty + 0d, null, null, - BizStatus.ZZKW_TL, null, dstInventory.getId(), "制造移位APP"); + InventoryLog dstInventoryLog = inventoryLogService.storeInventoryLog(BizStatus.MOVE, BizStatus.ADD, "制造移位APP", dstPoint.getArea(), itemKey, dstInventory.getPoint(), dstInventory.getPoint(), null, null, srcQty2, move_qty + 0d, null, null, + BizStatus.ZZKW_MOVE, null, dstInventory.getId(), "制造移位APP"); } @@ -407,29 +412,47 @@ public class InventoryController { if(!point.getType().equals("CH")) { throw new BadRequestException("库位类型需为材管库位"); } - List invs=inventoryRepository.queryInvStockCode(xdMoveReq.getStockCode()); - if(invs.size()<=0){ + List srcInvs=inventoryRepository.queryInvStockCode(xdMoveReq.getStockCode()); + if(srcInvs.size()<=0){ throw new BadRequestException("没有对应的库存"); } - for(Inventory inventory:invs){ - double srcQty=inventory.getQuantity(); - Point srcPoint=inventory.getPoint(); - if(inventory.getQueuedQty()>0){ - throw new BadRequestException("已锁定,不能移位"); + for(Inventory srcInventory:srcInvs){ + double srcQty=srcInventory.getQuantity(); + Point srcPoint=srcInventory.getPoint(); + if(srcInventory.getQueuedQty()>0){ + throw new BadRequestException("已占用,不能移位"); } - if(point.getId().equals(inventory.getPoint().getId())){ + if(point.getId().equals(srcInventory.getPoint().getId())){ throw new BadRequestException("库位相同,不能移位"); } if(point.getItemCode()!=null&&!point.getItemCode().equals("")){ - if(!point.getItemCode().equals(inventory.getItemKey().getItem().getCode())){ + if(!point.getItemCode().equals(srcInventory.getItemKey().getItem().getCode())){ 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, - BizStatus.ZZKW_TL, null, inventory.getId(), "箱单移位"); + Long invId=srcInventory.getId(); + //查找目标库存 + List dstInvs=inventoryRepository.queryInvXdMove(point.getId(),srcInventory.getItemKey().getId(),xdMoveReq.getStockCode()); + if(dstInvs.size()>0) { + for (Inventory dstInventory : dstInvs) { + dstInventory.setArea(point.getArea()); + dstInventory.setPoint(point); + dstInventory.setPointCode(point.getCode()); + dstInventory.setQuantity(srcQty); + inventoryRepository.save(dstInventory); + invId=dstInventory.getId(); + } + srcInventory.setQuantity(0d); + inventoryRepository.save(srcInventory); + }else{ + //如果没有直接将现有数据换成该目标库位 + srcInventory.setArea(point.getArea()); + srcInventory.setPoint(point); + srcInventory.setPointCode(point.getCode()); + inventoryRepository.save(srcInventory); + } + InventoryLog inventoryLog = inventoryLogService.storeInventoryLog(BizStatus.XD_MOVE, BizStatus.REDUCE, "箱单移位", point.getArea(), srcInventory.getItemKey(), srcPoint, point, null, null, srcQty, srcInventory.getQuantity(), xdMoveReq.getStockCode(), null, + BizStatus.XD_MOVE, null, invId, "箱单移位"); } return new ResponseEntity<>("操作成功",HttpStatus.OK); } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/XppRecordController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/XppRecordController.java index f596c24..25d8675 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/rest/XppRecordController.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/rest/XppRecordController.java @@ -732,11 +732,20 @@ public class XppRecordController { Set ids=iPut.getIds(); String pointCode=iPut.getPointCode(); if(pointCode==null||pointCode.equals("")){ - return new ResponseEntity<>("移位库位必填", BAD_REQUEST); + throw new BadRequestException("移位库位必填"); + } + String[] str=pointCode.split("]"); + String gdItemCode=null; + if(str.length>=3) {//固定库位标签 + pointCode = str[3]; + gdItemCode= str[0]; } Point dstPoint=pointService.getPoint(pointCode,null,null,null); if(dstPoint==null){ - return new ResponseEntity<>(dstPoint + "库位不存在", BAD_REQUEST); + throw new BadRequestException(pointCode + "库位不存在"); + } + if(gdItemCode==null){ + gdItemCode=dstPoint.getItemCode(); } Area dstArea=dstPoint.getArea(); Point zzkw=null; @@ -750,6 +759,9 @@ public class XppRecordController { if(!xppRecord.getStatus().equals(BizStatus.PUTAWAY)){ throw new BadRequestException(itemCode+"现品票状态不正确"); } + if(gdItemCode!=null&&!gdItemCode.equals("")&&!itemCode.equals(gdItemCode)){ + throw new BadRequestException("品番"+itemCode+"和库位固定品番"+gdItemCode+"不匹配"); + } ItemKey ik = xppRecord.getItemKey(); Point srcPoint=xppRecord.getInvPoint(); Area srcArea=srcPoint.getArea(); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/returnJson/BomPrint.java b/youchain-system/src/main/java/com/youchain/businessdata/returnJson/BomPrint.java index 693bef9..e6b62c3 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/returnJson/BomPrint.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/returnJson/BomPrint.java @@ -30,36 +30,4 @@ public interface BomPrint { String getBqlx(); -// private String ns; -// -// @ExcelProperty("箱种") -// private String xz; -// -// @ExcelProperty("品名") -// private String pm; -// -// @ExcelProperty("供应商") -// private String supplier; -// -// @ExcelProperty("货位") -// private String hw; -// -// @ExcelProperty("收容数") -// private String srs; -// -// @ExcelProperty("大小物") -// private String dxw; -// -// @ExcelProperty("税别") -// private String bonded; -// -// @ExcelProperty("机型") -// private String jxs; -// -// @ExcelProperty("台用量") -// private String tyls; -// -// @ExcelProperty("二维码") -// private String ewm; - } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/returnJson/TcOutList.java b/youchain-system/src/main/java/com/youchain/businessdata/returnJson/TcOutList.java new file mode 100644 index 0000000..cf3f8d7 --- /dev/null +++ b/youchain-system/src/main/java/com/youchain/businessdata/returnJson/TcOutList.java @@ -0,0 +1,26 @@ +package com.youchain.businessdata.returnJson; + +import lombok.Data; + +import java.sql.Timestamp; + +@Data +public class TcOutList { + /**序号*/ + Long bom_id; + /**品番*/ + String item_code; + /**品名*/ + String item_name; + /**货位*/ + String point_code; + /**数量*/ + int order_qty; + /**税别*/ + String bonded; + /**机型代码*/ + String big_item_code; + /**机型名称*/ + String big_item_name; + +} diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/InventoryQueryCriteria.java b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/InventoryQueryCriteria.java index 589778a..6bee393 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/InventoryQueryCriteria.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/InventoryQueryCriteria.java @@ -90,6 +90,9 @@ public class InventoryQueryCriteria{ @Query(joinName = "area",propName = "bexb",type = Query.Type.EQUAL) private Boolean bexb; + @Query(joinName = "area",propName = "betc",type = Query.Type.EQUAL) + private Boolean betc; + /** 模糊 */ @Query(type = Query.Type.INNER_LIKE) private String stockCode; diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AsnDetailServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AsnDetailServiceImpl.java index 26a501e..68c19a8 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AsnDetailServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AsnDetailServiceImpl.java @@ -171,7 +171,7 @@ public class AsnDetailServiceImpl implements AsnDetailService { asn.setReceivedQuantity(asn.getReceivedQuantity()-t.getPlanQty()); } - InventoryLog log=inventoryLogService.storeInventoryLog(BizStatus.RECEIVING_CANCEL,BizStatus.REDUCE,null,t.getArea(),t.getItemKey(),t.getDstPoint(),t.getSrcPoint(),null,null,srcQty,t.getPlanQty(), + InventoryLog log=inventoryLogService.storeInventoryLog(BizStatus.RECEIVING_CANCEL,BizStatus.REDUCE,t.getBillCode(),t.getArea(),t.getItemKey(),t.getDstPoint(),t.getSrcPoint(),null,null,srcQty,t.getPlanQty(), null,ewm, BizStatus.ASN,inventory.getId(),inventory.getId(),"取消上架"); taskRepository.delete(t); if(xppRecord!=null&&d!=null){ @@ -281,12 +281,15 @@ public class AsnDetailServiceImpl implements AsnDetailService { // }else{ // pc1=DateUtil.dateYmdz(); // } - if(!area.getBexb()){ - pc1=DateUtil.dateYmdz(); - } +// if(!area.getBexb()){ +// pc1=DateUtil.dateYmdz(); +// } if(point==null){ throw new BadRequestException("请选择入库库位"); } + if(point.getType().equals(BaseStatus.CH)){//材管库位入库需要批次 + pc1=DateUtil.dateYmdz(); + } double unRecQty=d.getOrderQty() - d.getReceivedQty(); if ( recQty<=unRecQty) { //现品票确认将任务id回写到现品票表中 diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/CountMoveServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/CountMoveServiceImpl.java index 1fd769b..541e5b9 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/CountMoveServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/CountMoveServiceImpl.java @@ -120,6 +120,9 @@ public class CountMoveServiceImpl implements CountMoveService { List inventoryList=inventoryRepository.queryInventoryArea(countMove.getSrcArea().getId()); for(Inventory inv:inventoryList) { ItemKey itemKey = inv.getItemKey(); + if(inv.getQueuedQty()>0){ + throw new BadRequestException(itemKey.getItem().getCode()+"包含占用数,不能移位"); + } // if(inv.getStockCode()==null) {//非箱单库存根据纳入数调整库存数 // int nrs = xppRecordRepository.queryXppItemKeyPointNrs(itemKey.getId(), inv.getPoint().getId()); // if (inv.getQueuedQty() > 0) { @@ -245,7 +248,7 @@ public class CountMoveServiceImpl implements CountMoveService { log.info("xppRecordListAll:"); List xppRecordListAll = new ArrayList<>(); if(!countMove.getSrcArea().getBexb()) { - xppRecordRepository.queryXppItemKeyPoint2(); + xppRecordListAll= xppRecordRepository.queryXppItemKeyPoint2(); } Map> map_xppRecord=new HashMap<>(); log.info("xppRecordListAll:"+xppRecordListAll.size()); @@ -293,8 +296,12 @@ public class CountMoveServiceImpl implements CountMoveService { key2+=inv.getStockCode(); } if (inv.getQueuedQty() > 0) { - throw new BadRequestException(itemKey.getItem().getCode() + "包含占用数"); + //throw new BadRequestException(itemKey.getItem().getCode() + "包含占用数"); + d.setRemark("包含占用数,不能移位!"); + countMoveDetailRepository.save(d); + continue; } + List xppRecordList =new ArrayList<>(); if(map_xppRecord!=null&&map_xppRecord.size()>0) { xppRecordList=map_xppRecord.get(key2); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/InventoryServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/InventoryServiceImpl.java index 4b91f2e..5a47bbc 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/InventoryServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/InventoryServiceImpl.java @@ -182,6 +182,7 @@ public class InventoryServiceImpl implements InventoryService { hql+=" and inv.itemKey.propC2='"+propC2+"'"; } hql+=" and inv.area.code not like '%盘点%'"; + hql+=" and inv.area.code not like '%临时%'"; hql+= " order by inv.itemKey.propC1 asc,inv.stockCode asc "; Query query = entityManager.createQuery(hql); List inventoryList = query.getResultList(); @@ -364,7 +365,7 @@ public class InventoryServiceImpl implements InventoryService { inventory = inventoryList.get(0); } else { //创建Inventory - if (type.equals(BizStatus.ZZKW_MOVE) ||type.equals(BizStatus.ZZKW_TL) ||type.equals(BizStatus.RECEIVING_UP) || type.equals(BizStatus.MOVE)||type.equals(BizStatus.PICK_DOWN)||type.equals(BizStatus.PICK_CANCEL)||type.equals(BizStatus.SL_ALL)||type.equals(BizStatus.COUNT_MOVE)||type.equals(BizStatus.YK_JS)) { + if (type.equals(BizStatus.ZZKW_MOVE) ||type.equals(BizStatus.ZZKW_TL) ||type.equals(BizStatus.RECEIVING_UP) || type.equals(BizStatus.MOVE)||type.equals(BizStatus.PICK_DOWN)||type.equals(BizStatus.PICK_CANCEL)||type.equals(BizStatus.SL_ALL)||type.equals(BizStatus.COUNT_MOVE)||type.equals(BizStatus.YK_JS)||type.equals(BizStatus.TC_RK)) { inventory = new Inventory(); inventory.setItemKey(itemKey); inventory.setPoint(point); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickTicketServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickTicketServiceImpl.java index c0f8b26..106af12 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickTicketServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickTicketServiceImpl.java @@ -479,7 +479,7 @@ public class PickTicketServiceImpl implements PickTicketService { throw new BadRequestException(HttpStatus.NOT_FOUND, "拣货数量大于分配数量"); } } - Boolean isCf= Boolean.FALSE; + Boolean isCf= Boolean.FALSE;//是否超发 double cfQty=0; if (pickQty > (task.getPlanQty() - task.getMoveQty())) { fpQty = task.getPlanQty() - task.getMoveQty(); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/SparepartsServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/SparepartsServiceImpl.java index 683f225..4f91ef1 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/SparepartsServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/SparepartsServiceImpl.java @@ -145,63 +145,7 @@ public class SparepartsServiceImpl implements SparepartsService { if (bs.size() <= 0) { throw new BadRequestException(s.getBigItemId().getCode() + "未查到"+kyQz+"对应BOM工位清单"); } - for(BomAccount ba:bs){ - if(ba.getZPoint()==null){ - throw new BadRequestException(ba.getItem().getCode()+"维护制造库位"); - } - double qty=s.getOrderQuantity()*ba.getSingles(); - //扣除线边库存 - List inventorys=inventoryService.getXbHyInv(ba.getItem(),ba.getRArea(),ba.getZPoint(),"耗用"); - if(inventorys.size()>0){ - int num=0; - for(Inventory inv:inventorys){ - if(qty<=0){ - break; - } - num++; - if(numqty||num==inventorys.size()){ - hyQty=qty; - qty-=hyQty; - }else{ - hyQty=inv.getQuantity(); - qty-=hyQty; - } - inv.setQuantity(inv.getQuantity()-hyQty); - inventoryService.update(inv); - InventoryLog log= inventoryLogService.storeInventoryLog(BizStatus.XB_HY,BizStatus.REDUCE,ba.getBigItem().getCode(),ba.getRArea(),inv.getItemKey(), - inv.getPoint(),inv.getPoint(),null,null,srcQty,hyQty,null,null,s.getBigItemId().getCode(), - s.getId(),inv.getId(),"零件耗用"); - log.setZzkw(ba.getZPoint()); - inventoryLogService.update(log); - } - }else{ -// Point point=ba.getCArea().getPoint(); - Point point=pointService.findEntityById(ba.getRArea().getPointId()); - if(point==null){ - throw new BadRequestException(ba.getRArea().getCode()+"库区无对应待投料库位"); - } - ItemKey itemKey=itemKeyService.getItemKey(ba.getItem(),null,ba.getBonded()); - Inventory inventory = new Inventory(); - inventory.setItemKey(itemKey); - inventory.setPoint(ba.getZPoint()); - inventory.setPointCode(ba.getZPoint().getCode()); -// inventory.setZzkw(ba.getZPoint()); - inventory.setDept(UserUtils.getDept()); - inventory.setArea(ba.getRArea()); - inventory.setQuantity(-qty); - inventoryService.create(inventory); - InventoryLog log=inventoryLogService.storeInventoryLog(BizStatus.XB_HY,BizStatus.REDUCE,ba.getBigItem().getCode(),ba.getRArea(),inventory.getItemKey(), - inventory.getPoint(),inventory.getPoint(),null,null,0d,qty,null,null,s.getBigItemId().getCode(), - s.getId(),inventory.getId(),"零件耗用"); -// log.setZzkw(ba.getZPoint()); - inventoryLogService.update(log); - } - } + bomAccountService.bomInvDeal(bs,s.getOrderQuantity(),BizStatus.XB_HY,s.getBigItemId().getCode(),s.getId(),"零件耗用"); s.setStatus(BizStatus.CONSUME); s.setHyBy(SecurityUtils.getCurrentUsername()); s.setHyTime(new Timestamp(new Date().getTime())); diff --git a/youchain-system/src/main/java/com/youchain/utils/BaseStatus.java b/youchain-system/src/main/java/com/youchain/utils/BaseStatus.java index 7de05ac..b441b4a 100644 --- a/youchain-system/src/main/java/com/youchain/utils/BaseStatus.java +++ b/youchain-system/src/main/java/com/youchain/utils/BaseStatus.java @@ -63,6 +63,12 @@ public interface BaseStatus { */ public static String DEFAULT_AREA = "CGK"; + + /** + * 默认台车库区 + */ + public static String DEFAULT_TC_AREA = "TCK"; + public static String AREA_S = "S仓"; public static String AREA_A = "A仓"; @@ -142,5 +148,11 @@ public interface BaseStatus { */ public static String ZDWBQ = "_ZDWBQ"; + /** + * 标签种类-小物标签 + */ + public static String TCBQ= "_TCBQ"; + + } diff --git a/youchain-system/src/main/java/com/youchain/utils/BizStatus.java b/youchain-system/src/main/java/com/youchain/utils/BizStatus.java index af81fb1..c90c7e1 100644 --- a/youchain-system/src/main/java/com/youchain/utils/BizStatus.java +++ b/youchain-system/src/main/java/com/youchain/utils/BizStatus.java @@ -183,6 +183,11 @@ public class BizStatus { * 库存日志-线边耗用 */ public static String XB_HY = "XB_HY"; + + /** + * 库存日志-台车配料出库 + */ + public static String TC_OUT = "TC_OUT"; /** * 盘点类型-库区 */ @@ -247,6 +252,11 @@ public class BizStatus { */ public static String ZZKW_TL = "ZZKW_TL"; + /** + * 台车入库 + */ + public static String TC_RK = "TC_RK"; + /** * 制造库位移位 */ @@ -258,7 +268,7 @@ public class BizStatus { public static String ZZKW_RK = "ZZKW_RK"; /** - * 制造库位入库 + * 箱单移位 */ public static String XD_MOVE = "XD_MOVE"; /**