diff --git a/youchain-system/src/main/java/com/youchain/basicdata/repository/AreaRepository.java b/youchain-system/src/main/java/com/youchain/basicdata/repository/AreaRepository.java
index 1f8307d..8efd418 100644
--- a/youchain-system/src/main/java/com/youchain/basicdata/repository/AreaRepository.java
+++ b/youchain-system/src/main/java/com/youchain/basicdata/repository/AreaRepository.java
@@ -59,6 +59,6 @@ public interface AreaRepository extends JpaRepository, JpaSpecificat
@Query(value = "SELECT * FROM base_area t where t.code in ('A仓','S仓')", nativeQuery = true)
List getBomOutAreas();
- @Query("from Area i where i.name in (:codes) and i.enabled=true ")
+ @Query("from Area i where (i.name in (:codes) or i.code in (:codes) ) and i.enabled=true ")
List queryByAreaCodes(List codes);
}
\ No newline at end of file
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 aa7786b..5f30b67 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
@@ -59,9 +59,7 @@ public interface ProductionPlanRepository extends JpaRepository= :IDNO order by bpp.`IDNO` ASC", nativeQuery = true)
List getAllData(@Param("workingStation") String workingStation, @Param("IDNO")String IDNO);
@@ -80,4 +78,12 @@ public interface ProductionPlanRepository extends JpaRepository= :IDNO and p.working_station =:workingStation and p.statue!='UN_CONSUME'", nativeQuery = true)
+ int existsGwHyIdno( @Param("IDNO") String IDNO,@Param("workingStation") String workingStation);
+ @Query(value = "SELECT * FROM base_production_plan p WHERE p.idno >= :idno and p.working_station =:workingStation", nativeQuery = true)
+ List findByGwIdnoList(@Param("idno") String idno,@Param("workingStation") String workingStation);
+
+
+
}
\ No newline at end of file
diff --git a/youchain-system/src/main/java/com/youchain/basicdata/service/ImportProductionPlanService.java b/youchain-system/src/main/java/com/youchain/basicdata/service/ImportProductionPlanService.java
new file mode 100644
index 0000000..f0bfeb5
--- /dev/null
+++ b/youchain-system/src/main/java/com/youchain/basicdata/service/ImportProductionPlanService.java
@@ -0,0 +1,11 @@
+package com.youchain.basicdata.service;
+
+import org.springframework.web.multipart.MultipartFile;
+
+public interface ImportProductionPlanService {
+ /**
+ * 批量导入
+ * @param file 文件
+ */
+ void importData(MultipartFile 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 8a43ead..10dfafb 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
@@ -37,5 +37,6 @@ public class BomAccountPointDto implements Serializable {
private String gw_name;
private Long zzkw_id;
private String zzkw_code;
+ private String bonded;
}
\ 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 33964a1..ed8f020 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
@@ -216,12 +216,12 @@ public class BomAccountServiceImpl implements BomAccountService {
public List queryBomAccountPoints() {
String sql = "select max(ba.id) bom_account_id,max(rk.id) rk_id,max(rk.code) gw_code,max(rk.name) gw_name," +
"max(it.id) item_id,max(it.code) item_code,max(it.name) item_name,max(p.id) zzkw_id,max(p.code) zzkw_code,\n" +
- "max(it.extend_d3) srs \n" +
+ "max(it.extend_d3) srs,max(ba.bonded) bonded \n" +
"from base_bom_account ba \n" +
"LEFT JOIN base_item it on it.id=ba.item_id\n" +
"LEFT JOIN base_area rk on rk.id=ba.r_area_id\n" +
"left join base_point p on p.id=ba.z_point_id\n" +
- "GROUP BY ba.r_area_id,ba.item_id,ba.z_point_id";
+ "GROUP BY ba.r_area_id,ba.item_id,ba.z_point_id,ba.bonded";
log.info("sql==="+sql);
List ts = entityManager.createNativeQuery(sql)
.unwrap(SQLQuery.class)
diff --git a/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ImportAsnServiceImpl.java b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ImportAsnServiceImpl.java
index 83d0def..6575655 100644
--- a/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ImportAsnServiceImpl.java
+++ b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ImportAsnServiceImpl.java
@@ -155,7 +155,8 @@ public class ImportAsnServiceImpl implements ImportAsnService {
String po = data.getPoNo();//订单号
String itemCode = data.getPartNo();//品番
String remark = data.getDescription();//描述
- String orderQty = data.getQty();//数量
+ String orderQty = data.getQty().replace(",","");//数量,去掉逗号格式
+
String code = data.getCNo();//托盘号
//品番
Item item = exitItemMap.get(itemCode.replace("-", ""));
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
new file mode 100644
index 0000000..bfde6fb
--- /dev/null
+++ b/youchain-system/src/main/java/com/youchain/basicdata/service/impl/ImportProductionPlanServiceImpl.java
@@ -0,0 +1,153 @@
+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.repository.AreaRepository;
+import com.youchain.basicdata.repository.BigItemRepository;
+import com.youchain.basicdata.repository.ItemRepository;
+import com.youchain.basicdata.repository.ProductionPlanRepository;
+import com.youchain.basicdata.service.*;
+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.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.sql.Timestamp;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+@RequiredArgsConstructor
+@Slf4j
+public class ImportProductionPlanServiceImpl implements ImportProductionPlanService {
+
+ private final BigItemRepository bigItemRepository;
+
+ private final ProductionPlanRepository productionPlanRepository;
+
+ private final AreaRepository areaRepository;
+
+ private final ProductionPlanService productionPlanService;
+
+ private final BigItemService bigItemService;
+
+ private final AreaService areaService;
+
+
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void importData(MultipartFile file) {
+
+ // 验证模板类型是否正确
+ isValidTemplateType(file);
+
+ // 根据模板类型进行不同的处理
+ baseImportTemplate(file);
+ }
+
+ // 处理标准模板
+ @Transactional
+ public void baseImportTemplate(MultipartFile file) {
+ // 读取sheet数据
+ List dataList = FastExcelUtil.readExcelData(file, ProductionPlanImport.class, 0, 1);
+
+ //批量导入
+ importProductionPlanData(dataList);
+ }
+
+ /**
+ * 处理批量导入
+ */
+ private void importProductionPlanData(List dataList) {
+ // TODO: 实现批量导入逻辑
+ log.info("处理批量导入,数据条数: {}", dataList.size());
+ //获取文件中所有的库位编码
+ List bigitemcodes = dataList.stream().map(ProductionPlanImport::getBigItemCode).collect(Collectors.toList());
+ bigitemcodes = bigitemcodes.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList());
+ Map exitBigItemMap = bigItemService.queryByBigItemCodesToMap(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);
+ //得到每个工位最小序号,查找最小序号IDNO是否有已消耗数据,有则异常,没有则删除导入新数据
+ HashMap maps=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);
+ }
+ }
+ }
+ Map map = new HashMap();//制造线,序号
+ for (ProductionPlanImport data : dataList) {
+ String zcdx=data.getZcdx();
+ String IDNO=data.getKyh();
+ String makeLine=data.getMakeLine();
+ 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());
+ ProductionPlan productionPlan = new ProductionPlan();
+ productionPlan.setBigItem(bigItem);
+ 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.setImportDate(new Timestamp (new Date ().getTime()));
+ productionPlan.setStatue(BizStatus.UN_CONSUME);
+ productionPlan.setOrderNo(orderNo);
+ productionPlanRepository.save(productionPlan);
+ }
+ }
+
+
+
+ //验证模板是否使用正确
+ private void isValidTemplateType(MultipartFile file) {
+ // 根据模板类型进行不同的处理
+ List requiredColumns = Arrays.asList(
+ "ライン№",
+ "序号",
+ "ID NO.\n" + "/刻印号",
+ "机型代码",
+ "机型名称",
+ "工件",
+ "焊接OUT",
+ "对象职场"
+ );
+ List headers = FastExcelUtil.readHeadContent(file, 0, 0);
+ if (!SmartStringUtil.containsAllIgnoreCase(requiredColumns, headers)) {
+ throw new BadRequestException("标准导入模板不正确,请确认模板信息");
+ }
+ }
+}
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 f2220eb..2b5bd08 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
@@ -192,7 +192,7 @@ public class ProductionPlanServiceImpl implements ProductionPlanService {
}
public void scsxHaoyong(List productionPlans,String gw,String des){
for (ProductionPlan productionPlan: productionPlans){
- productionPlan.setStatue("CONSUME");
+ productionPlan.setStatue(BizStatus.CONSUME);
productionPlan.setTakeUpTime(new Timestamp(new Date().getTime()));
this.update(productionPlan);
}
diff --git a/youchain-system/src/main/java/com/youchain/businessdata/inputJson/imports/ProductionPlanImport.java b/youchain-system/src/main/java/com/youchain/businessdata/inputJson/imports/ProductionPlanImport.java
new file mode 100644
index 0000000..09a5d23
--- /dev/null
+++ b/youchain-system/src/main/java/com/youchain/businessdata/inputJson/imports/ProductionPlanImport.java
@@ -0,0 +1,44 @@
+package com.youchain.businessdata.inputJson.imports;
+
+import cn.idev.excel.annotation.ExcelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @description: 基础导入
+ * @author: youzhi.gao
+ * @date: 2020-04-01 15:01
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProductionPlanImport {
+
+ @ExcelProperty("ライン№")
+ private String makeLine;
+
+ @ExcelProperty("序号")
+ private String xh;
+
+ @ExcelProperty("ID NO.\n" + "/刻印号")
+ private String kyh;
+
+ @ExcelProperty("机型代码")
+ private String bigItemCode;
+
+ @ExcelProperty("机型名称")
+ private String bigItemName;
+
+ @ExcelProperty("工件")
+ private String gj;
+
+ @ExcelProperty("焊接OUT")
+ private String hjOut;
+
+ @ExcelProperty("对象职场")
+ private String zcdx;
+
+}
diff --git a/youchain-system/src/main/java/com/youchain/businessdata/repository/PickDetailRepository.java b/youchain-system/src/main/java/com/youchain/businessdata/repository/PickDetailRepository.java
index 1119c65..44284c0 100644
--- a/youchain-system/src/main/java/com/youchain/businessdata/repository/PickDetailRepository.java
+++ b/youchain-system/src/main/java/com/youchain/businessdata/repository/PickDetailRepository.java
@@ -39,6 +39,10 @@ public interface PickDetailRepository extends JpaRepository, J
@Query(value = "SELECT * FROM `data_pick_detail` a WHERE prop_c3 = :propC3 ", nativeQuery = true)
PickDetail queryByPropC3(@Param("propC3")String propC3);
+ @Query(value = "SELECT * FROM `data_pick_detail` d WHERE d.type='ZZJL' and d.picked_qty=0", nativeQuery = true)
+ List notPickList();
+
+
/**
* 未拣货完成,返回0则全部拣货完成
* @param id
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 7abe969..8450985 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
@@ -284,14 +284,32 @@ public class PickDetailController {
return new ResponseEntity<>(HttpStatus.OK);
}
+ @PostMapping("/zzjlCountList")
+ @Log("制造叫料拣货列表汇总")
+ @ApiOperation("制造叫料拣货列表汇总")
+ @AnonymousAccess
+ public ResponseEntity