diff --git a/youchain-system/src/main/java/com/youchain/businessdata/domain/Gd.java b/youchain-system/src/main/java/com/youchain/businessdata/domain/Gd.java deleted file mode 100644 index c8b560a..0000000 --- a/youchain-system/src/main/java/com/youchain/businessdata/domain/Gd.java +++ /dev/null @@ -1,66 +0,0 @@ -/* -* Copyright 2019-2020 Zheng Jie -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package com.youchain.businessdata.domain; - -import com.youchain.base.BaseEntity; -import com.youchain.basicdata.domain.Item; -import com.youchain.modules.system.domain.Dept; -import lombok.Data; -import cn.hutool.core.bean.BeanUtil; -import io.swagger.annotations.ApiModelProperty; -import cn.hutool.core.bean.copier.CopyOptions; -import javax.persistence.*; -import javax.validation.constraints.*; -import java.sql.Timestamp; -import java.io.Serializable; - -/** -* @website https://eladmin.vip -* @description / -* @author huojin -* @date 2024-06-06 -**/ -@Entity -@Data -@Table(name="data_gd") -public class Gd extends BaseEntity implements Serializable { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "`id`") - @ApiModelProperty(value = "ID") - private Long id; - - @Column(name = "`code`",nullable = false) - @ApiModelProperty(value = "工单编号") - private String code; - - @Column(name = "`name`",nullable = false) - @ApiModelProperty(value = "任务编号") - private String name; - - @Column(name = "`status`") - @ApiModelProperty(value = "工单状态") - private String status; - - @OneToOne - @JoinColumn(name = "`dept_id`",nullable = false) - @ApiModelProperty(value = "仓库") - private Dept dept; - public void copy(Gd source){ - BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); - } -} diff --git a/youchain-system/src/main/java/com/youchain/businessdata/domain/GdDetail.java b/youchain-system/src/main/java/com/youchain/businessdata/domain/GdDetail.java deleted file mode 100644 index 60bb36f..0000000 --- a/youchain-system/src/main/java/com/youchain/businessdata/domain/GdDetail.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2019-2020 Zheng Jie - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.youchain.businessdata.domain; - -import com.youchain.base.BaseEntity; -import com.youchain.basicdata.domain.BigItem; -import com.youchain.basicdata.domain.Item; -import com.youchain.modules.system.domain.Dept; -import lombok.Data; -import cn.hutool.core.bean.BeanUtil; -import io.swagger.annotations.ApiModelProperty; -import cn.hutool.core.bean.copier.CopyOptions; - -import javax.persistence.*; -import java.io.Serializable; - -/** - * @author huojin - * @website https://eladmin.vip - * @description / - * @date 2024-06-06 - **/ -@Entity -@Data -@Table(name = "data_gd_detail") -public class GdDetail extends BaseEntity implements Serializable { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "`id`") - @ApiModelProperty(value = "ID") - private Long id; - - @OneToOne - @JoinColumn(name = "`gd_id`", nullable = false) - @ApiModelProperty(value = "工单") - private Gd gd; - - @Column(name = "`line_no`") - @ApiModelProperty(value = "行号") - private int lineNo; - - @OneToOne - @JoinColumn(name = "`item_id`", nullable = false) - @ApiModelProperty(value = "单品物料") - private Item item; - - @Column(name = "`item_qty`") - @ApiModelProperty(value = "单品数量") - private Double itemQty = 0d; - - @Column(name = "`order_qty`") - @ApiModelProperty(value = "未拆分数量") - private Double orderQty = 0d; - - @OneToOne - @JoinColumn(name = "`big_item_id`") - @ApiModelProperty(value = "成套物料") - private BigItem bigItem; - - @Column(name = "`big_item_qty`") - @ApiModelProperty(value = "总成套数") - private Double bigItemQty = 0d; - - @Column(name = "`order_type`") - @ApiModelProperty(value = "单据类型") - private String orderType; - - @OneToOne - @JoinColumn(name = "`dept_id`", nullable = false) - @ApiModelProperty(value = "仓库") - private Dept dept; - - @Column(name = "`station`",nullable = false) - @ApiModelProperty(value = "需求工位") - private String station; - - - public void copy(GdDetail source) { - BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); - } -} diff --git a/youchain-system/src/main/java/com/youchain/businessdata/domain/Pick.java b/youchain-system/src/main/java/com/youchain/businessdata/domain/Pick.java index 2070bae..16353d5 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/domain/Pick.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/domain/Pick.java @@ -83,6 +83,10 @@ public class Pick extends BaseEntity implements Serializable { @ApiModelProperty(value = "是否叫料") private Boolean isCall; + @Column(name = "`order_type`") + @ApiModelProperty(value = "单据类型") + private String orderType; + @Column(name = "`source_id`") @ApiModelProperty(value = "来源ID") private Long sourceId; 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 5f43f8d..968315c 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 @@ -1,18 +1,18 @@ /* -* Copyright 2019-2020 Zheng Jie -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright 2019-2020 Zheng Jie + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package com.youchain.businessdata.domain; import com.youchain.base.BaseEntity; @@ -23,21 +23,22 @@ import lombok.Data; import cn.hutool.core.bean.BeanUtil; import io.swagger.annotations.ApiModelProperty; import cn.hutool.core.bean.copier.CopyOptions; + import javax.persistence.*; import javax.validation.constraints.NotNull; import java.sql.Timestamp; import java.io.Serializable; /** -* @website https://eladmin.vip -* @description / -* @author huojin -* @date 2023-08-16 -**/ + * @author huojin + * @website https://eladmin.vip + * @description / + * @date 2023-08-16 + **/ @Entity @Data -@Table(name="data_pick_detail") -public class PickDetail extends BaseEntity implements Serializable { +@Table(name = "data_pick_detail") +public class PickDetail extends BaseEntity implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -46,13 +47,12 @@ public class PickDetail extends BaseEntity implements Serializable { private Long id; @OneToOne - @JoinColumn(name = "`pick_id`",nullable = false) - @NotNull + @JoinColumn(name = "`pick_id`") @ApiModelProperty(value = "出库单") private Pick pick; @OneToOne - @JoinColumn(name = "`item_id`",nullable = false) + @JoinColumn(name = "`item_id`", nullable = false) @NotNull @ApiModelProperty(value = "物料") private Item item; @@ -71,27 +71,27 @@ public class PickDetail extends BaseEntity implements Serializable { @Column(name = "`order_qty`") @ApiModelProperty(value = "订单数量") - private Double orderQty=0d; + private Double orderQty = 0d; @Column(name = "`allocated_qty`") @ApiModelProperty(value = "分配数量") - private Double allocatedQty=0d; + private Double allocatedQty = 0d; @Column(name = "`picked_qty`") @ApiModelProperty(value = "拣货数量") - private Double pickedQty=0d; + private Double pickedQty = 0d; @Column(name = "`shipped_qty`") @ApiModelProperty(value = "发运数量") - private Double shippedQty=0d; + private Double shippedQty = 0d; @Column(name = "`weight`") @ApiModelProperty(value = "重量") - private Double weight=0d; + private Double weight = 0d; @Column(name = "`volume`") @ApiModelProperty(value = "体积") - private Double volume=0d; + private Double volume = 0d; @Column(name = "`remark`") @ApiModelProperty(value = "备注") @@ -142,10 +142,11 @@ public class PickDetail extends BaseEntity implements Serializable { @ApiModelProperty(value = "来源序号") private Long sourceId; - public PickDetail(){ + public PickDetail() { } - public void copy(PickDetail source){ - BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); + + public void copy(PickDetail source) { + BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); } } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/repository/GdDetailRepository.java b/youchain-system/src/main/java/com/youchain/businessdata/repository/GdDetailRepository.java deleted file mode 100644 index 317cd0d..0000000 --- a/youchain-system/src/main/java/com/youchain/businessdata/repository/GdDetailRepository.java +++ /dev/null @@ -1,39 +0,0 @@ -/* -* Copyright 2019-2020 Zheng Jie -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package com.youchain.businessdata.repository; - -import com.youchain.businessdata.domain.Gd; -import com.youchain.businessdata.domain.GdDetail; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.JpaSpecificationExecutor; -import org.springframework.data.jpa.repository.Query; - -import java.util.List; - -/** -* @website https://eladmin.vip -* @author huojin -* @date 2024-06-06 -**/ -public interface GdDetailRepository extends JpaRepository, JpaSpecificationExecutor { - @Query(value = "SELECT g FROM GdDetail g WHERE g.gd.id=?1 " + - " and (?2=null or g.bigItem.id=?2) and g.item.id=?3 and g.orderType=?4") - List findRepeat(Long gdId, Long bigItemId, Long itemId,String orderType); - @Query(value = " FROM GdDetail g WHERE g.gd.id=?1 and g.orderQty>0") - List findByGdAndQty(Long gdId); - @Query(value = "SELECT g FROM GdDetail g WHERE g.bigItem.id=?1 ") - List findByBigItem(Long bigItemId); -} diff --git a/youchain-system/src/main/java/com/youchain/businessdata/repository/GdRepository.java b/youchain-system/src/main/java/com/youchain/businessdata/repository/GdRepository.java deleted file mode 100644 index 87f7f6a..0000000 --- a/youchain-system/src/main/java/com/youchain/businessdata/repository/GdRepository.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2019-2020 Zheng Jie - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.youchain.businessdata.repository; - -import com.youchain.businessdata.domain.Gd; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.JpaSpecificationExecutor; -import org.springframework.data.jpa.repository.Query; - -import java.util.List; - -/** - * @author huojin - * @website https://eladmin.vip - * @date 2024-06-06 - **/ -public interface GdRepository extends JpaRepository, JpaSpecificationExecutor { - /** - * 查询gd列表 - * @param code - * @return - */ - @Query(value = " FROM Gd g WHERE g.code=:code ") - Gd findByGdCode(String code); -} diff --git a/youchain-system/src/main/java/com/youchain/businessdata/repository/PickRepository.java b/youchain-system/src/main/java/com/youchain/businessdata/repository/PickRepository.java index b10b4ee..d9ee7bb 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/repository/PickRepository.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/repository/PickRepository.java @@ -28,12 +28,13 @@ import java.util.List; * @date 2024-06-11 **/ public interface PickRepository extends JpaRepository, JpaSpecificationExecutor { - @Query(value = "SELECT p FROM Pick p WHERE p.id=?1 and p.lineNo=?2") - List findRepeat(long gdDetailId, int no); @Query(value = " FROM Pick p WHERE p.status in :status order by p.createTime,p.lineNo ") List findByPickStatus(List status); @Query(value = " FROM Pick p WHERE p.code=?1 and p.code=?2 and p.code=?3 ") Pick findByPick(String gdNo, String completeCode, String station); + + @Query(value = " from Pick p WHERE p.gdCode=:gdCode ") + List findByPickGdCode(String gdCode); } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/GdController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/GdController.java deleted file mode 100644 index b330b03..0000000 --- a/youchain-system/src/main/java/com/youchain/businessdata/rest/GdController.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2019-2020 Zheng Jie - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.youchain.businessdata.rest; - -import com.youchain.annotation.Log; -import com.youchain.businessdata.domain.Gd; -import com.youchain.businessdata.service.GdService; -import com.youchain.businessdata.service.dto.GdQueryCriteria; -import org.springframework.data.domain.Pageable; -import lombok.RequiredArgsConstructor; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.*; - -import java.io.IOException; -import javax.servlet.http.HttpServletResponse; - -/** - * @author huojin - * @website https://eladmin.vip - * @date 2024-06-06 - **/ -@RestController -@RequiredArgsConstructor -@Api(tags = "gd管理") -@RequestMapping("/api/gd") -public class GdController { - - private final GdService gdService; - - @Log("导出数据") - @ApiOperation("导出数据") - @GetMapping(value = "/download") - @PreAuthorize("@el.check('gd:list')") - public void exportGd(HttpServletResponse response, GdQueryCriteria criteria) throws IOException { - gdService.download(gdService.queryAll(criteria), response); - } - - @GetMapping - @ApiOperation("查询工单") - @PreAuthorize("@el.check('gd:list')") - public ResponseEntity queryGd(GdQueryCriteria criteria, Pageable pageable) { - return new ResponseEntity<>(gdService.queryAll(criteria, pageable), HttpStatus.OK); - } - - @GetMapping(value = "/queryAllGd") - @ApiOperation("查询All工单") - @PreAuthorize("@el.check('gd:list')") - public ResponseEntity queryAllGd(GdQueryCriteria criteria) { - return new ResponseEntity<>(gdService.queryAll(criteria), HttpStatus.OK); - } - - @PostMapping - @Log("新增gd") - @ApiOperation("新增gd") - @PreAuthorize("@el.check('gd:add')") - public ResponseEntity createGd(@Validated @RequestBody Gd resources) { - return new ResponseEntity<>(gdService.create(resources), HttpStatus.CREATED); - } - - @PutMapping - @Log("修改gd") - @ApiOperation("修改gd") - @PreAuthorize("@el.check('gd:edit')") - public ResponseEntity updateGd(@Validated @RequestBody Gd resources) { - gdService.update(resources); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @DeleteMapping - @Log("删除gd") - @ApiOperation("删除gd") - @PreAuthorize("@el.check('gd:del')") - public ResponseEntity deleteGd(@RequestBody Long[] ids) { - gdService.deleteAll(ids); - return new ResponseEntity<>(HttpStatus.OK); - } -} diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/GdDetailController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/GdDetailController.java deleted file mode 100644 index f3919cd..0000000 --- a/youchain-system/src/main/java/com/youchain/businessdata/rest/GdDetailController.java +++ /dev/null @@ -1,86 +0,0 @@ -/* -* Copyright 2019-2020 Zheng Jie -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package com.youchain.businessdata.rest; - -import com.youchain.annotation.Log; -import com.youchain.businessdata.domain.GdDetail; -import com.youchain.businessdata.service.GdDetailService; -import com.youchain.businessdata.service.dto.GdDetailQueryCriteria; -import org.springframework.data.domain.Pageable; -import lombok.RequiredArgsConstructor; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.*; -import java.io.IOException; -import javax.servlet.http.HttpServletResponse; - -/** -* @website https://eladmin.vip -* @author huojin -* @date 2024-06-06 -**/ -@RestController -@RequiredArgsConstructor -@Api(tags = "gdDetail管理") -@RequestMapping("/api/gdDetail") -public class GdDetailController { - - private final GdDetailService gdDetailService; - - @Log("导出数据") - @ApiOperation("导出数据") - @GetMapping(value = "/download") - @PreAuthorize("@el.check('gdDetail:list')") - public void exportGdDetail(HttpServletResponse response, GdDetailQueryCriteria criteria) throws IOException { - gdDetailService.download(gdDetailService.queryAll(criteria), response); - } - - @GetMapping - @ApiOperation("查询gdDetail") - @PreAuthorize("@el.check('gdDetail:list')") - public ResponseEntity queryGdDetail(GdDetailQueryCriteria criteria, Pageable pageable){ - return new ResponseEntity<>(gdDetailService.queryAll(criteria,pageable),HttpStatus.OK); - } - - @PostMapping - @Log("新增gdDetail") - @ApiOperation("新增gdDetail") - @PreAuthorize("@el.check('gdDetail:add')") - public ResponseEntity createGdDetail(@Validated @RequestBody GdDetail resources){ - return new ResponseEntity<>(gdDetailService.create(resources),HttpStatus.CREATED); - } - - @PutMapping - @Log("修改gdDetail") - @ApiOperation("修改gdDetail") - @PreAuthorize("@el.check('gdDetail:edit')") - public ResponseEntity updateGdDetail(@Validated @RequestBody GdDetail resources){ - gdDetailService.update(resources); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @DeleteMapping - @Log("删除gdDetail") - @ApiOperation("删除gdDetail") - @PreAuthorize("@el.check('gdDetail:del')") - public ResponseEntity deleteGdDetail(@RequestBody Long[] ids) { - gdDetailService.deleteAll(ids); - return new ResponseEntity<>(HttpStatus.OK); - } -} diff --git a/youchain-system/src/main/java/com/youchain/businessdata/rest/MesController.java b/youchain-system/src/main/java/com/youchain/businessdata/rest/MesController.java index 804766c..a79099f 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/rest/MesController.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/rest/MesController.java @@ -6,7 +6,6 @@ import org.springframework.http.HttpStatus; import com.youchain.RequestData.*; import com.youchain.annotation.AnonymousAccess; import com.youchain.annotation.Log; -import com.youchain.businessdata.service.GdService; import com.youchain.businessdata.service.PickService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -25,7 +24,6 @@ import static org.springframework.http.HttpStatus.OK; @RequestMapping("/api/mes") @Slf4j public class MesController { - private final GdService gdService; private final PickService pickService; private final StockService stockService; @@ -36,7 +34,7 @@ public class MesController { @AnonymousAccess public ResponseEntity yclbl(@Validated @RequestBody Yclbl yclbl) { try { - gdService.materialBL(yclbl); + pickService.materialBL(yclbl); return successResponse("备料成功!"); } catch (Exception e) { return badResponse("备料失败:" + e.getMessage()); diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/GdDetailService.java b/youchain-system/src/main/java/com/youchain/businessdata/service/GdDetailService.java deleted file mode 100644 index 9d0d45a..0000000 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/GdDetailService.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2019-2020 Zheng Jie - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.youchain.businessdata.service; - -import com.youchain.basicdata.domain.BigItem; -import com.youchain.basicdata.domain.Item; -import com.youchain.businessdata.domain.Gd; -import com.youchain.businessdata.domain.GdDetail; -import com.youchain.businessdata.service.dto.GdDetailDto; -import com.youchain.businessdata.service.dto.GdDetailQueryCriteria; -import org.springframework.data.domain.Pageable; - -import java.util.Map; -import java.util.List; -import java.io.IOException; -import javax.servlet.http.HttpServletResponse; - -/** - * @author huojin - * @website https://eladmin.vip - * @description 服务接口 - * @date 2024-06-06 - **/ -public interface GdDetailService { - - /** - * 查询数据分页 - * - * @param criteria 条件 - * @param pageable 分页参数 - * @return Map - */ - Map queryAll(GdDetailQueryCriteria criteria, Pageable pageable); - - /** - * 查询所有数据不分页 - * - * @param criteria 条件参数 - * @return List - */ - List queryAll(GdDetailQueryCriteria criteria); - - /** - * 根据ID查询 - * - * @param id ID - * @return GdDetailDto - */ - GdDetailDto findById(Long id); - - /** - * 创建 - * - * @param resources / - * @return GdDetailDto - */ - GdDetailDto create(GdDetail resources); - - /** - * 编辑 - * - * @param resources / - */ - void update(GdDetail resources); - - /** - * 多选删除 - * - * @param ids / - */ - void deleteAll(Long[] ids); - - /** - * 导出数据 - * - * @param all 待导出的数据 - * @param response / - * @throws IOException / - */ - void download(List all, HttpServletResponse response) throws IOException; -} diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/GdService.java b/youchain-system/src/main/java/com/youchain/businessdata/service/GdService.java deleted file mode 100644 index eb29ba1..0000000 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/GdService.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2019-2020 Zheng Jie - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.youchain.businessdata.service; - -import com.youchain.RequestData.Yclbl; -import com.youchain.businessdata.domain.Gd; -import com.youchain.businessdata.service.dto.GdDto; -import com.youchain.businessdata.service.dto.GdQueryCriteria; -import org.springframework.data.domain.Pageable; - -import java.util.Map; -import java.util.List; -import java.io.IOException; -import javax.servlet.http.HttpServletResponse; - -/** - * @author huojin - * @website https://eladmin.vip - * @description 服务接口 - * @date 2024-06-06 - **/ -public interface GdService { - - /** - * 查询数据分页 - * - * @param criteria 条件 - * @param pageable 分页参数 - * @return Map - */ - Map queryAll(GdQueryCriteria criteria, Pageable pageable); - - /** - * 查询所有数据不分页 - * - * @param criteria 条件参数 - * @return List - */ - List queryAll(GdQueryCriteria criteria); - - /** - * 根据ID查询 - * - * @param id ID - * @return GdDto - */ - GdDto findById(Long id); - - /** - * 创建 - * - * @param resources / - * @return GdDto - */ - GdDto create(Gd resources); - - /** - * 编辑 - * - * @param resources / - */ - void update(Gd resources); - - /** - * 多选删除 - * - * @param ids / - */ - void deleteAll(Long[] ids); - - /** - * 导出数据 - * - * @param all 待导出的数据 - * @param response / - * @throws IOException / - */ - void download(List all, HttpServletResponse response) throws IOException; - - - /** - * 创建工单 - * - * @param orderNo 订单号 - * @param taskCode 任务代码 - * @return Gd - */ - Gd createGd(String orderNo, String taskCode); - - /** - * 原材料备料 - * - * @param yclbl 原材料备料 - */ - void materialBL(Yclbl yclbl); -} diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/PickDetailService.java b/youchain-system/src/main/java/com/youchain/businessdata/service/PickDetailService.java index b6dd036..7036f4b 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/PickDetailService.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/PickDetailService.java @@ -15,11 +15,8 @@ */ package com.youchain.businessdata.service; -import com.youchain.basicdata.domain.Box; import com.youchain.basicdata.domain.Item; import com.youchain.basicdata.domain.Point; -import com.youchain.basicdata.service.dto.BoxDto; -import com.youchain.businessdata.domain.GdDetail; import com.youchain.businessdata.domain.Pick; import com.youchain.businessdata.domain.PickDetail; import com.youchain.businessdata.service.dto.PickDetailDto; @@ -127,14 +124,6 @@ public interface PickDetailService { PickDetail createPickDetail(Item item, String po); - /** - * 创建出库单明细 - * - * @param pick->出库单 - * @param gdDetails->工单明细 - */ - void createPickDetail(Pick pick, List gdDetails); - /** * 出库单分配 * diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/PickService.java b/youchain-system/src/main/java/com/youchain/businessdata/service/PickService.java index 137370c..940f9cd 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/PickService.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/PickService.java @@ -15,9 +15,7 @@ */ package com.youchain.businessdata.service; -import com.youchain.basicdata.domain.Point; -import com.youchain.businessdata.domain.Gd; -import com.youchain.businessdata.domain.GdDetail; +import com.youchain.RequestData.Yclbl; import com.youchain.businessdata.domain.Pick; import com.youchain.businessdata.service.dto.PickDto; import com.youchain.businessdata.service.dto.PickQueryCriteria; @@ -92,8 +90,6 @@ public interface PickService { */ void download(List all, HttpServletResponse response) throws IOException; - Pick save(GdDetail gdDetail, int no); - /** * 成品叫料 * @@ -115,16 +111,11 @@ public interface PickService { void itemCall(String gdNo, String itemCode, String station, String pointCode); /** - * 创建出库单 + * 原材料备料 * - * @param gd->订单 - * @param lineNo->行号 - * @param cpCodeOrpCode->成品代码或原料代码 - * @param station->工位 + * @param yclbl 原材料备料 */ - Pick createPick(Gd gd, int lineNo, String cpCodeOrpCode, String station); - - + void materialBL(Yclbl yclbl); /** * 根据出库单备料 diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/GdDetailDto.java b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/GdDetailDto.java deleted file mode 100644 index b7a1340..0000000 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/GdDetailDto.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2019-2020 Zheng Jie - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.youchain.businessdata.service.dto; - -import com.youchain.basicdata.domain.BigItem; -import com.youchain.basicdata.domain.Item; -import com.youchain.businessdata.domain.Gd; -import lombok.Data; - -import java.sql.Timestamp; -import java.io.Serializable; - -/** - * @author huojin - * @website https://eladmin.vip - * @description / - * @date 2024-06-06 - **/ -@Data -public class GdDetailDto implements Serializable { - - /** - * ID - */ - private Long id; - - /** - * 创建人 - */ - private String createBy; - - /** - * 修改人 - */ - private String updateBy; - - /** - * 创建时间 - */ - private Timestamp createTime; - - /** - * 修改时间 - */ - private Timestamp updateTime; - - /** - * 行号 - */ - private int lineNo; - - /** - * 关联物料 - */ - private Long itemId; - private Item item; - - /** - * 订单数量 - */ - private Long itemQty; - - /** - * 总成代码 - */ - private Long bigItemId; - private BigItem bigItem; - - /** - * 总成套数 - */ - private Long bigItemQty; - private Gd gd; - private Double orderQty; - - /** - * 单据类型 - */ - private String orderType; - - /** - * 工单需求 - */ - private String station; -} diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/GdDetailQueryCriteria.java b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/GdDetailQueryCriteria.java deleted file mode 100644 index fa7a528..0000000 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/GdDetailQueryCriteria.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2019-2020 Zheng Jie - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.youchain.businessdata.service.dto; - -import lombok.Data; - -import java.util.List; - -import com.youchain.annotation.Query; - -/** - * @author huojin - * @website https://eladmin.vip - * @date 2024-06-06 - **/ -@Data -public class GdDetailQueryCriteria { - - /** - * 工单编码 - */ - @Query(joinName = "gd>", propName = "code", type = Query.Type.INNER_LIKE) - private String gdCode; - - /** - * 单品编码 - */ - @Query(joinName = "item>", propName = "code", type = Query.Type.INNER_LIKE) - private String itemCode; - - /** - * 成品编码 - */ - @Query(joinName = "bigItem>", propName = "code", type = Query.Type.INNER_LIKE) - private String bigItemCode; - - /** - * 单据类型 - */ - @Query - private String orderType; - - /** - * 需求工位 - */ - @Query - private String station; -} diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/GdDto.java b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/GdDto.java deleted file mode 100644 index 760e6f1..0000000 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/GdDto.java +++ /dev/null @@ -1,54 +0,0 @@ -/* -* Copyright 2019-2020 Zheng Jie -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package com.youchain.businessdata.service.dto; - -import lombok.Data; -import java.sql.Timestamp; -import java.io.Serializable; - -/** -* @website https://eladmin.vip -* @description / -* @author huojin -* @date 2024-06-06 -**/ -@Data -public class GdDto implements Serializable { - - /** ID */ - private Long id; - - /** 创建人 */ - private String createBy; - - /** 修改人 */ - private String updateBy; - - /** 创建时间 */ - private Timestamp createTime; - - /** 修改时间 */ - private Timestamp updateTime; - - /** 工单编号 */ - private String code; - - /** 任务编号 */ - private String name; - - /** 工单状态 */ - private String status; -} diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/GdQueryCriteria.java b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/GdQueryCriteria.java deleted file mode 100644 index 706c11d..0000000 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/GdQueryCriteria.java +++ /dev/null @@ -1,42 +0,0 @@ -/* -* Copyright 2019-2020 Zheng Jie -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package com.youchain.businessdata.service.dto; - -import lombok.Data; -import java.util.List; -import com.youchain.annotation.Query; - -/** -* @website https://eladmin.vip -* @author huojin -* @date 2024-06-06 -**/ -@Data -public class GdQueryCriteria{ - - /** 模糊 */ - @Query(type = Query.Type.INNER_LIKE) - private String code; - - /** 模糊 */ - @Query(type = Query.Type.INNER_LIKE) - private String name; - - /** 精确 */ - @Query - private String status; - -} diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/PickDto.java b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/PickDto.java index e563a1d..c79e933 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/PickDto.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/PickDto.java @@ -75,6 +75,11 @@ public class PickDto implements Serializable { */ private Point callPoint; + /** + * 单据类型 + */ + private String orderType; + /** * 是否叫料 */ diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/PickQueryCriteria.java b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/PickQueryCriteria.java index 0bd0a00..a106504 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/dto/PickQueryCriteria.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/dto/PickQueryCriteria.java @@ -41,4 +41,22 @@ public class PickQueryCriteria { @Query(type = Query.Type.EQUAL) private String status; + /** + * 需求工位 + */ + @Query(type = Query.Type.INNER_LIKE) + private String station; + + /** + * 成品代码或单品代码 + */ + @Query(type = Query.Type.INNER_LIKE) + private String cpCodeOrDpCode; + + /** + * 单据类型 + */ + @Query(type = Query.Type.EQUAL) + private String orderType; + } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/GdDetailServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/GdDetailServiceImpl.java deleted file mode 100644 index 4d18385..0000000 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/GdDetailServiceImpl.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2019-2020 Zheng Jie - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.youchain.businessdata.service.impl; - -import com.youchain.businessdata.domain.GdDetail; -import com.youchain.modules.system.service.DeptService; -import com.youchain.utils.*; -import lombok.RequiredArgsConstructor; -import com.youchain.businessdata.repository.GdDetailRepository; -import com.youchain.businessdata.service.GdDetailService; -import com.youchain.businessdata.service.dto.GdDetailDto; -import com.youchain.businessdata.service.dto.GdDetailQueryCriteria; -import com.youchain.businessdata.service.mapstruct.GdDetailMapper; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; - -import java.util.List; -import java.util.Map; -import java.io.IOException; -import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.LinkedHashMap; - -/** - * @author huojin - * @website https://eladmin.vip - * @description 服务实现 - * @date 2024-06-06 - **/ -@Service -@RequiredArgsConstructor -public class GdDetailServiceImpl implements GdDetailService { - - private final GdDetailRepository gdDetailRepository; - private final GdDetailMapper gdDetailMapper; - private final DeptService deptService; - - @Override - public Map queryAll(GdDetailQueryCriteria criteria, Pageable pageable) { - Page page = gdDetailRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable); - return PageUtil.toPage(page.map(gdDetailMapper::toDto)); - } - - @Override - public List queryAll(GdDetailQueryCriteria criteria) { - return gdDetailMapper.toDto(gdDetailRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder))); - } - - @Override - @Transactional - public GdDetailDto findById(Long id) { - GdDetail gdDetail = gdDetailRepository.findById(id).orElseGet(GdDetail::new); - ValidationUtil.isNull(gdDetail.getId(), "GdDetail", "id", id); - return gdDetailMapper.toDto(gdDetail); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public GdDetailDto create(GdDetail resources) { - return gdDetailMapper.toDto(gdDetailRepository.save(resources)); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(GdDetail resources) { - GdDetail gdDetail = gdDetailRepository.findById(resources.getId()).orElseGet(GdDetail::new); - ValidationUtil.isNull(gdDetail.getId(), "GdDetail", "id", resources.getId()); - gdDetail.copy(resources); - gdDetailRepository.save(gdDetail); - } - - @Override - public void deleteAll(Long[] ids) { - for (Long id : ids) { - gdDetailRepository.deleteById(id); - } - } - - @Override - public void download(List all, HttpServletResponse response) throws IOException { - List> list = new ArrayList<>(); - for (GdDetailDto gdDetail : all) { - Map map = new LinkedHashMap<>(); - map.put("创建人", gdDetail.getCreateBy()); - map.put("修改人", gdDetail.getUpdateBy()); - map.put("创建时间", gdDetail.getCreateTime()); - map.put("修改时间", gdDetail.getUpdateTime()); - map.put("行号", gdDetail.getLineNo()); - map.put("关联物料", gdDetail.getItemId()); - map.put("订单数量", gdDetail.getItemQty()); - map.put("总成代码", gdDetail.getBigItemId()); - map.put("总成套数", gdDetail.getBigItemQty()); - map.put("单据类型", gdDetail.getOrderType()); - list.add(map); - } - FileUtil.downloadExcel(list, response); - } -} diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/GdServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/GdServiceImpl.java deleted file mode 100644 index 4a0ca94..0000000 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/GdServiceImpl.java +++ /dev/null @@ -1,426 +0,0 @@ -/* - * Copyright 2019-2020 Zheng Jie - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.youchain.businessdata.service.impl; - -import com.youchain.RequestData.ItemDate; -import com.youchain.RequestData.Yclbl; -import com.youchain.RequestData.ZcData; -import com.youchain.basicdata.domain.BigItem; -import com.youchain.basicdata.domain.Item; -import com.youchain.basicdata.domain.PackageCheck; -import com.youchain.basicdata.repository.BigItemRepository; -import com.youchain.basicdata.repository.ItemRepository; -import com.youchain.basicdata.repository.PackageCheckRepository; -import com.youchain.businessdata.domain.Gd; -import com.youchain.businessdata.domain.GdDetail; -import com.youchain.businessdata.domain.Pick; -import com.youchain.businessdata.service.PickDetailService; -import com.youchain.businessdata.service.PickService; -import com.youchain.config.thread.ThreadPoolExecutorUtil; -import com.youchain.modules.system.domain.Dept; -import com.youchain.modules.system.service.DeptService; -import com.youchain.utils.*; -import lombok.RequiredArgsConstructor; -import com.youchain.businessdata.repository.GdRepository; -import com.youchain.businessdata.service.GdService; -import com.youchain.businessdata.service.dto.GdDto; -import com.youchain.businessdata.service.dto.GdQueryCriteria; -import com.youchain.businessdata.service.mapstruct.GdMapper; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; - -import java.util.*; -import java.io.IOException; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.stream.Collectors; -import javax.servlet.http.HttpServletResponse; - -/** - * @author huojin - * @website https://eladmin.vip - * @description 服务实现 - * @date 2024-06-06 - **/ -@Service -@RequiredArgsConstructor -public class GdServiceImpl implements GdService { - - private final GdRepository gdRepository; - private final BigItemRepository bigItemRepository; - private final ItemRepository itemRepository; - private final PickService pickService; - private final PickDetailService pickDetailService; - private final DeptService deptService; - private final GdMapper gdMapper; - private final RedisObjectUtils redisObjectUtils; - private final PackageCheckRepository packageCheckRepository; - private final BatchCreateOrUpdate batchCreateOrUpdate; - - - @Override - public Map queryAll(GdQueryCriteria criteria, Pageable pageable) { - Page page = gdRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable); - return PageUtil.toPage(page.map(gdMapper::toDto)); - } - - @Override - public List queryAll(GdQueryCriteria criteria) { - return gdMapper.toDto(gdRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder))); - } - - @Override - @Transactional - public GdDto findById(Long id) { - Gd gd = gdRepository.findById(id).orElseGet(Gd::new); - ValidationUtil.isNull(gd.getId(), "Gd", "id", id); - return gdMapper.toDto(gd); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public GdDto create(Gd resources) { - return gdMapper.toDto(gdRepository.save(resources)); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(Gd resources) { - Gd gd = gdRepository.findById(resources.getId()).orElseGet(Gd::new); - ValidationUtil.isNull(gd.getId(), "Gd", "id", resources.getId()); - gd.copy(resources); - gdRepository.save(gd); - } - - @Override - public void deleteAll(Long[] ids) { - for (Long id : ids) { - gdRepository.deleteById(id); - } - } - - @Override - public void download(List all, HttpServletResponse response) throws IOException { - List> list = new ArrayList<>(); - for (GdDto gd : all) { - Map map = new LinkedHashMap<>(); - map.put("创建人", gd.getCreateBy()); - map.put("修改人", gd.getUpdateBy()); - map.put("创建时间", gd.getCreateTime()); - map.put("修改时间", gd.getUpdateTime()); - map.put("工单编号", gd.getCode()); - map.put("任务编号", gd.getName()); - map.put("工单状态", gd.getStatus()); - list.add(map); - } - FileUtil.downloadExcel(list, response); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public Gd createGd(String orderNo, String taskCode) { - Gd gd = new Gd(); - gd.setCode(orderNo); - gd.setName(taskCode); - gd.setStatus(BizStatus.OPEN); - gd.setDept(deptService.getDefaultDept()); - gdRepository.save(gd); - return gd; - } - - - /** - * 原材料备料 - * - * @param yclbl -> 备料参数 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void materialBL(Yclbl yclbl) { - /** 验证参数有效性 */ - validateGd(yclbl); - - /** 验证工单是否存在 */ - checkIfGdExists(yclbl); - - /** 创建工单 */ - Gd gd = createGd(yclbl.getOrderNo(), yclbl.getTaskCode()); - - /** 创建工单明细 */ - List gdDetailList = createGdDetailsCPAndDP(gd, yclbl); - - /** 添加出库单和出库明细 */ - addPickAndPickDetail(gd, gdDetailList); - - } - - /** - * 验证工单是否存在 - * - * @param yclbl -> 备料参数 - */ - private void checkIfGdExists(Yclbl yclbl) { - Gd gd = gdRepository.findByGdCode(yclbl.getOrderNo()); - if (gd != null) { - throw new IllegalArgumentException(yclbl.getOrderNo() + "备料工单已存在!"); - } - } - - /** - * 创建成品工单明细 - * - * @param yclbl -> 备料参数 - * @param gd -> 工单 - */ - private List createGdDetailsCP(Yclbl yclbl, Gd gd) { - if (yclbl.getBlzc().isEmpty()) { - return null; - } - String orderType = BaseStatus.GD_TYPE_CT; - Dept dept = deptService.getDefaultDept(); - - List gdDetailsCreate = yclbl.getBlzc().parallelStream() - .flatMap(zcData -> { - BigItem bigItem = validateBigItem(zcData.getCompleteCode()); // 验证成品是否存在 - double completeQty = zcData.getCompleteQty(); - AtomicInteger index = new AtomicInteger(1); - return zcData.getBlzcmx().stream() - .map(itemDate -> { - Item item = validateItem(itemDate.getItemCode()); // 验证单品是否存在 - return createGdDetail( - gd, - index.getAndIncrement(), - item, - itemDate.getItemQty(), - bigItem, - completeQty, - orderType, - dept, - zcData.getStation() - ); - }); - }) - .collect(Collectors.toList()); - return gdDetailsCreate; - } - - /** - * 创建单品工单明细 - * - * @param yclbl -> 备料参数 - * @param gd -> 工单 - */ - private List createGdDetailsDP(Yclbl yclbl, Gd gd) { - if (yclbl.getBlzcmx().isEmpty()) { - return null; - } - String orderType = BaseStatus.GD_TYPE_DP; - Dept dept = deptService.getDefaultDept(); - AtomicInteger index = new AtomicInteger(1); - List gdDetailsCreate = yclbl.getBlzcmx().parallelStream() - .map(itemDate -> { - Item item = validateItem(itemDate.getItemCode()); // 验证单品是否存在 - return createGdDetail( - gd, - index.getAndIncrement(), - item, - itemDate.getItemQty(), - null, - null, - orderType, - dept, - itemDate.getStation() - ); - }) - .collect(Collectors.toList()); - return gdDetailsCreate; - } - - /** - * 创建工单明细 - * - * @param gd -> 工单 - * @param yclbl -> 备料参数 - */ - private List createGdDetailsCPAndDP(Gd gd, Yclbl yclbl) { - - /** 添加成品工单明细集合 */ - List gdDetailsCreateCP = createGdDetailsCP(yclbl, gd); - - /** 添加单品工单明细集合 */ - List gdDetailsCreateDP = createGdDetailsDP(yclbl, gd); - - /** 把两个集合合并 */ - List gdDetailsCreate = new ArrayList<>(gdDetailsCreateCP); - gdDetailsCreate.addAll(gdDetailsCreateDP); - - /** 批量保存工单明细 */ - ExecutorService executor = ThreadPoolExecutorUtil.getPoll("gdDetail-create-job"); - CompletableFuture> future = CompletableFuture.supplyAsync(() -> { - batchCreateOrUpdate.batchCreate(gdDetailsCreate); - return gdDetailsCreate; - }, executor); - List gdDetails = future.join(); - executor.shutdown();// 关闭线程池 - return gdDetails;// 返回结果 - } - - /** - * 创建工单明细 - * - * @param gd-> 工单 - * @param lineNo -> 行号 - * @param item -> 单品 - * @param itemQty -> 单品数量 - * @param bigItem -> 成品 - * @param bigItemQty -> 成品数量 - * @param orderType -> 订单类型 - * @param dept -> 仓库 - * @return - */ - private GdDetail createGdDetail(Gd gd, int lineNo, Item item, Double itemQty, BigItem bigItem, Double bigItemQty, String orderType, Dept dept, String station) { - GdDetail gdDetail = new GdDetail(); - gdDetail.setGd(gd); - gdDetail.setLineNo(lineNo); - gdDetail.setItem(item); - gdDetail.setItemQty(itemQty); - gdDetail.setBigItem(bigItem); - gdDetail.setBigItemQty(bigItemQty); - gdDetail.setOrderType(orderType); - gdDetail.setDept(dept); - gdDetail.setStation(station); - return gdDetail; - } - - /** - * 验证参数有效性 - * - * @param yclbl -> 备料参数 - */ - private void validateGd(Yclbl yclbl) { - if (StringUtils.isEmpty(yclbl.getOrderNo())) { - throw new IllegalArgumentException("工单号必填!"); - } - if (StringUtils.isEmpty(yclbl.getTaskCode())) { - throw new IllegalArgumentException("任务号必填!"); - } - - if (yclbl.getBlzc().isEmpty() && yclbl.getBlzcmx().isEmpty()) { - throw new IllegalArgumentException("成品明细和单品明细至少一项必填!"); - } - - if (!yclbl.getBlzc().isEmpty()) { - for (ZcData zcData : yclbl.getBlzc()) { - if (!StringUtils.isEmpty(zcData.getCompleteCode())) { - if (zcData.getCompleteQty() <= 0) { - throw new IllegalArgumentException("成品套数不能小于等于0!"); - } - } - if (StringUtils.isEmpty(zcData.getStation())) { - throw new IllegalArgumentException("成品需求工位必填!"); - } - for (ItemDate itemDate : zcData.getBlzcmx()) { - if (itemDate.getItemQty() == null || itemDate.getItemQty() <= 0) { - throw new IllegalArgumentException("单品套数不能小于等于0!"); - } - } - } - } - - if (!yclbl.getBlzcmx().isEmpty()) { - for (ItemDate itemDate : yclbl.getBlzcmx()) { - if (itemDate.getItemQty() == null || itemDate.getItemQty() <= 0) { - throw new IllegalArgumentException("单品套数不能小于等于0!"); - } - if (StringUtils.isEmpty(itemDate.getStation())) { - throw new IllegalArgumentException("单品需求工位必填!"); - } - } - } - - } - - /** - * 验证成品是否存在 - * - * @param completeCode -> 成品编码 - * @return - */ - private BigItem validateBigItem(String completeCode) { - BigItem bigItem = redisObjectUtils.getObjectFromCache(completeCode, () -> bigItemRepository.findByBigItemCode(completeCode), completeCode + "成品物料不存在,请维护!"); - return bigItem; - } - - /** - * 验证单品是否存在 - * - * @param itemCode -> 单品编码 - * @return - */ - private Item validateItem(String itemCode) { - Item item = redisObjectUtils.getObjectFromCache(itemCode, () -> itemRepository.findByItemCode(itemCode), itemCode + "单品物料不存在,请维护!"); - return item; - } - - /** - * 验证翻包套数是否存在 - * - * @param code -> 翻包编码 - * @return - */ - private PackageCheck validatePackageCheck(String code) { - PackageCheck packageCheck = redisObjectUtils.getObjectFromCache(code, () -> packageCheckRepository.findByCode(code), code + "翻包套数不存在,请维护!"); - return packageCheck; - } - - private void addPickAndPickDetail(Gd gd, List gdDetailList) { - AtomicInteger lineNo = new AtomicInteger(1); - /** 成品工单明细集合 */ - List cpGdDetailList = gdDetailList.stream() - .filter(gdDetail -> BaseStatus.GD_TYPE_CT.equals(gdDetail.getOrderType())) - .collect(Collectors.toList()); - - /** 根据成品编码查出对应的工单明细集合 */ - Map> groupedByCpCodeMap = cpGdDetailList.stream() - .collect(Collectors.groupingBy(gdDetail -> gdDetail.getBigItem().getCode())); - - /** 单品工单明细集合 */ - List dpGdDetailList = gdDetailList.stream() - .filter(gdDetail -> BaseStatus.GD_TYPE_DP.equals(gdDetail.getOrderType())) - .collect(Collectors.toList()); - - /** 根据单品编码查出对应的工单明细集合 */ - Map> groupedByDpCodeMap = dpGdDetailList.stream() - .collect(Collectors.groupingBy(gdDetail -> gdDetail.getItem().getCode())); - - /** 根据成品工单明细生成出库单和出库单明细 */ - createPickAndPickDetail(gd, groupedByCpCodeMap, lineNo); - - /** 根据单品工单明细生成出库单和出库单明细 */ - createPickAndPickDetail(gd, groupedByDpCodeMap, lineNo); - - } - - private void createPickAndPickDetail(Gd gd, Map> groupedByDpCodeMap, AtomicInteger lineNo) { - groupedByDpCodeMap.forEach((code, gdDetails) -> { - Pick pick = pickService.createPick(gd, lineNo.getAndIncrement(), code, gdDetails.get(0).getStation()); - pickDetailService.createPickDetail(pick, gdDetails); - }); - } -} 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 6dd8188..59a5d64 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 @@ -307,27 +307,6 @@ public class PickDetailServiceImpl implements PickDetailService { return d; } - @Override - @Transactional(rollbackFor = Exception.class) - public void createPickDetail(Pick pick, List gdDetails) { - AtomicInteger lineNo = new AtomicInteger(1); - for (GdDetail gdDetail : gdDetails) { - PickDetail pickDetail = new PickDetail(); - pickDetail.setPick(pick); - pickDetail.setItem(gdDetail.getItem()); - pickDetail.setLineNo(lineNo.getAndIncrement()); - pickDetail.setStatus(BizStatus.OPEN); - if (BaseStatus.GD_TYPE_CT.equals(gdDetail.getOrderType())) { - pickDetail.setOrderQty(gdDetail.getItemQty() * gdDetail.getBigItemQty()); - } else { - pickDetail.setOrderQty(gdDetail.getItemQty()); - } - pickDetail.setSourceId(gdDetail.getId()); - pickDetail.setDept(gdDetail.getDept()); - pickDetailRepository.save(pickDetail); - } - } - @Override @Transactional(rollbackFor = Exception.class) public void allocatePick(Pick pick) { diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickServiceImpl.java index a51f673..62e0aaf 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickServiceImpl.java @@ -15,12 +15,20 @@ */ package com.youchain.businessdata.service.impl; +import com.youchain.RequestData.ItemDate; +import com.youchain.RequestData.Yclbl; +import com.youchain.RequestData.ZcData; +import com.youchain.basicdata.domain.Item; import com.youchain.basicdata.domain.Point; +import com.youchain.basicdata.repository.ItemRepository; import com.youchain.basicdata.repository.PointRepository; import com.youchain.businessdata.domain.*; import com.youchain.businessdata.repository.AgvTaskRepository; +import com.youchain.businessdata.repository.PickDetailRepository; import com.youchain.businessdata.repository.TaskRepository; import com.youchain.businessdata.service.AgvTaskService; +import com.youchain.config.thread.ThreadPoolExecutorUtil; +import com.youchain.modules.system.service.DeptService; import com.youchain.utils.*; import lombok.RequiredArgsConstructor; import com.youchain.businessdata.repository.PickRepository; @@ -28,17 +36,20 @@ import com.youchain.businessdata.service.PickService; import com.youchain.businessdata.service.dto.PickDto; import com.youchain.businessdata.service.dto.PickQueryCriteria; import com.youchain.businessdata.service.mapstruct.PickMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import java.util.List; -import java.util.Map; +import java.util.*; import java.io.IOException; import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.LinkedHashMap; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicInteger; /** * @author huojin @@ -51,11 +62,17 @@ import java.util.LinkedHashMap; public class PickServiceImpl implements PickService { private final PickRepository pickRepository; + private final PickDetailRepository pickDetailRepository; private final TaskRepository taskRepository; private final PointRepository pointRepository; + private final ItemRepository itemRepository; private final AgvTaskRepository agvTaskRepository; private final AgvTaskService agvTaskService; + private final DeptService deptService; private final PickMapper pickMapper; + private final RedisObjectUtils redisObjectUtils; + private final BatchCreateOrUpdate batchCreateOrUpdate; + @Override public Map queryAll(PickQueryCriteria criteria, Pageable pageable) { @@ -115,22 +132,6 @@ public class PickServiceImpl implements PickService { FileUtil.downloadExcel(list, response); } - @Override - public Pick save(GdDetail gdDetail, int no) { - Pick pick = new Pick(); - List pickList = pickRepository.findRepeat(gdDetail.getId(), no); - if (pickList.size() > 0) { - pick = pickList.get(0); - } - pick.setLineNo(no); - pick.setStatus(BizStatus.OPEN); - pick.setCode(gdDetail.getGd().getName() + "_" + no); - pick.setDept(UserUtils.isDept); - pickRepository.save(pick); - - return pick; - } - @Override @Transactional(rollbackFor = Exception.class) public void bigItemCall(String gdNo, String completeCode, String station, String pointCode) { @@ -177,18 +178,125 @@ public class PickServiceImpl implements PickService { @Override @Transactional(rollbackFor = Exception.class) - public Pick createPick(Gd gd, int lineNo, String cpCodeOrpCode, String station) { + public void materialBL(Yclbl yclbl) { + + /** 验证参数有效性 */ + validatePick(yclbl); + + /** 验证出库单是否存在 */ + checkIfGdExists(yclbl); + + List createPicks = new ArrayList<>(); + List createPickDetails = new ArrayList<>(); + AtomicInteger lineNo = new AtomicInteger(1); + + /** 合并两个循环,减少重复操作 */ + yclbl.getBlzc().forEach(zcData -> { + Pick pick = createPick(yclbl.getOrderNo(), lineNo.getAndIncrement(), zcData.getCompleteCode(), zcData.getStation()); + createPicks.add(pick); + zcData.getBlzcmx().forEach(itemDate -> { + Item item = validateItem(itemDate.getItemCode()); // 验证单品是否存在 + PickDetail pickDetail = createPickDetail(pick, item, BaseStatus.GD_TYPE_CT, itemDate.getItemQty(), zcData.getCompleteQty()); + createPickDetails.add(pickDetail); + }); + }); + + yclbl.getBlzcmx().forEach(itemDate -> { + Pick pick = createPick(yclbl.getOrderNo(), lineNo.getAndIncrement(), itemDate.getItemCode(), itemDate.getStation()); + createPicks.add(pick); + Item item = validateItem(itemDate.getItemCode()); // 验证单品是否存在 + PickDetail pickDetail = createPickDetail(pick, item, BaseStatus.GD_TYPE_DP, itemDate.getItemQty(), null); + createPickDetails.add(pickDetail); + }); + + ExecutorService executor = ThreadPoolExecutorUtil.getPoll("materialBL-job"); + try { + List> futures = new ArrayList<>(); + + /** 使用并行流批量保存 */ + if (!createPicks.isEmpty()) { + futures.add(CompletableFuture.runAsync(() -> pickRepository.saveAll(createPicks), executor)); + } + + if (!createPickDetails.isEmpty()) { + futures.add(CompletableFuture.runAsync(() -> pickDetailRepository.saveAll(createPickDetails), executor)); + } + + CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join(); + } catch (Exception e) { + throw new RuntimeException("创建出库单失败!", e); + } finally { + executor.shutdown(); + } + } + + /** + * 验证参数有效性 + * + * @param yclbl -> 备料参数 + */ + private void validatePick(Yclbl yclbl) { + if (StringUtils.isEmpty(yclbl.getOrderNo())) { + throw new IllegalArgumentException("工单号必填!"); + } + if (StringUtils.isEmpty(yclbl.getTaskCode())) { + throw new IllegalArgumentException("任务号必填!"); + } + + if (yclbl.getBlzc().isEmpty() && yclbl.getBlzcmx().isEmpty()) { + throw new IllegalArgumentException("成品明细和单品明细至少一项必填!"); + } + } + + /** + * 验证出库单是否存在 + * + * @param yclbl -> 备料参数 + */ + private void checkIfGdExists(Yclbl yclbl) { + List pick = pickRepository.findByPickGdCode(yclbl.getOrderNo()); + if (!pick.isEmpty()) { + throw new IllegalArgumentException(yclbl.getOrderNo() + "出库单已存在!"); + } + } + + /** + * 验证单品是否存在 + * + * @param itemCode -> 单品编码 + * @return + */ + private Item validateItem(String itemCode) { + Item item = redisObjectUtils.getObjectFromCache(itemCode, () -> itemRepository.findByItemCode(itemCode), itemCode + "单品物料不存在,请维护!"); + return item; + } + + public PickDetail createPickDetail(Pick pick, Item item, String orderType, Double itemQty, Double bigItemQty) { + AtomicInteger lineNo = new AtomicInteger(1); + PickDetail pickDetail = new PickDetail(); + pickDetail.setPick(pick); + pickDetail.setItem(item); + pickDetail.setLineNo(lineNo.getAndIncrement()); + pickDetail.setStatus(BizStatus.OPEN); + if (BaseStatus.GD_TYPE_CT.equals(orderType)) { + pickDetail.setOrderQty(itemQty * bigItemQty); + } else { + pickDetail.setOrderQty(itemQty); + } + pickDetail.setDept(pick.getDept()); + return pickDetail; + } + + public Pick createPick(String gdCode, int lineNo, String cpCodeOrpCode, String station) { Pick pick = new Pick(); pick.setLineNo(lineNo); - pick.setCode(gd.getCode() + "_" + lineNo); - pick.setGdCode(gd.getCode()); + pick.setCode(gdCode + "_" + lineNo); + pick.setGdCode(gdCode); pick.setStation(station); pick.setCpCodeOrDpCode(cpCodeOrpCode); pick.setStatus(BizStatus.OPEN); pick.setIsCall(false); - pick.setSourceId(gd.getId()); - pick.setDept(gd.getDept()); - pickRepository.save(pick); + pick.setDept(deptService.getDefaultDept()); return pick; } diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/mapstruct/GdDetailMapper.java b/youchain-system/src/main/java/com/youchain/businessdata/service/mapstruct/GdDetailMapper.java deleted file mode 100644 index 045b0ef..0000000 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/mapstruct/GdDetailMapper.java +++ /dev/null @@ -1,32 +0,0 @@ -/* -* Copyright 2019-2020 Zheng Jie -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package com.youchain.businessdata.service.mapstruct; - -import com.youchain.base.BaseMapper; -import com.youchain.businessdata.domain.GdDetail; -import com.youchain.businessdata.service.dto.GdDetailDto; -import org.mapstruct.Mapper; -import org.mapstruct.ReportingPolicy; - -/** -* @website https://eladmin.vip -* @author huojin -* @date 2024-06-06 -**/ -@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface GdDetailMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/mapstruct/GdMapper.java b/youchain-system/src/main/java/com/youchain/businessdata/service/mapstruct/GdMapper.java deleted file mode 100644 index d509a18..0000000 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/mapstruct/GdMapper.java +++ /dev/null @@ -1,32 +0,0 @@ -/* -* Copyright 2019-2020 Zheng Jie -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package com.youchain.businessdata.service.mapstruct; - -import com.youchain.base.BaseMapper; -import com.youchain.businessdata.domain.Gd; -import com.youchain.businessdata.service.dto.GdDto; -import org.mapstruct.Mapper; -import org.mapstruct.ReportingPolicy; - -/** -* @website https://eladmin.vip -* @author huojin -* @date 2024-06-06 -**/ -@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface GdMapper extends BaseMapper { - -} \ No newline at end of file diff --git a/youchain-system/src/main/java/com/youchain/utils/UserUtils.java b/youchain-system/src/main/java/com/youchain/utils/UserUtils.java index 46e596a..39d5a1b 100644 --- a/youchain-system/src/main/java/com/youchain/utils/UserUtils.java +++ b/youchain-system/src/main/java/com/youchain/utils/UserUtils.java @@ -1,12 +1,7 @@ package com.youchain.utils; -import cn.hutool.json.JSONUtil; -import com.youchain.businessdata.service.GdDetailService; import com.youchain.modules.system.domain.Dept; -import com.youchain.modules.system.repository.DeptRepository; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; import java.util.List; @Slf4j diff --git a/youchain-system/src/main/resources/config/application.yml b/youchain-system/src/main/resources/config/application.yml index 6d83cd7..743a9e0 100644 --- a/youchain-system/src/main/resources/config/application.yml +++ b/youchain-system/src/main/resources/config/application.yml @@ -6,8 +6,8 @@ spring: freemarker: check-template-location: false profiles: - active: prod - #active: dev + #active: prod + active: dev jackson: time-zone: GMT+8 data: @@ -31,11 +31,11 @@ spring: redis: #数据库索引 database: ${REDIS_DB:2} - host: ${REDIS_HOST:192.168.100.102} - password: ${REDIS_PWD:123456} + #host: ${REDIS_HOST:192.168.100.102} + #password: ${REDIS_PWD:123456} - #host: ${REDIS_HOST:localhost} - #password: ${REDIS_PWD:} + host: ${REDIS_HOST:localhost} + password: ${REDIS_PWD:} port: ${REDIS_PORT:6379} #连接超时时间 timeout: 5000 diff --git a/youchain-system/src/test/java/com/youchain/EladminSystemApplicationTests.java b/youchain-system/src/test/java/com/youchain/EladminSystemApplicationTests.java index 7f3e176..07b6262 100644 --- a/youchain-system/src/test/java/com/youchain/EladminSystemApplicationTests.java +++ b/youchain-system/src/test/java/com/youchain/EladminSystemApplicationTests.java @@ -2,18 +2,13 @@ package com.youchain; import com.youchain.basicdata.domain.BigItem; import com.youchain.basicdata.vo.BarCodeVo; -import com.youchain.businessdata.domain.AgvTask; -import com.youchain.businessdata.domain.AsnDetail; -import com.youchain.businessdata.domain.GdDetail; import com.youchain.businessdata.domain.PickDetail; -import com.youchain.config.thread.ThreadPoolExecutorUtil; -import com.youchain.utils.StringUtils; +import com.youchain.utils.BaseStatus; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import java.util.*; import java.util.concurrent.*; -import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @@ -24,6 +19,73 @@ public class EladminSystemApplicationTests { } public static void main(String[] args) { + GdDetail gdDetail1 = new GdDetail(); + gdDetail1.setBigItem(null); + gdDetail1.setOrderType("单品"); + + GdDetail gdDetail2 = new GdDetail(); + BigItem bigItem2 = new BigItem(); + bigItem2.setCode("CT_001"); + gdDetail2.setBigItem(bigItem2); + gdDetail2.setOrderType("成品"); + gdDetail2.setBigItemQty(1d); + gdDetail2.setStation("OP1070-2"); + + GdDetail gdDetail3 = new GdDetail(); + BigItem bigItem3 = new BigItem(); + bigItem3.setCode("CT_001"); + gdDetail3.setBigItem(bigItem3); + gdDetail3.setOrderType("成品"); + gdDetail3.setBigItemQty(2d); + gdDetail3.setStation("OP1070-1"); + + GdDetail gdDetail4 = new GdDetail(); + BigItem bigItem4 = new BigItem(); + bigItem4.setCode("CT_002"); + gdDetail4.setBigItem(bigItem4); + gdDetail4.setOrderType("成品"); + gdDetail4.setBigItemQty(3d); + gdDetail4.setStation("OP2060"); + + GdDetail gdDetail5 = new GdDetail(); + BigItem bigItem5 = new BigItem(); + bigItem5.setCode("CT_002"); + gdDetail5.setBigItem(bigItem5); + gdDetail5.setOrderType("成品"); + gdDetail5.setBigItemQty(4d); + gdDetail5.setStation("OP1030"); + + List gdDetailList = new ArrayList<>(); + gdDetailList.add(gdDetail1); + gdDetailList.add(gdDetail2); + gdDetailList.add(gdDetail3); + gdDetailList.add(gdDetail4); + gdDetailList.add(gdDetail5); + + Map>> groupedGdDetailMap = gdDetailList.stream() + .filter(gdDetail -> BaseStatus.GD_TYPE_CT.equals(gdDetail.getOrderType())) + .filter(gdDetail -> gdDetail.getBigItem() != null) + .collect(Collectors.groupingBy( + gdDetail -> gdDetail.getBigItem().getCode(), + Collectors.groupingBy(GdDetail::getStation) + )); + + groupedGdDetailMap.forEach((code, stationMap) -> { + stationMap.forEach((station, gdDetails) -> { + gdDetails.forEach(gdDetail -> { + System.out.println("Code: " + code + ", Station: " + station + ", GdDetail: " + gdDetail); + }); + }); + }); + } + + private static final int MAX_TASK_COUNT = 4; + private static final long TIMEOUT_MS = 600000; // 10分钟,以毫秒为单位 + private long lastTaskTime = System.currentTimeMillis(); + private List taskQueue = new ArrayList<>(MAX_TASK_COUNT); + + void aa() { + List list = new ArrayList<>(); list.add("物料库存不足,请先补充库存!"); list.add("数量已分配!"); @@ -35,14 +97,6 @@ public class EladminSystemApplicationTests { } else { System.out.println("集合中不存在分配成功的信息!"); } - } - - private static final int MAX_TASK_COUNT = 4; - private static final long TIMEOUT_MS = 600000; // 10分钟,以毫秒为单位 - private long lastTaskTime = System.currentTimeMillis(); - private List taskQueue = new ArrayList<>(MAX_TASK_COUNT); - - void aa() { CompletableFuture asnDetailFuture = CompletableFuture.runAsync(() -> { System.out.println("新增asnDetail"); @@ -130,69 +184,7 @@ public class EladminSystemApplicationTests { double ckdQty=Math.ceil(xTaoQty/taoQty);//生成出库单数量 System.out.println(ckdQty);*/ - GdDetail gdDetail = new GdDetail(); - gdDetail.setBigItem(null); - gdDetail.setOrderType("DP"); - GdDetail gdDetail2 = new GdDetail(); - BigItem bigItem2 = new BigItem(); - bigItem2.setCode("CT_001"); - gdDetail2.setBigItem(bigItem2); - gdDetail2.setOrderType("CP"); - gdDetail2.setBigItemQty(1d); - - GdDetail gdDetail3 = new GdDetail(); - BigItem bigItem3 = new BigItem(); - bigItem3.setCode("CT_001"); - gdDetail3.setBigItem(bigItem3); - gdDetail3.setOrderType("CP"); - gdDetail3.setBigItemQty(2d); - - GdDetail gdDetail4 = new GdDetail(); - BigItem bigItem4 = new BigItem(); - bigItem4.setCode("CT_002"); - gdDetail4.setBigItem(bigItem4); - gdDetail4.setOrderType("CP"); - gdDetail4.setBigItemQty(3d); - - GdDetail gdDetail5 = new GdDetail(); - BigItem bigItem5 = new BigItem(); - bigItem5.setCode("CT_002"); - gdDetail5.setBigItem(bigItem5); - gdDetail5.setOrderType("CP"); - gdDetail5.setBigItemQty(4d); - - List list = new ArrayList<>(); - list.add(gdDetail); - list.add(gdDetail2); - list.add(gdDetail3); - list.add(gdDetail4); - list.add(gdDetail5); - - for (GdDetail gd : list) { - System.out.println("总集合:" + gd); - } - - List cpList = list.stream() - .filter(gd -> "CP".equals(gd.getOrderType())) - .collect(Collectors.toList()); - - List dpList = list.stream() - .filter(gd -> "DP".equals(gd.getOrderType())) - .collect(Collectors.toList()); - for (GdDetail gd : cpList) { - System.out.println("成品集合:" + gd); - } - for (GdDetail gd : dpList) { - System.out.println("单品集合:" + gd); - } - - Map> groupedByCode = cpList.stream() - .collect(Collectors.groupingBy(gd -> gd.getBigItem().getCode())); - groupedByCode.forEach((code, details) -> { - System.out.println("Code: " + code); - details.forEach(System.out::println); - }); } @Test