rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java
@@ -209,7 +209,7 @@ @ApiOperation("快速质检信息") @PreAuthorize("hasAuthority('manager:qlyInspect:list')") @PostMapping("/inspect/query") // @PostMapping("/inspect/query") public R checkObjs(@RequestBody CheckObjParams params) { if (Objects.isNull(params)) { return R.error("参数不能为空!!"); rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -612,15 +612,15 @@ .setId(isptItem.getId()) .setMatnrCode(isptItem.getMatnrCode()) .setMaktx(isptItem.getMaktx()) .setDisQty(isptItem.getDisQty()) // .setDisQty(isptItem.getDisQty()) .setDlyQty(isptItem.getDlyQty()) .setRcptQty(isptItem.getRcptQty()) .setIsptResult(isptItem.getIsptResult()) .setSplrBatch(isptItem.getSplrBatch()) .setSplrName(isptItem.getSplrName()) .setPicPath(isptItem.getPicPath()) .setMemo(isptItem.getMemo()) .setSafeQty(isptItem.getSafeQty()); .setMemo(isptItem.getMemo()); // .setSafeQty(isptItem.getSafeQty()); dtos.add(objDto); }); return R.ok(dtos); rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java
@@ -15,15 +15,15 @@ generator.frontendPrefixPath = "rsf-admin/"; generator.sqlOsType = SqlOsType.MYSQL; generator.url = "127.0.0.1:3306/rsf"; generator.url = "192.168.4.56:3306/rsf"; generator.username = "root"; generator.password = "34821015"; // generator.url="47.97.1.152:51433;databasename=jkasrs"; // generator.username="sa"; // generator.password="Zoneyung@zy56$"; generator.table = "man_device_bind"; generator.tableDesc = "立体库站点绑定"; generator.table = "man_qly_inspect_result"; generator.tableDesc = "质检结果"; generator.packagePath = "com.vincent.rsf.server.manager"; generator.build(); rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java
@@ -53,7 +53,7 @@ } @PostMapping("/qlyInspect/reports") @ApiOperation("获取已上报单据明细") @ApiOperation("获取可质检单据明细") @PreAuthorize("hasAuthority('manager:qlyInspect:list')") public R listByAsnCode(@RequestBody Map<String, Object> map) { if (Objects.isNull(map)) { @@ -132,9 +132,12 @@ if (Objects.isNull(ids) || ids.length < 1) { return R.error("能数不能为空!!"); } List<QlyInspect> qlyInspects = qlyInspectService.list(new LambdaQueryWrapper<QlyInspect>().in(QlyInspect::getId, ids)); List<QlyInspect> qlyInspects = qlyInspectService.list(new LambdaQueryWrapper<QlyInspect>() .in(QlyInspect::getId, ids) .gt(QlyInspect::getIsptQty, 0) ); if (!qlyInspects.isEmpty()) { return R.error("有明细列表存在!!"); return R.error("有明细单据已在质检中!!"); } if (!qlyInspectService.removeByIds(Arrays.asList(ids))) { return R.error("Delete Fail"); rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyIsptItemController.java
@@ -10,8 +10,10 @@ import com.vincent.rsf.server.common.domain.BaseParam; import com.vincent.rsf.server.common.domain.KeyValVo; import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.common.utils.FieldsUtils; import com.vincent.rsf.server.manager.controller.params.IsptItemsParams; import com.vincent.rsf.server.manager.controller.params.QlyInspectAndItem; import com.vincent.rsf.server.manager.entity.AsnOrderItem; import com.vincent.rsf.server.manager.entity.QlyIsptItem; import com.vincent.rsf.server.manager.service.QlyIsptItemService; import com.vincent.rsf.server.system.controller.BaseController; @@ -36,7 +38,19 @@ public R page(@RequestBody Map<String, Object> map) { BaseParam baseParam = buildParam(map, BaseParam.class); PageParam<QlyIsptItem, BaseParam> pageParam = new PageParam<>(baseParam, QlyIsptItem.class); return R.ok().add(qlyIsptItemService.page(pageParam, pageParam.buildWrapper(true))); /**拼接扩展字段*/ PageParam<QlyIsptItem, BaseParam> page = qlyIsptItemService.page(pageParam, pageParam.buildWrapper(true)); List<QlyIsptItem> records = page.getRecords(); for (QlyIsptItem record : records) { if (!Objects.isNull(record.getFieldsIndex())) { Map<String, String> fields = FieldsUtils.getFields(record.getFieldsIndex()); record.setExtendFields(fields); } } page.setRecords(records); return R.ok(page); } @PreAuthorize("hasAuthority('manager:qlyIsptItem:list')") rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/QlyIsptItem.java
@@ -1,6 +1,7 @@ package com.vincent.rsf.server.manager.entity; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.*; import java.text.SimpleDateFormat; import java.util.Date; @@ -9,12 +10,10 @@ import com.vincent.rsf.server.system.constant.DictTypeCode; import com.vincent.rsf.server.system.entity.DictData; import com.vincent.rsf.server.system.service.DictDataService; import io.swagger.annotations.Api; import lombok.experimental.Accessors; import org.springframework.format.annotation.DateTimeFormat; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import com.vincent.rsf.framework.common.Cools; @@ -22,6 +21,7 @@ import com.vincent.rsf.server.system.service.UserService; import com.vincent.rsf.server.system.entity.User; import java.io.Serializable; import java.util.Map; import java.util.Objects; @Data @@ -84,22 +84,34 @@ @ApiModelProperty(value= "收货数量") private Double rcptQty; @ApiModelProperty("质检数量") private Double anfme; /** * 送货数量 */ @ApiModelProperty(value= "送货数量") private Double dlyQty; @ApiModelProperty("扩展字段") private String fieldsIndex; @ApiModelProperty("扩展字段") @TableField(exist = false) private Map<String, String> extendFields; /** * 不合数量 */ @ApiModelProperty(value= "不合数量") @TableField(exist = false) private Double disQty; /** * 合格数量 */ @ApiModelProperty(value= "合格数量") @TableField(exist = false) private Double safeQty; /** @@ -175,8 +187,8 @@ this.stockBatch = stockBatch; this.rcptQty = rcptQty; this.dlyQty = dlyQty; this.disQty = disQty; this.safeQty = safeQty; // this.disQty = disQty; // this.safeQty = safeQty; this.picPath = picPath; this.status = status; this.deleted = deleted; rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java
@@ -8,6 +8,7 @@ import com.vincent.rsf.server.manager.controller.params.IsptOrderParam; import com.vincent.rsf.server.manager.controller.params.QlyInspectAndItem; import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.enums.QlyIsptResult; import com.vincent.rsf.server.manager.enums.QlyIsptStatus; import com.vincent.rsf.server.manager.mapper.QlyInspectMapper; import com.vincent.rsf.server.manager.service.*; @@ -37,6 +38,9 @@ @Autowired private QlyIsptItemService qlyIsptItemService; @Autowired private CompanysService companysService; @Autowired private WarehouseAreasItemService warehouseAreasItemService; @@ -105,9 +109,12 @@ String code = params.get("asnCode"); List<WarehouseAreasItem> warehouseAreasItems = warehouseAreasItemService .list(new QueryWrapper<WarehouseAreasItem>() .select("asn_id as id, SUM(anfme) anfme, SUM(qty) qty, area_id, area_name, asn_code, asn_id") .select("asn_id as id, SUM(anfme) anfme, SUM(qty) qty, area_id, area_name, asn_code, asn_id, splr_id, splr_batch") .eq(StringUtils.isNotBlank(code), "asn_code", code) .lambda() .isNull(WarehouseAreasItem::getIsptResult) .lt(WarehouseAreasItem::getWorkQty, 1) .lt(WarehouseAreasItem::getQty, 1) .groupBy(WarehouseAreasItem::getAsnCode)); return warehouseAreasItems; } @@ -126,15 +133,18 @@ if (Objects.isNull(param.getIds()) || param.getIds().isEmpty()) { throw new CoolException("单据ID不能为空!!"); } List<AsnOrder> asnOrders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().in(AsnOrder::getId, param.getIds()).eq(AsnOrder::getNtyStatus, 0)); List<AsnOrder> asnOrders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().in(AsnOrder::getId, param.getIds())); if (asnOrders.isEmpty()) { throw new CoolException("单据不存在!!"); } List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getAsnId, param.getIds())); if (orderItems.isEmpty()) { throw new CoolException("单据明细不存在!!"); } Map<Long, List<AsnOrderItem>> listMap = orderItems.stream().collect(Collectors.groupingBy(AsnOrderItem::getAsnId)); // List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getAsnId, param.getIds())); // if (orderItems.isEmpty()) { // throw new CoolException("单据明细不存在!!"); // } List<WarehouseAreasItem> orderItems = warehouseAreasItemService.list(new LambdaQueryWrapper<WarehouseAreasItem>() .in(WarehouseAreasItem::getAsnId, param.getIds())); Map<Long, List<WarehouseAreasItem>> listMap = orderItems.stream().collect(Collectors.groupingBy(WarehouseAreasItem::getAsnId)); for (AsnOrder asnOrder : asnOrders) { QlyInspect inspect = new QlyInspect(); String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_INSPECT_CODE, null); @@ -148,23 +158,26 @@ .setAsnId(asnOrder.getId()) .setAsnCode(asnOrder.getCode()); /**获取单据明细*/ List<AsnOrderItem> asnOrderItems = listMap.get(asnOrder.getId()); List<WarehouseAreasItem> asnOrderItems = listMap.get(asnOrder.getId()); if (Objects.isNull(asnOrderItems) || asnOrderItems.isEmpty()) { continue; } double rcptQty = asnOrderItems.stream().mapToDouble(AsnOrderItem::getQty).sum(); double anfme = asnOrderItems.stream().mapToDouble(AsnOrderItem::getAnfme).sum(); inspect.setRcptQty(rcptQty).setDlyQty(anfme); double anfme = asnOrderItems.stream().mapToDouble(WarehouseAreasItem::getAnfme).sum(); inspect.setRcptQty(anfme); if (!this.save(inspect)) { throw new CoolException("单据" + asnOrder.getCode() + "保存失败!!"); } List<QlyIsptItem> items = new ArrayList<>(); for (AsnOrderItem orderItem : asnOrderItems) { for (WarehouseAreasItem orderItem : asnOrderItems) { QlyIsptItem isptItem = new QlyIsptItem(); BeanUtils.copyProperties(orderItem, isptItem); isptItem.setAsnItemId(orderItem.getId()) .setIspectId(inspect.getId()) .setRcptQty(orderItem.getQty()) .setRcptQty(orderItem.getAnfme()) .setAnfme(0.0) .setFieldsIndex(orderItem.getFieldsIndex()) .setSplrBatch(orderItem.getSplrBatch()) .setSplrName(orderItem.getSplrId$()) .setCreateBy(loginUserId) .setDlyQty(orderItem.getAnfme()); items.add(isptItem); @@ -173,9 +186,9 @@ throw new CoolException("明细保存失败!!"); } } if (!asnOrderService.update(new LambdaUpdateWrapper<AsnOrder>().in(AsnOrder::getId, param.getIds()).set(AsnOrder::getNtyStatus, 1))) { throw new CoolException("报检状态修改失败!!"); } // if (!asnOrderService.update(new LambdaUpdateWrapper<AsnOrder>().in(AsnOrder::getId, param.getIds()))) { // throw new CoolException("报检状态修改失败!!"); // } return R.ok("保存成功!!"); } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java
@@ -8,18 +8,22 @@ import com.vincent.rsf.server.manager.controller.params.QlyInspectAndItem; import com.vincent.rsf.server.manager.entity.AsnOrderItem; import com.vincent.rsf.server.manager.entity.QlyInspect; import com.vincent.rsf.server.manager.entity.QlyInspectResult; import com.vincent.rsf.server.manager.enums.QlyIsptResult; import com.vincent.rsf.server.manager.enums.QlyIsptStatus; import com.vincent.rsf.server.manager.mapper.QlyIsptItemMapper; import com.vincent.rsf.server.manager.entity.QlyIsptItem; import com.vincent.rsf.server.manager.service.AsnOrderItemService; import com.vincent.rsf.server.manager.service.QlyInspectResultService; import com.vincent.rsf.server.manager.service.QlyInspectService; import com.vincent.rsf.server.manager.service.QlyIsptItemService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Objects; @@ -33,11 +37,14 @@ @Autowired private AsnOrderItemService asnOrderItemService; @Autowired private QlyInspectResultService qlyInspectResultService; /** * @author Ryan * @description 批量修改 * @param * @return * @author Ryan * @description 批量修改 * @time 2025/4/1 09:40 */ @Override @@ -46,23 +53,67 @@ if (Objects.isNull(params.getIsptItem()) || params.getIsptItem().isEmpty()) { throw new CoolException("ID不能为空!!"); } List<QlyIsptItem> isptItem = params.getIsptItem(); List<QlyIsptItem> isptItem = params.getIsptItem(); List<Long> list = isptItem.stream().map(QlyIsptItem::getId).collect(Collectors.toList()); List<QlyIsptItem> isptItems = this.list(new LambdaQueryWrapper<QlyIsptItem>().in(QlyIsptItem::getId, list)); if (isptItems.isEmpty()) { throw new CoolException("数据错误:明细不存在!!"); } for (QlyIsptItem item : isptItems) { List<QlyInspectResult> results = qlyInspectResultService.list(new LambdaQueryWrapper<QlyInspectResult>() .eq(QlyInspectResult::getIsptId, item.getIspectId()) .eq(QlyInspectResult::getIsptItemId, item.getId())); if (!results.isEmpty()) { //不为空做更新操作 } else { //为空做新增操作 QlyInspectResult result = new QlyInspectResult(); result.setIsptId(item.getIspectId()) .setAnfme(item.getSafeQty()) .setIsptItemId(item.getId()); if (item.getDisQty().compareTo(0.00) < 1) { continue; } result.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val); result.setAnfme(item.getDisQty()); if (!qlyInspectResultService.save(result)) { throw new CoolException("质检结论保存失败!!"); } if (item.getSafeQty().compareTo(0.00) < 1) { continue; } result.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val) .setAnfme(item.getSafeQty()); if (!qlyInspectResultService.save(result)) { throw new CoolException("质检结论保存失败!!"); } } } if (Short.parseShort(params.getType()) == QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val || Short.parseShort(params.getType()) == QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val) { //1:合格, 2:不合格, 0: 其它(默认) isptItem.forEach(item -> { if (Short.parseShort(params.getType()) == QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val) { //TODO 先捡后收为送货数量,先收后捡为收货数量 item.setSafeQty(item.getDlyQty()); item.setDisQty(0.0); // item.setSafeQty(item.getDlyQty()); // item.setDisQty(0.0); } else { item.setSafeQty(0.0); item.setDisQty(item.getDlyQty()); // item.setSafeQty(0.0); // item.setDisQty(item.getDlyQty()); } if (!this.update(new LambdaUpdateWrapper<QlyIsptItem>() .set(QlyIsptItem::getSafeQty, item.getSafeQty()) // .set(QlyIsptItem::getSafeQty, item.getSafeQty()) .set(QlyIsptItem::getIsptResult, Short.parseShort(params.getType())) .set(QlyIsptItem::getDisQty, item.getDisQty()) // .set(QlyIsptItem::getDisQty, item.getDisQty()) .in(QlyIsptItem::getId, item.getId()))) { throw new CoolException("修改失败!!"); } @@ -72,48 +123,45 @@ throw new CoolException("明细修改失败"); } } List<QlyIsptItem> isptItems = this.list(new LambdaQueryWrapper<QlyIsptItem>().in(QlyIsptItem::getId, list)); if (isptItems.isEmpty()) { throw new CoolException("数据错误:明细不存在!!"); } Map<Long, List<QlyIsptItem>> listMap = isptItems.stream().collect(Collectors.groupingBy(QlyIsptItem::getIspectId)); for (Long key : listMap.keySet()) { QlyInspect inspect = qlyInspectService.getById(key); List<QlyIsptItem> items = listMap.get(key); items.forEach(qlyIsptItem -> { AsnOrderItem orderItem = asnOrderItemService.getById(qlyIsptItem.getAsnItemId()); if (qlyIsptItem.getSafeQty().compareTo(orderItem.getAnfme()) >= 0.00) { orderItem.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val) .setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val); } else if (qlyIsptItem.getSafeQty().compareTo(0.00) > 0.00 && qlyIsptItem.getSafeQty().compareTo(orderItem.getAnfme()) < 0.00) { orderItem.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_SECTION.val); if (Double.compare(qlyIsptItem.getSafeQty() + qlyIsptItem.getDisQty(), orderItem.getAnfme()) >= 0.00 ) { orderItem.setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val); } else { orderItem.setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_ING.val); } } else { orderItem.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val) .setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val); } // if (qlyIsptItem.getSafeQty().compareTo(orderItem.getAnfme()) >= 0.00) { // orderItem.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val) // .setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val); // } else if (qlyIsptItem.getSafeQty().compareTo(0.00) > 0.00 && qlyIsptItem.getSafeQty().compareTo(orderItem.getAnfme()) < 0.00) { // orderItem.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_SECTION.val); // if (Double.compare(qlyIsptItem.getSafeQty() + qlyIsptItem.getDisQty(), orderItem.getAnfme()) >= 0.00 ) { // orderItem.setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val); // } else { // orderItem.setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_ING.val); // } // } else { // orderItem.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val) // .setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val); // } if (!asnOrderItemService.updateById(orderItem)) { throw new CoolException("收货单明细修改失败!!"); } }); Double safeQty = items.stream().mapToDouble(QlyIsptItem::getSafeQty).sum(); Double disQty = items.stream().mapToDouble(QlyIsptItem::getDisQty).sum(); Double qlyQty = safeQty + disQty; //安全数量,质检数量 inspect.setSafeQty(safeQty) .setIsptQty(qlyQty); if (Double.compare(disQty, 0) > 0) { inspect.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_SECTION.val); } if (Double.compare(safeQty, inspect.getDlyQty()) == 0) { // inspect.setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val); inspect.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val); } // Double safeQty = items.stream().mapToDouble(QlyIsptItem::getSafeQty).sum(); // Double disQty = items.stream().mapToDouble(QlyIsptItem::getDisQty).sum(); // Double qlyQty = safeQty + disQty; // //安全数量,质检数量 // inspect.setSafeQty(safeQty) // .setIsptQty(qlyQty); // if (Double.compare(disQty, 0) > 0) { // inspect.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_SECTION.val); // } // if (Double.compare(safeQty, inspect.getDlyQty()) == 0) { //// inspect.setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val); // inspect.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val); // } if (!qlyInspectService.updateById(inspect)) { throw new CoolException("质检数量修改失败!!"); } rsf-server/src/main/resources/application-dev.yml
@@ -14,7 +14,7 @@ driver-class-name: com.mysql.jdbc.Driver # url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai username: root url: jdbc:mysql://127.0.0.1:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai url: jdbc:mysql://192.168.4.56:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai # username: rsf password: 34821015 type: com.alibaba.druid.pool.DruidDataSource