skyouc
7 天以前 3ec190500044a26e48a3eb4e414e92869595bce8
单据明细优化
13个文件已修改
209 ■■■■ 已修改文件
rsf-admin/src/i18n/en.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/zh.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/locItem/LocItemList.jsx 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/stock/OrderList.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/AsnOrderItemMapper.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/en.js
@@ -578,6 +578,7 @@
                asnId: "asnId",
                asnCode: "asnCode",
                poDetlId: "poDetlId",
                platItemId: 'platItemId',
                poDetlCode: "poDetlCode",
                matnrId: "matnrId",
                maktx: "maktx",
rsf-admin/src/i18n/zh.js
@@ -568,6 +568,7 @@
                asnCode: "主单编码",
                poDetlId: "PO单ID",
                poDetlCode: "PO单",
                platItemId: '行号',
                matnrId: "物料标识",
                maktx: "物料名称",
                spec: "规格",
@@ -1051,7 +1052,7 @@
        batchLocType: "批量库位类型",
        batchPrint: "批量打印",
        quality: "质检",
        complete: "完成",
        complete: "完结",
        close: "关闭",
        asnCreate: "通过单据创建",
        createTask: "下发任务",
rsf-admin/src/page/locItem/LocItemList.jsx
@@ -128,7 +128,7 @@
                    preferenceKey='locItem'
                    bulkActionButtons={false}
                    rowClick={false}
                    expand={() => <LocItemPanel />}
                    expand={false}
                    expandSingle={true}
                    omit={['id', 'createTime','locId','orderId', 'orderItemId', 'matnrId', 'splrBatch','workQty','qty', 'createBy', 'memo','fieldsIndex']}
                   
@@ -157,10 +157,6 @@
                    <DateField source="createTime" label="common.field.createTime" showTime />
                    <BooleanField source="statusBool" label="common.field.status" sortable={false} />
                    <TextField source="memo" label="common.field.memo" sortable={false} />
                    <WrapperField cellClassName="opt" label="common.field.opt">
                        <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
                        {/* <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> */}
                    </WrapperField>
                </StyledDatagrid>
            </List>
            <LocItemCreate
rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx
@@ -138,13 +138,14 @@
            //   setSelect(record)
            //   setEditDialog(true)
            // }}
            omit={['id', 'createTime', 'purQty', 'purUnit', 'poDetlCode', 'createBy', 'memo', 'model', 'packName', 'splrCode', 'qrcode', 'poDetlId', 'matnrId', 'asnId']}
            omit={['id', 'purQty', 'purUnit','platItemId', 'poDetlCode', 'memo', 'model', 'packName', 'splrCode', 'qrcode', 'poDetlId', 'matnrId', 'asnId']}
          >
            <NumberField source="id" />
            <NumberField source="asnId" label="table.field.asnOrderItem.asnId" />
            <TextField source="asnCode" label="table.field.asnOrderItem.asnCode" />
            <TextField source="poDetlId" label="table.field.asnOrderItem.poDetlId" />
            <TextField source="poDetlCode" label="table.field.asnOrderItem.poDetlCode" />
            <TextField source="platItemId" label="table.field.asnOrderItem.platItemId" />
            <TextField source="matnrId" label="table.field.asnOrderItem.matnrId" />
            <TextField source="matnrCode" label="table.field.asnOrderItem.matnrCode" />
            <TextField source="maktx" label="table.field.asnOrderItem.maktx" />
@@ -165,8 +166,12 @@
            <TextField source="trackCode" label="table.field.asnOrderItem.barcode" />
            <TextField source="packName" label="table.field.asnOrderItem.packName" />
            <DateField source="updateTime" label="common.field.updateTime" showTime />
            <TextField source="updateBy$" label="common.field.updateBy"  />
            <TextField source="createBy$" label="common.field.createBy"  />
            <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
              <TextField source="nickname" />
            </ReferenceField>
            <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
              <TextField source="nickname" />
            </ReferenceField>
            <DateField source="createTime" label="common.field.createTime" showTime />
            <TextField source="memo" label="common.field.memo" sortable={false} />
          </StyledDatagrid>
rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
@@ -183,7 +183,8 @@
            <MyButton setCreateDialog={setCreateDialog} setmodalType={setmodalType} />
            <InspectionButton />
            <CompleteButton />
            <CloseButton />
            <DeleteButton mutationMode="pessimistic" />
            {/* <CloseButton /> */}
          </WrapperField>
        </StyledDatagrid>
      </List>
@@ -225,6 +226,7 @@
  )
}
//报检
const InspectionButton = () => {
  const record = useRecordContext();
  const notify = useNotify();
@@ -244,11 +246,8 @@
    }
  }
  return (
    <Button onClick={inspection} label={"toolbar.inspection"}>
      <ConstructionIcon />
    </Button>
    <ConfirmButton label={"toolbar.inspection"} color="secondary" startIcon={<ConstructionIcon />} onConfirm={inspection} />
  )
}
@@ -332,6 +331,7 @@
  )
}
//完成单据
const CompleteButton = () => {
  const record = useRecordContext();
  const notify = useNotify();
@@ -348,10 +348,10 @@
  }
  return (
    record.exceStatus === 1 && (record.anfme === record.qty ? <Button onClick={requestComplete} label={"toolbar.complete"} color="success">
      <TaskIcon />
    </Button> : <ConfirmButton label={"toolbar.complete"} color="success" data={'当前收货数量小于计划数量,是否确认完成'} startIcon={<TaskIcon />} onConfirm={requestComplete} />)
    // record.exceStatus === 1 && (record.anfme === record.qty ? <Button onClick={requestComplete} label={"toolbar.complete"} color="secondary">
    //   <TaskIcon />
    // </Button> : )
    <ConfirmButton label={"toolbar.complete"} color="secondary"  startIcon={<TaskIcon />} onConfirm={requestComplete} />
  )
@@ -373,6 +373,6 @@
  }
  return (
    <ConfirmButton label={"toolbar.close"} color="error" data={'确认是否关闭?'} startIcon={<CloseIcon />} onConfirm={requestClose} />
    <ConfirmButton label={"toolbar.close"} color="error"  startIcon={<CloseIcon />} onConfirm={requestClose} />
  )
}
rsf-admin/src/page/orders/stock/OrderList.jsx
@@ -113,9 +113,9 @@
            >
                <StyledDatagrid
                    preferenceKey='stock'
                    bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
                    bulkActionButtons={false}
                    rowClick='edit'
                    expandSingle={true}
                    expandSingle={false}
                    omit={['id', 'createTime','sourceId', 'createBy', 'memo']}
                >
                    <NumberField source="id" />
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java
@@ -28,6 +28,9 @@
@ApiModel(value = "ReceiptDetlsDto", description = "收货明细信息")
public class ReceiptDetlsDto implements Serializable {
    @ApiModelProperty("明细ID")
    private Long id;
    @ApiModelProperty("收货通知单")
    private String asnCode;
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -254,10 +254,14 @@
//            if (dto.getReceiptQty().compareTo(dto.getAnfme()) > 0) {
//                throw new CoolException("收货数量不能大于采购数量!!");
//            }
            AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>()
                    .eq(AsnOrderItem::getAsnCode, asnCode)
                    .eq(AsnOrderItem::getTrackCode, dto.getBarcode())
                    .eq(AsnOrderItem::getMatnrId, dto.getMatnrId()));
//            AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>()
//                    .eq(AsnOrderItem::getAsnCode, asnCode)
//                    .eq(AsnOrderItem::getId, dto.getId())
//                    .eq(AsnOrderItem::getTrackCode, dto.getBarcode())
//                    .eq(AsnOrderItem::getSplrBatch, dto.getSplrBatch()));
            AsnOrderItem orderItem = asnOrderItemMapper.resultById(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getId, dto.getId()));
            if (Objects.isNull(orderItem)) {
                throw new CoolException("通知单明细不存在!!");
            }
@@ -290,12 +294,29 @@
                throw new CoolException("通知单明细数量修改失败!!");
            }
            List<QlyIsptItem> isptItems = qlyIsptItemService.list(new LambdaQueryWrapper<QlyIsptItem>().eq(QlyIsptItem::getAsnItemId, dto.getId()));
            if (isptItems.isEmpty()) {
                extracted(loginUserId, dto, areasItem, orderItem, asnOrder, matnr);
            } else {
                for (QlyIsptItem isptItem : isptItems) {
                    extracted(loginUserId, dto, areasItem, orderItem, asnOrder, matnr);
                }
            }
        }
        AsnOrder order = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getCode, asnCode));
        if (order.getQty().compareTo(order.getAnfme()) >= 0.00) {
            order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.val).setRleStatus(Short.valueOf("1"));
            if (!asnOrderMapper.updateById(order)) {
                throw new CoolException("订单状态修改失败!!");
            }
        }
        return R.ok("收货成功!!");
    }
    private void extracted(Long loginUserId, ReceiptDetlsDto dto, WarehouseAreas areasItem, AsnOrderItem orderItem, AsnOrder asnOrder, Matnr matnr) {
            WarehouseAreasItem item = new WarehouseAreasItem();
//            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//            String format = null;
//            if (Objects.isNull(dto.getProdTime())) {
//                 format = dateFormat.format(dto.getProdTime());
//            }
            item.setTrackCode(dto.getBarcode())
                    .setAreaName(areasItem.getName())
                    .setAreaId(areasItem.getId())
@@ -332,17 +353,6 @@
            if (!warehouseAreasItemService.saveOrUpdate(item)) {
                throw new CoolException("收货失败!!");
            }
        }
        AsnOrder order = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getCode, asnCode));
        if (order.getQty().compareTo(order.getAnfme()) >= 0.00) {
            order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.val).setRleStatus(Short.valueOf("1"));
            if (!asnOrderMapper.updateById(order)) {
                throw new CoolException("订单状态修改失败!!");
            }
        }
        return R.ok("收货成功!!");
    }
    /**
@@ -938,6 +948,7 @@
            ReceiptDetlsDto detlsDto = new ReceiptDetlsDto();
            detlsDto.setAsnCode(asnOrderItem.getAsnCode())
                    .setId(asnOrderItem.getId())
                    .setMaktx(asnOrderItem.getMaktx())
                    .setFieldsIndex(asnOrderItem.getFieldsIndex())
                    .setBarcode(asnOrderItem.getTrackCode())
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java
@@ -200,6 +200,13 @@
    @ApiModelProperty("质检状态")
    private Short isptStatus;
    @ApiModelProperty("合格数量")
    private Double safeQty;
    @ApiModelProperty("不合格数量")
    private Double disQty;
    /**
     * 状态 1: 正常  0: 冻结
     */
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/AsnOrderTemplate.java
@@ -60,13 +60,13 @@
     */
    @Excel(name = "业务类型")
    @ApiModelProperty(value= "业务类型")
    @ExcelComment(value = "wkType", example = "生产入库")
    @ExcelComment(value = "wkType", example = "完工入库单")
    private String wkType;
    @Excel(name = "执行状态")
    @ApiModelProperty(value= "执行状态")
    @ExcelComment(value = "exceStatus", example = "1")
    @ExcelComment(value = "exceStatus", example = "0")
    private String exceStatus;
    @Excel(name = "行号")
@@ -126,12 +126,12 @@
    @Excel(name = "供应商编码")
    @ApiModelProperty("供应商编码")
    @ExcelComment(value = "splrCode",example = "3654821")
    @ExcelComment(value = "splrCode",example = "685947")
    private String splrCode;
    @Excel(name = "供应商名称")
    @ApiModelProperty("供应商名称")
    @ExcelComment(value = "splrName",example = "浙江中扬技术公司")
    @ExcelComment(value = "splrName",example = "浙江中扬立库技术有限公司")
    private String splrName;
    @Excel(name = "供应商批次")
@@ -139,19 +139,19 @@
    @ExcelComment(value = "splrBatch",example = "25251212")
    private String splrBatch;
    @Excel(name = "二维码")
    @ApiModelProperty("二维码")
    @ExcelComment(value = "qrcode",example = "")
    private String qrcode;
//    @Excel(name = "二维码")
//    @ApiModelProperty("二维码")
//    @ExcelComment(value = "qrcode",example = "")
//    private String qrcode;
    @Excel(name = "条形码")
    @ApiModelProperty("条形码")
    @ExcelComment(value = "barcode",example = "2354788")
    @ExcelComment(value = "barcode",example = "")
    private String barcode;
    @Excel(name = "跟踪码")
    @ApiModelProperty("跟踪码")
    @ExcelComment(value = "trackCode",example = "2354788")
    @ExcelComment(value = "trackCode",example = "")
    private String trackCode;
    @Excel(name = "包装名称")
rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/AsnOrderItemMapper.java
@@ -1,5 +1,6 @@
package com.vincent.rsf.server.manager.mapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
@@ -11,6 +12,7 @@
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
@Mapper
@@ -19,6 +21,6 @@
    IPage<Map<String, Object>> resultForMap(PageParam<AsnOrderItem, BaseParam> pages, @Param(Constants.WRAPPER)  QueryWrapper<AsnOrderItem> buildWrapper);
//    List<Map<String, Object>> resultForMap(long pageParam, @Param(Constants.WRAPPER) QueryWrapper<AsnOrderItem> ew);
    AsnOrderItem resultById(@Param(Constants.WRAPPER) LambdaQueryWrapper<AsnOrderItem> buildWrapper);
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
@@ -20,6 +20,7 @@
import com.vincent.rsf.server.manager.entity.Companys;
import com.vincent.rsf.server.manager.entity.Matnr;
import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate;
import com.vincent.rsf.server.manager.enums.CompanysType;
import com.vincent.rsf.server.manager.mapper.AsnOrderItemMapper;
import com.vincent.rsf.server.manager.entity.AsnOrderItem;
import com.vincent.rsf.server.manager.service.AsnOrderItemService;
@@ -127,13 +128,15 @@
                    sbFaild.append(orderTemplate.getMatnrCode()).append("物料不存在");
                    continue;
                }
                String trackCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LABEL_CODE, matnr);
                orderItem.setAsnId(order.getId())
                        .setAsnCode(order.getCode())
                        .setSplrBatch(orderTemplate.getSplrBatch())
                        .setPlatItemId(orderTemplate.getPlatItemId())
                        .setAnfme(Double.parseDouble(orderTemplate.getAnfme()))
                        .setQty(Double.parseDouble(orderTemplate.getQty()))
                        .setBarcode(orderTemplate.getBarcode())
                        .setTrackCode(orderTemplate.getTrackCode())
                        .setTrackCode(StringUtils.isBlank(orderTemplate.getTrackCode()) ? trackCode : orderTemplate.getTrackCode())
                        .setBarcode(StringUtils.isBlank(orderTemplate.getBarcode()) ? trackCode : orderTemplate.getBarcode())
                        .setPoCode(orderTemplate.getPoCode())
                        .setPurUnit(orderTemplate.getPurUnit())
                        .setCreateBy(loginUserId)
@@ -146,18 +149,21 @@
                        .setMatnrId(matnr.getId())
                        .setStockUnit(matnr.getUnit());
                if (!Objects.isNull(orderTemplate.getSplrCode())) {
                    Companys companys = companysService.getOne(new LambdaQueryWrapper<Companys>().eq(Companys::getCode, orderTemplate.getSplrCode()));
                    Companys companys = companysService.getOne(new LambdaQueryWrapper<Companys>()
                                    .eq(Companys::getType, CompanysType.COMPANYS_TYPE_SUPPLIER.val)
                            .eq(Companys::getCode, orderTemplate.getSplrCode()));
                    if (!Objects.isNull(companys)) {
                        orderItem.setSplrCode(companys.getCode()).setSplrName(companys.getName());
                    } else {
                        orderItem.setSplrCode(orderTemplate.getSplrCode()).setSplrName(orderTemplate.getSplrName() + "(供应商不存在!!)");
                        sbFaild.append("供应商:" + orderTemplate.getSplrCode()).append("不存在");
                        continue;
                    }
                } else {
                    continue;
                }
                items.add(orderItem);
                if (!asnOrderItemService.saveBatch(items)) {
                if (!asnOrderItemService.save(orderItem)) {
                    throw new CoolException("单据明细保存失败!!");
                }
            }
@@ -173,7 +179,7 @@
            }
        }
        return R.ok("操作成功," + sbFaild.toString());
        return R.ok("导入成功," + sbFaild.toString());
    }
    /**
rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml
@@ -61,4 +61,63 @@
            ) t
        ${ew.customSqlSegment}
    </select>
    <select id="resultById" resultType="com.vincent.rsf.server.manager.entity.AsnOrderItem">
        SELECT
            *
        FROM
            (
                SELECT
                    aoi.id,
                    aoi.asn_id,
                    aoi.asn_code,
                    aoi.plat_item_id,
                    aoi.po_detl_id,
                    aoi.po_code,
                    aoi.fields_index,
                    aoi.matnr_id,
                    aoi.matnr_code,
                    aoi.maktx,
                    aoi.anfme,
                    aoi.stock_unit,
                    aoi.pur_qty,
                    aoi.pur_unit,
                    aoi.prod_time,
                    aoi.qty,
                    qii.safe_qty,
                    qii.dis_qty,
                    aoi.splr_code,
                    aoi.splr_batch,
                    aoi.splr_name,
                    aoi.qrcode,
                    aoi.track_code,
                    aoi.barcode,
                    aoi.pack_name,
                    aoi.nty_status,
                    aoi.`status`,
                    CASE
                        aoi.ispt_result
                        WHEN 0 THEN
                            '未检'
                        WHEN 1 THEN
                            '合格'
                        WHEN 2 THEN
                            '不合格'
                        WHEN 3 THEN
                            '待定'
                        WHEN 4 THEN
                            '部分合格'
                        END AS isptResult$,
                    aoi.deleted,
                    aoi.tenant_id,
                    aoi.create_by,
                    aoi.create_time,
                    aoi.update_by,
                    aoi.update_time,
                    aoi.memo
                FROM
                    man_asn_order_item aoi
                        LEFT JOIN man_qly_ispt_item qii ON aoi.id = qii.asn_item_id
            ) t
            ${ew.customSqlSegment}
    </select>
</mapper>