From 4f992bf739718d37de1305ef344b7d3b99f39d50 Mon Sep 17 00:00:00 2001 From: FOAM <491460741@qq.com> Date: Tue, 16 Sep 2025 15:00:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/youchain/utils/DateUtil.java | 24 +++++ .../youchain/basicdata/domain/BomAccount.java | 2 - .../basicdata/domain/ProductionPlanVo.java | 1 + .../repository/ProductionPlanRepository.java | 18 +++- .../rest/AutomaticPlanningController.java | 2 +- .../basicdata/rest/BomAccountController.java | 73 +++++-------- .../basicdata/rest/ImportDataController.java | 14 +++ .../rest/ProductionPlanController.java | 2 +- .../basicdata/service/BomAccountService.java | 4 + .../service/ProductionPlanService.java | 2 +- .../service/dto/BomAccountPointDto.java | 2 + .../service/impl/BomAccountServiceImpl.java | 25 +++++ .../impl/ImportProductionPlanServiceImpl.java | 101 +++++++++++------- .../impl/ProductionPlanServiceImpl.java | 27 +++-- .../businessdata/domain/PickDetail.java | 17 +++ .../businessdata/domain/Spareparts.java | 10 ++ .../repository/InventoryRepository.java | 5 + .../repository/XppRecordRepository.java | 4 + .../rest/PickDetailController.java | 37 +++++-- .../rest/SparepartsController.java | 12 ++- .../rest/XppRecordController.java | 18 ++-- .../service/InventoryService.java | 2 +- .../service/dto/AsnQueryCriteria.java | 6 ++ .../dto/InventoryLogQueryCriteria.java | 2 + .../service/dto/InventoryQueryCriteria.java | 3 + .../service/dto/PickDetailDto.java | 7 ++ .../service/dto/SparepartsDto.java | 11 +- .../service/dto/XppRecordQueryCriteria.java | 3 + .../service/dto/jsonDto/CxjlDto.java | 1 + .../service/impl/InventoryServiceImpl.java | 11 +- .../service/impl/PickDetailServiceImpl.java | 3 + .../service/impl/SparepartsServiceImpl.java | 17 ++- .../service/impl/XppRecordServiceImpl.java | 4 + .../java/com/youchain/utils/BizStatus.java | 5 + 34 files changed, 335 insertions(+), 140 deletions(-) diff --git a/youchain-common/src/main/java/com/youchain/utils/DateUtil.java b/youchain-common/src/main/java/com/youchain/utils/DateUtil.java index bebfdf8..94d448a 100644 --- a/youchain-common/src/main/java/com/youchain/utils/DateUtil.java +++ b/youchain-common/src/main/java/com/youchain/utils/DateUtil.java @@ -16,6 +16,8 @@ package com.youchain.utils; +import com.youchain.exception.BadRequestException; + import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -23,6 +25,7 @@ import java.time.*; import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; +import java.util.Locale; /** * @author: liaojinlong @@ -133,6 +136,27 @@ public class DateUtil { return null; } } + + + public static Date md_date(String dateString) { + try { + // 设置中国地区Locale + Locale chinaLocale = Locale.SIMPLIFIED_CHINESE; + // 获取当前年份 + Calendar calendar = Calendar.getInstance(); + int currentYear = calendar.get(Calendar.YEAR); + // 构建完整的日期字符串 + dateString = currentYear+"年" + dateString; + // 创建日期格式化对象 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日", chinaLocale); + // 解析日期字符串为Date对象 + return dateFormat.parse(dateString); + } catch (ParseException e) { + throw new BadRequestException(dateString+"日期格式错误"); + } + } + + /** * 日期格式化 yyyy-MM-dd * diff --git a/youchain-system/src/main/java/com/youchain/basicdata/domain/BomAccount.java b/youchain-system/src/main/java/com/youchain/basicdata/domain/BomAccount.java index 5f7d003..3ebfb5f 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/domain/BomAccount.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/domain/BomAccount.java @@ -134,8 +134,6 @@ public class BomAccount extends BaseEntity implements Serializable { @Column(name = "`tckw`") @ApiModelProperty(value = "台车库位,工程") private String tckw; - - @OneToOne @JoinColumn(name = "`z_point_id`") @ApiModelProperty(value = "制造库位") diff --git a/youchain-system/src/main/java/com/youchain/basicdata/domain/ProductionPlanVo.java b/youchain-system/src/main/java/com/youchain/basicdata/domain/ProductionPlanVo.java index 123e148..3bc2938 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/domain/ProductionPlanVo.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/domain/ProductionPlanVo.java @@ -6,6 +6,7 @@ import lombok.Data; public class ProductionPlanVo { private Long id; private String machineNo; + private Long areaId; private String workingStation; private String name; private Integer number; diff --git a/youchain-system/src/main/java/com/youchain/basicdata/repository/ProductionPlanRepository.java b/youchain-system/src/main/java/com/youchain/basicdata/repository/ProductionPlanRepository.java index 5f30b67..a73a285 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/repository/ProductionPlanRepository.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/repository/ProductionPlanRepository.java @@ -79,11 +79,21 @@ public interface ProductionPlanRepository extends JpaRepository findByGwIdnoList(@Param("idno") String idno,@Param("workingStation") String workingStation); + @Query(value = "SELECT count(id) FROM base_production_plan p WHERE p.IDNO >= :IDNO and p.machine_No=:machineNo and p.working_station =:workingStation and p.statue!='UN_CONSUME'", nativeQuery = true) + int existsGwHyIdno( @Param("IDNO") String IDNO,@Param("workingStation") String workingStation,@Param("machineNo")String machineNo); + @Query(value = "SELECT * FROM base_production_plan p WHERE p.idno >= :idno and p.machine_No=:machineNo and p.working_station =:workingStation", nativeQuery = true) + List findByGwIdnoList(@Param("idno") String idno,@Param("workingStation") String workingStation ,@Param("machineNo")String machineNo); + @Query(value = "SELECT * FROM base_production_plan p WHERE p.idno = :idno and p.machine_No=:machineNo and p.working_station =:workingStation", nativeQuery = true) + List findByIDNO( @Param("idno") String idno,@Param("workingStation") String workingStation ,@Param("machineNo")String machineNo); + /**查找目前最大的序号*/ + @Query(value = "SELECT max(order_no) FROM `base_production_plan` p where p.machine_No=:machineNo and p.working_station =:workingStation", nativeQuery = true) + Long getMaxOrderNo(@Param("workingStation") String workingStation ,@Param("machineNo")String machineNo); + @Query(value = "SELECT * FROM `base_production_plan` bpp where bpp.rk_area_id = :rk_area_id and bpp.statue='UN_CONSUME' AND bpp.`IDNO`<= :IDNO order by bpp.`IDNO` ASC", nativeQuery = true) + List getIdNoAllData(@Param("rk_area_id") Long rk_area_id, @Param("IDNO")String IDNO); + + @Query(value = "SELECT bpp.rk_area_id FROM `base_production_plan` bpp where bpp.`IDNO`<= :IDNO group by bpp.working_station", nativeQuery = true) + List getIdNoHyGw( @Param("IDNO")String IDNO); } \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/basicdata/rest/AutomaticPlanningController.java b/youchain-system/src/main/java/com/youchain/basicdata/rest/AutomaticPlanningController.java index a5ead2e..96a0032 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/rest/AutomaticPlanningController.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/rest/AutomaticPlanningController.java @@ -440,7 +440,7 @@ public class AutomaticPlanningController { automaticPlanning.setStartNum(startNum); automaticPlanningService.update(automaticPlanning); AutomaticPlanDetail detail=automaticPlanDetailService.storeAutomaticPlanDetail(automaticPlanning); - productionPlanService.scsxHaoyong(whyList,gw, "上线计划自动耗用:"+detail.getId()); + productionPlanService.scsxHaoyong(whyList,detail.getShArea().getId(), "上线计划自动耗用:"+detail.getId()); } return new ResponseEntity<>("操作成功",HttpStatus.OK); } 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 17ac0de..a9fa322 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 @@ -19,13 +19,11 @@ import cn.hutool.json.JSONArray; import cn.hutool.json.JSONUtil; import com.youchain.annotation.AnonymousAccess; import com.youchain.annotation.Log; -import com.youchain.basicdata.domain.BigItem; -import com.youchain.basicdata.domain.BomAccount; -import com.youchain.basicdata.domain.Item; -import com.youchain.basicdata.domain.Point; +import com.youchain.basicdata.domain.*; import com.youchain.basicdata.repository.BomAccountRepository; import com.youchain.basicdata.repository.PointRepository; import com.youchain.basicdata.repository.TableConfigRepository; +import com.youchain.basicdata.service.AreaService; import com.youchain.basicdata.service.BomAccountLogService; import com.youchain.basicdata.service.BomAccountService; import com.youchain.basicdata.service.PointService; @@ -35,10 +33,7 @@ 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.utils.BaseStatus; -import com.youchain.utils.RedisUtils; -import com.youchain.utils.SecurityUtils; -import com.youchain.utils.SpringContextHolder; +import com.youchain.utils.*; import lombok.extern.slf4j.Slf4j; import net.dreamlu.mica.core.utils.JsonUtil; import org.springframework.data.domain.Pageable; @@ -72,6 +67,7 @@ public class BomAccountController { private final BomAccountMapper bomAccountMapper; private final PointRepository pointRepository; private final PointService pointService; + private final AreaService areaService; private final BomAccountRepository bomAccountRepository; @Log("导出数据") @@ -341,6 +337,15 @@ public class BomAccountController { return new ResponseEntity<>(boms,HttpStatus.OK); } + @GetMapping(value = "/queryByAreaId/{areaId}") + @Log("根据库区查询bomAccount完成品品番") + @ApiOperation("根据库区查询bomAccount完成品品番") + @AnonymousAccess + public ResponseEntity queryByAreaId(@PathVariable("areaId") Long areaId){ + List boms=bomAccountService.queryByAreaId(areaId); + return new ResponseEntity<>(boms,HttpStatus.OK); + } + @GetMapping(value = "/queryBomAccountPoints") @Log("查询bomAccount品番库位") @ApiOperation("查询bomAccount品番库位") @@ -355,28 +360,14 @@ public class BomAccountController { @ApiOperation("新增bomAccount") @PreAuthorize("@el.check('super:man')") public ResponseEntity createBomAccount(@Validated @RequestBody BomAccount resources){ -// if(resources.getHPoint().getCode()==null){ -// resources.setHPoint(null); -// }else{ -// Point point=pointRepository.findByCode(resources.getHPoint().getCode()); -// if (point == null) { -// point = pointService.createPoint(resources.getHPoint().getCode(), "ZCKW", resources.getRArea(),null); -// } -// resources.setHPoint(point); -// } -// if(resources.getZPoint().getCode()==null){ -// resources.setZPoint(null); -// }else{ -// Point point=pointRepository.findByCode(resources.getZPoint().getCode()); -// if (point == null) { -// point = pointService.createPoint(resources.getZPoint().getCode(), BaseStatus.HCKW, resources.getRArea()); -// } -// resources.setZPoint(point); -// } - BomAccountDto bomAccountDto=bomAccountService.create(resources); -// bomAccountDto.setRArea(bomAccountDto.getZPoint().getArea()); - bomAccountLogService.copyBomAccount(bomAccountDto.getId(),"add"); - return new ResponseEntity<>(bomAccountDto,HttpStatus.CREATED); + Area area=areaService.findByCode(BaseStatus.DEFAULT_AREA); + resources.setRArea(resources.getZPoint().getArea()); + resources.setCArea(area); + resources.setBigItemName(resources.getBigItem().getName()); + resources.setBigItemCode(resources.getBigItem().getCode()); + resources.setEnabled(true); + resources.setBp_type("大"); + return new ResponseEntity<>(bomAccountService.create(resources),HttpStatus.CREATED); } @PutMapping @@ -384,26 +375,10 @@ public class BomAccountController { @ApiOperation("修改bomAccount") @PreAuthorize("@el.check('super:man')") public ResponseEntity updateBomAccount(@Validated @RequestBody BomAccount resources){ -// if(resources.getHPoint().getCode()==null){ -// resources.setHPoint(null); -// }else{ -// Point point=pointRepository.findByCode(resources.getHPoint().getCode()); -// if (point == null) { -// point = pointService.createPoint(resources.getHPoint().getCode(), "ZCKW", resources.getRArea(),null); -// } -// resources.setHPoint(point); -// } -// if(resources.getZPoint().getCode()==null){ -// resources.setZPoint(null); -// }else{ -// Point point=pointRepository.findByCode(resources.getZPoint().getCode()); -// if (point == null) { -// point = pointService.createPoint(resources.getZPoint().getCode(), BaseStatus.HCKW, resources.getRArea()); -// } -// resources.setZPoint(point); -// } + resources.setBigItemName(resources.getBigItem().getName()); + resources.setBigItemCode(resources.getBigItem().getCode()); + resources.setRArea(resources.getZPoint().getArea()); bomAccountService.update(resources); - bomAccountLogService.copyBomAccount(resources.getId(),"update"); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } diff --git a/youchain-system/src/main/java/com/youchain/basicdata/rest/ImportDataController.java b/youchain-system/src/main/java/com/youchain/basicdata/rest/ImportDataController.java index 9008bb7..1969456 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/rest/ImportDataController.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/rest/ImportDataController.java @@ -71,6 +71,7 @@ public class ImportDataController { private final ImportBomAccountService importBomAccountService; private final ImportPointService importPointService; private final ImportItemService importItemService; + private final ImportProductionPlanService importProductionPlanService; @Log("导入完成品品番") @ApiOperation("导入完成品品番") @@ -240,6 +241,19 @@ public class ImportDataController { } + @Log("导入ProductionPlan") + @ApiOperation("导入ProductionPlan") + @PostMapping(value = "/importProductionPlan") + @Transactional + @AnonymousAccess + public ResponseEntity importProductionPlan(@RequestParam("file") MultipartFile multipartFile) { + log.info("开始导入"); + long start = System.currentTimeMillis(); + importProductionPlanService.importData(multipartFile); + log.info("导入结束,耗时:{}ms", (System.currentTimeMillis() - start)); + return new ResponseEntity<>(ApiResult.success(OK.value(), "导入成功", null), OK); + } + @Log("导入Point") @ApiOperation("导入Point") @PostMapping(value = "/importPoint") diff --git a/youchain-system/src/main/java/com/youchain/basicdata/rest/ProductionPlanController.java b/youchain-system/src/main/java/com/youchain/basicdata/rest/ProductionPlanController.java index a6e0f00..1fa940c 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/rest/ProductionPlanController.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/rest/ProductionPlanController.java @@ -189,7 +189,7 @@ public class ProductionPlanController { if(productionPlans == null || productionPlans.size() < productionPlanVo.getNumber()){ return new ResponseEntity(ApiResult.fail(400,"库存不够,无法批量耗用",""), HttpStatus.BAD_REQUEST); } - productionPlanService.scsxHaoyong(productionPlans,productionPlanVo.getWorkingStation(),"生产顺序计划耗用"); + productionPlanService.scsxHaoyong(productionPlans,productionPlanVo.getAreaId(),"生产顺序计划耗用"); return new ResponseEntity<>(ApiResult.success("耗用成功!",""), HttpStatus.OK); } 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 7693405..cd15731 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 @@ -97,6 +97,8 @@ public interface BomAccountService { void download(List all, HttpServletResponse response) throws Exception, Exception; List queryBigItemByType(String stationType); + + List queryByAreaId(Long areaId); /**得到品番*/ List queryItemByArea(Long areaId); @@ -112,6 +114,8 @@ public interface BomAccountService { * @return */ List queryBomAccount(Long bigItemId,Long jsAreaId,String gw); + + List queryBomAccountKy(Long bigItemId,Long shAreaId,String kyh); /*** * 备货计划生成对应的备货操作明细数据 * @param code diff --git a/youchain-system/src/main/java/com/youchain/basicdata/service/ProductionPlanService.java b/youchain-system/src/main/java/com/youchain/basicdata/service/ProductionPlanService.java index 52eeda0..2248366 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/service/ProductionPlanService.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/service/ProductionPlanService.java @@ -109,6 +109,6 @@ public interface ProductionPlanService { /** * 批量耗用 */ - void scsxHaoyong(List productionPlans,String gw,String des); + void scsxHaoyong(List productionPlans,Long areaId,String des); } \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/basicdata/service/dto/BomAccountPointDto.java b/youchain-system/src/main/java/com/youchain/basicdata/service/dto/BomAccountPointDto.java index 10dfafb..eeb199a 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/service/dto/BomAccountPointDto.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/service/dto/BomAccountPointDto.java @@ -15,6 +15,8 @@ */ package com.youchain.basicdata.service.dto; +import com.youchain.basicdata.domain.Item; +import com.youchain.basicdata.domain.Point; import lombok.Data; import java.io.Serializable; 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 ed8f020..90a007c 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 @@ -176,6 +176,18 @@ public class BomAccountServiceImpl implements BomAccountService { return null; } + @Override + public List queryByAreaId(Long areaId) { + String hql = "select t.bigItem from BomAccount t where t.rArea.id = " + areaId+" group by t.bigItem"; + Query query = entityManager.createQuery(hql); + List resultList = query.getResultList(); + if (!resultList.isEmpty()){ + return resultList; + } + return null; + } + + @Override @Cacheable(key = "'areaid:' + #p0") @@ -246,6 +258,19 @@ public class BomAccountServiceImpl implements BomAccountService { return resultList; } + + public List queryBomAccountKy(Long bigItemId,Long shAreaId,String kyh) { + String hql = "from BomAccount t where t.bigItem.id="+bigItemId+" and t.item.enabled=true"; + if(shAreaId!=null){ + hql+=" and t.rArea.id = " + shAreaId; + } + if(kyh!=null&&!kyh.equals("")){ + hql+=" and t.kyQz = '" + kyh+"'"; + } + Query query = entityManager.createQuery(hql); + List resultList = query.getResultList(); + return resultList; + } @Override public List queryBomAccountList(String code,Long outAreaId, Long shAreaId,String bp_type,String type) { String hql =null; diff --git a/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ImportProductionPlanServiceImpl.java b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ImportProductionPlanServiceImpl.java index bfde6fb..f2409ac 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ImportProductionPlanServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ImportProductionPlanServiceImpl.java @@ -1,9 +1,6 @@ package com.youchain.basicdata.service.impl; -import com.youchain.basicdata.domain.Area; -import com.youchain.basicdata.domain.BigItem; -import com.youchain.basicdata.domain.Item; -import com.youchain.basicdata.domain.ProductionPlan; +import com.youchain.basicdata.domain.*; import com.youchain.basicdata.repository.AreaRepository; import com.youchain.basicdata.repository.BigItemRepository; import com.youchain.basicdata.repository.ItemRepository; @@ -13,8 +10,10 @@ import com.youchain.businessdata.inputJson.imports.ItemImport; import com.youchain.businessdata.inputJson.imports.ProductionPlanImport; import com.youchain.exception.BadRequestException; import com.youchain.utils.*; +import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; @@ -70,59 +69,60 @@ public class ImportProductionPlanServiceImpl implements ImportProductionPlanServ // TODO: 实现批量导入逻辑 log.info("处理批量导入,数据条数: {}", dataList.size()); //获取文件中所有的库位编码 - List bigitemcodes = dataList.stream().map(ProductionPlanImport::getBigItemCode).collect(Collectors.toList()); + List bigitemcodes = dataList.stream() + .map(item -> item.getBigItemCode().replace("-", "")) + .collect(Collectors.toList()); bigitemcodes = bigitemcodes.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList()); - Map exitBigItemMap = bigItemService.queryByBigItemCodesToMap(bigitemcodes); + Map exitBigItemMap = validateBigItem(bigitemcodes); //校验机型是否存在 List areaNames = dataList.stream().map(ProductionPlanImport::getZcdx).collect(Collectors.toList()); areaNames = areaNames.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList()); - Map exitAreaMap = areaService.queryByAreaCodesToMap(areaNames); + Map exitAreaMap = validateArea(areaNames);//校验库区是否存在 //得到每个工位最小序号,查找最小序号IDNO是否有已消耗数据,有则异常,没有则删除导入新数据 HashMap maps=new HashMap<>(); + Map map = new HashMap();////职场+工件,序号 for (ProductionPlanImport data : dataList) { String zcdx=data.getZcdx(); String IDNO=data.getKyh(); - String makeLine=data.getMakeLine(); - if(!maps.containsKey(zcdx+makeLine)){ - maps.put(zcdx+makeLine,IDNO); - int hyCount = productionPlanRepository.existsGwHyIdno(IDNO,zcdx); - if (hyCount > 0) { - throw new BadRequestException( "大于" + IDNO + "存在已耗用数据"); - } else { - List productionPlans = productionPlanRepository.findByGwIdnoList(IDNO ,zcdx); - productionPlanRepository.deleteAll(productionPlans); +// String makeLine=data.getMakeLine(); + String machineNo=data.getGj(); + if(!maps.containsKey(zcdx+machineNo)){ + Long orderNo = productionPlanRepository.getMaxOrderNo(zcdx,machineNo); + if (orderNo==null) { + map.put(zcdx+machineNo, 1L); + }else{ + map.put(zcdx+machineNo, orderNo+1); } + maps.put(zcdx+machineNo,IDNO); + } + int hyCount = productionPlanRepository.existsGwHyIdno(IDNO,zcdx,machineNo); + if (hyCount > 0) { + throw new BadRequestException( "大于" + IDNO + "存在已耗用数据"); + } else { + List productionPlans = productionPlanRepository.findByGwIdnoList(IDNO ,zcdx,machineNo); + productionPlanRepository.deleteAll(productionPlans); } } - Map map = new HashMap();//制造线,序号 + for (ProductionPlanImport data : dataList) { String zcdx=data.getZcdx(); - String IDNO=data.getKyh(); - String makeLine=data.getMakeLine(); + String machineNo=data.getGj(); Area area=exitAreaMap.get(zcdx); - Long orderNo =1L; - List idnoList = productionPlanRepository.findByIDNO(IDNO); - if (!idnoList.isEmpty()) { - orderNo = idnoList.get(0).getOrderNo(); - } else { - orderNo = productionPlanRepository.getMaxOrderNo(); - if (orderNo==null) { - map.put(makeLine, 1L); - }else{ - orderNo=orderNo+1; - } - } - BigItem bigItem = exitBigItemMap.get(data.getBigItemCode()); + Long orderNo=map.get(zcdx+machineNo); + map.put(zcdx+machineNo,orderNo+1); + BigItem bigItem = exitBigItemMap.get(data.getBigItemCode().replace("-","")); ProductionPlan productionPlan = new ProductionPlan(); productionPlan.setBigItem(bigItem); - productionPlan.setType(bigItem.getOutboundType()); +// productionPlan.setType(bigItem.getOutboundType()); productionPlan.setWorkingStation(zcdx); productionPlan.setRkArea(area); productionPlan.setDept(UserUtils.getDept()); productionPlan.setEnabled(true); productionPlan.setNo(Integer.valueOf(data.getXh())); - productionPlan.setMakeLine(makeLine); - productionPlan.setDownlineDate( new Timestamp(DateUtil.ymd_date(data.getHjOut()).getTime())); - productionPlan.setIdno(IDNO); + productionPlan.setMachineNo(data.getGj()); + productionPlan.setMakeLine(data.getMakeLine()); + Date downDate=DateUtil.md_date(data.getHjOut()); + productionPlan.setDownlineDate( new Timestamp(downDate.getTime())); + productionPlan.setIdno(data.getKyh()); productionPlan.setImportDate(new Timestamp (new Date ().getTime())); productionPlan.setStatue(BizStatus.UN_CONSUME); productionPlan.setOrderNo(orderNo); @@ -130,6 +130,35 @@ public class ImportProductionPlanServiceImpl implements ImportProductionPlanServ } } + private Map validateBigItem(List codes) { + Map existMap = bigItemService.queryByBigItemCodesToMap(codes); + if (existMap.isEmpty()) { + throw new BadRequestException("机型代码不存在或已失效"); + } + List existCodes = new ArrayList(existMap.keySet()); + // 获取两个集合的非交集说明品番不存在或失效,直接提示 + List difference = SmartStringUtil.getDifference(codes, existCodes); + if (CollectionUtils.isNotEmpty(difference)) { + throw new BadRequestException(difference + "机型不存在或已失效"); + } + return existMap; + } + + + //验证库区 + private Map validateArea(List names) { + Map existMap = areaService.queryByAreaCodesToMap(names); + if (existMap.isEmpty()) { + throw new BadRequestException(names+"库区不存在或已失效"); + } + List existCodes = new ArrayList(existMap.keySet()); + // 获取两个集合的非交集说明品番不存在或失效,直接提示 + List difference = SmartStringUtil.getDifference(names, existCodes); + if (CollectionUtils.isNotEmpty(difference)) { + throw new BadRequestException(difference + "库区不存在或已失效"); + } + return existMap; + } //验证模板是否使用正确 diff --git a/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ProductionPlanServiceImpl.java b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ProductionPlanServiceImpl.java index 2b5bd08..c16b2f9 100644 --- a/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ProductionPlanServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ProductionPlanServiceImpl.java @@ -16,6 +16,7 @@ package com.youchain.basicdata.service.impl; import com.youchain.basicdata.domain.*; +import com.youchain.basicdata.repository.AreaRepository; import com.youchain.basicdata.repository.BigItemRepository; import com.youchain.basicdata.repository.BillTypeRepository; import com.youchain.businessdata.domain.PlanPickDetail; @@ -68,6 +69,7 @@ public class ProductionPlanServiceImpl implements ProductionPlanService { private final EntityManager entityMapper; private final SparepartsService sparepartsService; private final BigItemRepository bigItemRepository; + private final AreaRepository areaRepository; @Override public Map queryAll(ProductionPlanQueryCriteria criteria, Pageable pageable) { @@ -157,9 +159,8 @@ public class ProductionPlanServiceImpl implements ProductionPlanService { @Override public List piLiangHaoYong(ProductionPlanVo productionPlanVo) { Long id = productionPlanVo.getId(); - String workingStation = productionPlanVo.getWorkingStation(); Integer number = productionPlanVo.getNumber(); - String hql = " from ProductionPlan t where t.id >="+id+"and t.workingStation = '"+workingStation+"' and t.statue='UN_CONSUME' order by t.id ASC"; + String hql = " from ProductionPlan t where t.id >="+id+"and t.rkArea.id = "+productionPlanVo.getAreaId()+" and t.statue='UN_CONSUME' order by t.id ASC"; Query query = entityMapper.createQuery(hql); query.setMaxResults(number); List resultList = query.getResultList(); @@ -190,27 +191,33 @@ public class ProductionPlanServiceImpl implements ProductionPlanService { return map; } - public void scsxHaoyong(List productionPlans,String gw,String des){ + public void scsxHaoyong(List productionPlans,Long areaId,String des){ for (ProductionPlan productionPlan: productionPlans){ productionPlan.setStatue(BizStatus.CONSUME); productionPlan.setTakeUpTime(new Timestamp(new Date().getTime())); this.update(productionPlan); } - Map map = new HashMap<>(); + Map map = new HashMap<>(); for(ProductionPlan productionPlan : productionPlans){ Long id = productionPlan.getBigItem().getId(); - if(map.containsKey(id)){ - map.put(id,map.get(id)+1); + String kyqz=productionPlan.getIdno()==null?null:productionPlan.getIdno().substring(0,2); + String key=id+"]"+kyqz; + if(map.containsKey(key)){ + map.put(key,map.get(key)+1); }else { - map.put(id,1); + map.put(key,1); } } - for(Long key : map.keySet()){ + for(String key : map.keySet()){ Spareparts spareparts = new Spareparts(); - spareparts.setStationType(gw); + Area area=areaRepository.getById(areaId); + spareparts.setStationType(area.getWorkingStation()); + spareparts.setShArea(area); spareparts.setStatus("UN_CONSUME"); spareparts.setDate(new Timestamp(new Date().getTime())); - BigItem bigItem = bigItemRepository.getById(key); + String[] str=key.split("]"); + spareparts.setKyQz(str[1]); + BigItem bigItem = bigItemRepository.getById(Long.parseLong(str[0])); // bigItem.setId(key); spareparts.setBigItemId(bigItem); spareparts.setOrderQuantity(map.get(key)); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/domain/PickDetail.java b/youchain-system/src/main/java/com/youchain/businessdata/domain/PickDetail.java index 8d25ca0..ab0cdbf 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/domain/PickDetail.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/domain/PickDetail.java @@ -221,6 +221,23 @@ public class PickDetail extends BaseEntity implements Serializable { @ApiModelProperty(value = "出库库区") private Area area; + @OneToOne + @JoinColumn(name = "`ck_point_id`") + @ApiModelProperty(value = "出库库位") + private Point ckPoint; + + @Column(name = "`be_xpp`") + @ApiModelProperty(value = "现品票品番") + private Boolean beXpp; + + @Column(name = "`be_xd`") + @ApiModelProperty(value = "箱单整出") + private Boolean beXd; + + @Column(name = "`be_xd_pf`") + @ApiModelProperty(value = "箱单品番") + private Boolean beXdPf; + @OneToOne @JoinColumn(name = "`sh_area_id`") @ApiModelProperty(value = "收货库区") diff --git a/youchain-system/src/main/java/com/youchain/businessdata/domain/Spareparts.java b/youchain-system/src/main/java/com/youchain/businessdata/domain/Spareparts.java index 39475a7..6fcf9ec 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/domain/Spareparts.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/domain/Spareparts.java @@ -16,6 +16,7 @@ package com.youchain.businessdata.domain; import com.youchain.base.BaseEntity; +import com.youchain.basicdata.domain.Area; import com.youchain.basicdata.domain.BigItem; import lombok.Data; import cn.hutool.core.bean.BeanUtil; @@ -47,6 +48,15 @@ public class Spareparts extends BaseEntity implements Serializable { @ApiModelProperty(value = "工位") private String stationType; + @OneToOne + @JoinColumn(name = "`sh_area_id`") + @ApiModelProperty(value = "收货仓库") + private Area shArea; + + @Column(name = "`ky_qz`") + @ApiModelProperty(value = "组顺/组顺/刻印号前2位") + private String kyQz; + @Column(name = "`date`") @ApiModelProperty(value = "下线日期") private Timestamp date; 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 5f5f6d0..38b68d3 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 @@ -65,4 +65,9 @@ public interface InventoryRepository extends JpaRepository, Jpa "WHERE inv.quantity>0 and p.type='CH' and inv.stock_code=:stockCode" , nativeQuery = true) List queryInvStockCode(String stockCode); + @Query(value = "SELECT * from data_inventory inv \n" + + "left join base_point p on inv.point_id=p.id\n" + + "WHERE inv.quantity>0 and p.type='CH' and inv.stock_code=:stockCode and inv.itemKey.item.code=:itemCode" , nativeQuery = true) + List queryInvStockItemCode(String stockCode,String itemCode); + } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/repository/XppRecordRepository.java b/youchain-system/src/main/java/com/youchain/businessdata/repository/XppRecordRepository.java index b9d7a9d..519cfa0 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/repository/XppRecordRepository.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/repository/XppRecordRepository.java @@ -40,6 +40,10 @@ public interface XppRecordRepository extends JpaRepository, Jpa @Query(value = "SELECT * FROM data_xpp_record xr WHERE xr.ewm=:ewm and xr.type=:type", nativeQuery = true) XppRecord findByEwmType(String ewm,String type); + @QueryHints(@QueryHint(name = "org.hibernate.cacheMode", value = "REFRESH")) + @Query(value = "SELECT * FROM data_xpp_record xr WHERE xr.ewm=:ewm and xr.type=:type ", nativeQuery = true) + List findByEwmTypes(String ewm,String type); + @Query(value = "SELECT * FROM data_xpp_record xr WHERE xr.item_Key_id=?1 and xr.inv_Point_id=?2 and xr.status='PUTAWAY'", nativeQuery = true) List queryXppItemKeyPoint(Long itemKeyId, Long invPointId); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/PickDetailController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/PickDetailController.java index 8450985..13c11ec 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/rest/PickDetailController.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/rest/PickDetailController.java @@ -75,6 +75,7 @@ public class PickDetailController { private final PickTicketService pickTicketService; private final InventoryService inventoryService; private final InventoryLogService inventoryLogService; + private final XppRecordService xppRecordService; private final BillTypeRepository billTypeRepository; private final InventoryRepository inventoryRepository; private final TaskRepository taskRepository; @@ -333,6 +334,10 @@ public class PickDetailController { String view_type="01"; String view_des="无库存"; String view_name="箱单号"; + if(pickDetail.getBeXdPf()){ + view_name="箱单号(品番)"; + view_type="04"; + } ZzjlPickHead head=new ZzjlPickHead(); List detail_list=new ArrayList<>(); if(tasks.size()>=0){ @@ -378,7 +383,7 @@ public class PickDetailController { String stock_code=null; if(zzjlPick.getView_type().equals("02")){ xppQRCode=zzjlPick.getScan_code(); - }else if(zzjlPick.getView_type().equals("03")){ + }else if(zzjlPick.getView_type().equals("03")||zzjlPick.getView_type().equals("04")){ stock_code=zzjlPick.getScan_code(); if(stock_code.indexOf("84")==0){ stock_code=stock_code.substring(2); @@ -386,15 +391,33 @@ public class PickDetailController { } PickDetail pickDetail=pickDetailRepository.getById(zzjlPick.getDetail_id()); if(stock_code!=null){ - List invs = inventoryRepository.queryInvStockCode(stock_code); - for (Inventory inv : invs) { - //生成Task,生成出库扣减库存 - Task task = taskService.storeTask(null,pickDetail,inv.getArea(),inv.getItemKey(),inv.getPoint(),null,inv.getQuantity(),inv.getStockCode()); - task.setBillCode(pickDetail.getItem().getCode()+"关联箱单出库"+pickDetail.getId()); - task.setTaskType(BizStatus.XD_PICK); + if(zzjlPick.getView_type().equals("03")){//箱单出库 + List invs = inventoryRepository.queryInvStockCode(stock_code); + for (Inventory inv : invs) { + //生成Task,生成出库扣减库存 + Task task = taskService.storeTask(null,pickDetail,inv.getArea(),inv.getItemKey(),inv.getPoint(),null,inv.getQuantity(),inv.getStockCode()); + task.setBillCode(pickDetail.getItem().getCode()+"关联箱单出库"+pickDetail.getId()); + task.setTaskType(BizStatus.XD_PICK); + taskRepository.save(task); + pickTicketService.pickForTask(task.getId(), task.getSrcStockCode(), task.getPlanQty()-task.getMoveQty(), null, SecurityUtils.getCurrentUsername()); + } + }else if(zzjlPick.getView_type().equals("04")){//箱单品番出库 + //箱单内现品票 + String xpp=zzjlPick.getXpp(); + RRkXpp rRkXpp=xppRecordService.xppAnalysis(xpp,null); + //查询是否能找到对应的库存 + List invs = inventoryRepository.queryInvStockItemCode(stock_code,rRkXpp.getItemCode()); + Inventory inv=invs.get(0); + if(inv.getQuantity() createSpareparts(@Validated @RequestBody Spareparts resources){ resources.setStatus("UN_CONSUME"); + if(resources.getShArea()==null){ + throw new BadRequestException("库区不能为空"); + } + resources.setStationType(resources.getShArea().getWorkingStation()); return new ResponseEntity<>(sparepartsService.create(resources),HttpStatus.CREATED); } @@ -176,13 +180,13 @@ public class SparepartsController { @Transactional @PreAuthorize("@el.check('super:man')") public ResponseEntity autoAddHy(@RequestBody String idno) { - List whyGwList = productionPlanRepository.getIdNoWhyGw(idno); + List whyGwList = productionPlanRepository.getIdNoHyGw(idno); if(whyGwList.size()<=0){ throw new BadRequestException("未找到需要耗用数据"); } - for (String gw:whyGwList){ - List whyList = productionPlanRepository.getIdNoAllData(gw,idno); - productionPlanService.scsxHaoyong(whyList,gw,"截止IDNO自动耗用"); + for (Long areaId:whyGwList){ + List whyList = productionPlanRepository.getIdNoAllData(areaId,idno); + productionPlanService.scsxHaoyong(whyList,areaId,"截止IDNO自动耗用"); } //自动创建 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 e26a397..7204493 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 @@ -294,7 +294,7 @@ public class XppRecordController { if(tl.getSlQty()>0){ //扣减线边库存 PickDetail pickDetail=task.getPickDetail(); - List inventorys=inventoryService.getXbHyInv(pickDetail.getItem(),pickDetail.getShArea(),pickDetail.getShArea().getWorkingStation(),pickDetail.getPoint(),"退库接收"); + List inventorys=inventoryService.getXbHyInv(pickDetail.getItem(),pickDetail.getShArea(),pickDetail.getPoint(),"退库接收"); if(inventorys.size()>0){ Inventory inv= inventorys.get(0); double srcQty=inv.getQuantity(); @@ -500,15 +500,17 @@ public class XppRecordController { JSONObject jsonObject = JSONObject.parseObject(resources); String ewm=jsonObject.getString("ewm"); String type=jsonObject.getString("type"); + XppRecord xppRecord=null; if(type.equals("7")){//现品票二维码解析 RRkXpp xpp = xppRecordService.xppAnalysis(ewm,null); return new ResponseEntity<>(xpp, HttpStatus.OK); }else{ String gw=""; - XppRecord xppRecord = xppRecordRepository.findByCode(ewm); - if (xppRecord==null){ + List xppRecords = xppRecordRepository.findByEwmTypes(ewm,BillParmType.XPP_1001); + if (xppRecords.size()<=0){ throw new BadRequestException("现品票未采集"); }else { + xppRecord=xppRecords.get(0); if (type.equals("1")) {//留样出库 if (!xppRecord.getStatus().equals(BizStatus.RECEIVED) && !xppRecord.getStatus().equals(BizStatus.PUTAWAY)) { throw new BadRequestException("现品票状态不正确"); @@ -625,16 +627,16 @@ public class XppRecordController { return new ResponseEntity<>(srcPoint + "库位不存在", BAD_REQUEST); } Area area=srcPoint.getArea(); - Point zzkw=pointService.getPoint(BaseStatus.ZZKW,null,null,null); - if(zzkw==null){ - return new ResponseEntity<>(BaseStatus.ZZKW + "默认制造库位不存在", BAD_REQUEST); - } +// Point zzkw=pointService.getPoint(BaseStatus.ZZKW,null,null,null); +// if(zzkw==null){ +// return new ResponseEntity<>(BaseStatus.ZZKW + "默认制造库位不存在", BAD_REQUEST); +// } for(Long id:ids){ XppRecord xppRecord = xppRecordRepository.getById(id); if(!srcPoint.getId().equals(xppRecord.getInvPoint().getId())){ return new ResponseEntity<>(srcPoint + "库位和现品票对应不匹配"+xppRecord.getInvPoint().getCode(), BAD_REQUEST); } - xppRecordService.xppShipOut(id,area,srcPoint,zzkw,BizStatus.SHIPPING,"现品票直接出库","现品票直接出库"); + xppRecordService.xppShipOut(id,area,srcPoint,null,BizStatus.SHIPPING,"现品票直接出库","现品票直接出库"); } return new ResponseEntity<>("操作成功", HttpStatus.OK); } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/InventoryService.java b/youchain-system/src/main/java/com/youchain/businessdata/service/InventoryService.java index e97a922..49ef959 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/InventoryService.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/InventoryService.java @@ -126,7 +126,7 @@ public interface InventoryService { * @param type * @return */ - List getXbHyInv(Item item, Area area, String gw,Point zzkw,String type); + List getXbHyInv(Item item, Area area,Point zzkw,String type); List getInventoryXbTl(Item item, Area area, Point point,Point zzkw); List queryInventory(Stock stock); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/AsnQueryCriteria.java b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/AsnQueryCriteria.java index 3946bad..69344e3 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/AsnQueryCriteria.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/AsnQueryCriteria.java @@ -32,6 +32,12 @@ public class AsnQueryCriteria{ @Query(type = Query.Type.INNER_LIKE) private String code; + @Query(type = Query.Type.INNER_LIKE) + private String cusCode; + + @Query(type = Query.Type.INNER_LIKE) + private String relatedBill1; + /** 模糊 */ // 左关联查询,left Join , joinName为关联实体名称 , propName为关联实体 字段 @Query(joinName = "area", propName="code",type = Query.Type.EQUAL) diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/InventoryLogQueryCriteria.java b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/InventoryLogQueryCriteria.java index 29c5917..bdba9af 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/InventoryLogQueryCriteria.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/InventoryLogQueryCriteria.java @@ -53,6 +53,8 @@ public class InventoryLogQueryCriteria{ @Query(joinName = "itemKey>", propName="propC1",type = Query.Type.INNER_LIKE) private String propC1; + @Query(joinName = "itemKey>", propName="propC2",type = Query.Type.EQUAL) + private String bonded; /** 源点位号 */ @Query(type = Query.Type.EQUAL) 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 3648f5c..8677a1c 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 @@ -47,6 +47,9 @@ public class InventoryQueryCriteria{ @Query(joinName = "itemKey>", propName="propC1",type = Query.Type.INNER_LIKE) private String propC1; + @Query(joinName = "itemKey>", propName="propC2",type = Query.Type.EQUAL) + private String bonded; + @Query(joinName = "itemKey>item>", propName="code",type = Query.Type.IN) private List itemCode; diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/PickDetailDto.java b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/PickDetailDto.java index 3be6c89..ad83a13 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/PickDetailDto.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/PickDetailDto.java @@ -259,6 +259,13 @@ public class PickDetailDto implements Serializable { /** 出库库区 */ private AreaDto area; + /** 出库库位 */ + private PointDto ckPoint; + + private Boolean beXpp; + private Boolean beXd; + private Boolean beXdPf; + /** 收货库区 */ private AreaDto shArea; } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/SparepartsDto.java b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/SparepartsDto.java index e5411bd..7ea0248 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/SparepartsDto.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/SparepartsDto.java @@ -16,8 +16,12 @@ package com.youchain.businessdata.service.dto; import com.youchain.basicdata.domain.BigItem; +import com.youchain.basicdata.service.dto.AreaDto; import com.youchain.basicdata.service.dto.BigItemDto; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; + +import javax.persistence.Column; import java.sql.Timestamp; import java.io.Serializable; @@ -39,7 +43,12 @@ public class SparepartsDto implements Serializable { private Timestamp date; /** 型式名 */ - private BigItem bigItemId; + private BigItemDto bigItemId; + + /** 耗用库区 */ + private AreaDto shArea; + /** 刻印前缀 */ + private String kyQz; /** 数量 */ private Integer orderQuantity; diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/XppRecordQueryCriteria.java b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/XppRecordQueryCriteria.java index 53161aa..eeef110 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/XppRecordQueryCriteria.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/XppRecordQueryCriteria.java @@ -63,6 +63,9 @@ public class XppRecordQueryCriteria{ @Query(type = Query.Type.EQUAL) private String prop_c1; + @Query(type = Query.Type.EQUAL) + private String bonded; + @Query(type = Query.Type.EQUAL) private String type; } \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/jsonDto/CxjlDto.java b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/jsonDto/CxjlDto.java index 264ed26..4c9915a 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/jsonDto/CxjlDto.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/jsonDto/CxjlDto.java @@ -36,6 +36,7 @@ public class CxjlDto implements Serializable { private Long zzkw_id; private Long rk_id; private int order_qty; + private Boolean beXdPf; private String remark; private String ewm; private String type; 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 daffccf..f0a0fbb 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 @@ -276,18 +276,17 @@ public class InventoryServiceImpl implements InventoryService { @Override - public List getXbHyInv(Item item, Area area, String gw, Point zzkw,String type) { + public List getXbHyInv(Item item, Area area, Point zzkw,String type) { //生成Inventory String hql = " from Inventory inv where 1=1 and inv.point.type not in ('"+BaseStatus.BHZC+"','"+BaseStatus.SHZC+"')"; if (item != null) { hql += " and inv.itemKey.item.id=" + item.getId() + " "; } - hql += " and inv.area.workingStation='" + gw + "'"; - if (zzkw != null) { - hql += " and inv.zzkw.id=" + zzkw.getId(); + if(area!=null) { + hql += " and inv.area.id=" + area.getId() ; } - if(type.equals("耗用")){//目前只能从暂存库位耗用 - hql += " and inv.point.id=" + area.getPointId(); + if(type.equals("耗用")){//直接制造库位库存耗用 + hql += " and inv.point.id=" + zzkw.getId(); } hql+=" order by inv.itemKey.propC1 asc"; Query query = entityManager.createQuery(hql); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java index 0c2be9f..6f9d69d 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java @@ -192,6 +192,7 @@ public class PickDetailServiceImpl implements PickDetailService { pd.setType(BaseStatus.ZZJL); pd.setPropC2(cxjldto.getBonded()); pd.setBomId(cxjldto.getBom_account_id()); + pd.setBeXdPf(cxjldto.getBeXdPf()); this.create(pd); return pd; } @@ -224,6 +225,7 @@ public class PickDetailServiceImpl implements PickDetailService { //回写推荐托盘即可 pd.setStatus(BizStatus.ALLOCATE); pd.setArea(inv.getArea()); + pd.setCkPoint(inv.getPoint()); map.put(inv.getId()+"",inv.getStockCode()+"]"+inv.getItemKey().getPropC1()+"]"+inv.getPoint().getCode()+"]"+inv.getQuantity()); continue; @@ -276,6 +278,7 @@ public class PickDetailServiceImpl implements PickDetailService { pd.setStatus(BizStatus.ALLOCATE); } pd.setArea(inv.getArea()); + pd.setCkPoint(inv.getPoint()); pickDetailRepository.save(pd); Task task = taskService.storeTask(null,pd,inv.getArea(),inv.getItemKey(),startPoint,endPoint,allocateQty,inv.getStockCode()); //修改占用数,写入日志 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 964adfa..683f225 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 @@ -140,19 +140,18 @@ public class SparepartsServiceImpl implements SparepartsService { if(!s.getStatus().equals(BizStatus.UN_CONSUME)){ throw new BadRequestException("状态必须未未耗用"); } - String gw=s.getStationType(); - List bs = bomAccountService.queryBomAccount(s.getBigItemId().getId(), null,gw); + String kyQz=s.getKyQz(); + List bs = bomAccountService.queryBomAccountKy(s.getBigItemId().getId(), s.getShArea().getId(),kyQz); if (bs.size() <= 0) { - throw new BadRequestException(s.getBigItemId().getCode() + "未查到"+gw+"对应BOM工位清单"); + 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(); - log.info(ba.getId()+"=="+ba.getItem().getId()); //扣除线边库存 - List inventorys=inventoryService.getXbHyInv(ba.getItem(),ba.getRArea(),gw,ba.getZPoint(),"耗用"); + List inventorys=inventoryService.getXbHyInv(ba.getItem(),ba.getRArea(),ba.getZPoint(),"耗用"); if(inventorys.size()>0){ int num=0; for(Inventory inv:inventorys){ @@ -189,9 +188,9 @@ public class SparepartsServiceImpl implements SparepartsService { ItemKey itemKey=itemKeyService.getItemKey(ba.getItem(),null,ba.getBonded()); Inventory inventory = new Inventory(); inventory.setItemKey(itemKey); - inventory.setPoint(point); - inventory.setPointCode(point.getCode()); - inventory.setZzkw(ba.getZPoint()); + inventory.setPoint(ba.getZPoint()); + inventory.setPointCode(ba.getZPoint().getCode()); +// inventory.setZzkw(ba.getZPoint()); inventory.setDept(UserUtils.getDept()); inventory.setArea(ba.getRArea()); inventory.setQuantity(-qty); @@ -199,7 +198,7 @@ public class SparepartsServiceImpl implements SparepartsService { 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()); +// log.setZzkw(ba.getZPoint()); inventoryLogService.update(log); } } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/XppRecordServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/XppRecordServiceImpl.java index 49a08db..8b08368 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/XppRecordServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/XppRecordServiceImpl.java @@ -336,6 +336,9 @@ public class XppRecordServiceImpl implements XppRecordService { if (criteria.getType()!=null &&!criteria.getType().equals("") ) { sql += " and xpp.type = '" + criteria.getType() + "'"; } + if (criteria.getBonded()!=null &&!criteria.getBonded().equals("") ) { + sql += " and ik.prop_c2 = '" + criteria.getBonded() + "'"; + } if (criteria.getCreateTime()!=null &&criteria.getCreateTime().size()>0 ) { sql += " and xpp.cj_date BETWEEN '"+criteria.getCreateTime().get(0)+"' and '"+criteria.getCreateTime().get(1)+"'"; //sql += " and date_format(xpp.cj_date,'%Y-%m-%d %H:%i:%s')>='"+criteria.getCreateTime().get(0)+"' and date_format(xpp.cj_date,'%Y-%m-%d %H:%i:%s')<='"+criteria.getCreateTime().get(1)+"'"; @@ -548,6 +551,7 @@ public class XppRecordServiceImpl implements XppRecordService { BizStatus.ZZKW_TL, xppRecord.getId(), inventory.getId(), "制造投料"); inventoryLog.setZzkw(point); inventoryLogService.update(inventoryLog); + xppRecord.setItemKey(itemKey); xppRecord.setInvPoint(point); xppRecord.setStatus(BizStatus.ZZKW_TL); this.update(xppRecord); 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 fac8ad9..416d2d6 100644 --- a/youchain-system/src/main/java/com/youchain/utils/BizStatus.java +++ b/youchain-system/src/main/java/com/youchain/utils/BizStatus.java @@ -115,6 +115,11 @@ public class BizStatus { */ public static String XD_PICK = "XD_PICK"; + /** + * 箱单关联出库任务 + */ + public static String XD_PF_PICK = "XD_PF_PICK"; + /** * 盘点任务 */