| | |
| | | } |
| | | export default AsnOrderList; |
| | | |
| | | const ODeleteButton = () => { |
| | | const record = useRecordContext(); |
| | | |
| | | return ( |
| | | record.exceStatus === 0 ? <DeleteButton /> : <></> |
| | | ) |
| | | |
| | | } |
| | | |
| | | const MyButton = ({ setCreateDialog, setmodalType }) => { |
| | | const record = useRecordContext(); |
| | | const handleEditClick = (btn) => { |
| | |
| | | } |
| | | |
| | | return ( |
| | | <ConfirmButton label={"toolbar.inspection"} color="secondary" startIcon={<ConstructionIcon />} onConfirm={inspection} /> |
| | | <ConfirmButton label={"toolbar.inspection"} color="secondary" startIcon={<ConstructionIcon />} onConfirm={inspection} /> |
| | | ) |
| | | } |
| | | |
| | |
| | | // 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} /> |
| | | record.exceStatus === 1 ? <ConfirmButton label={"toolbar.complete"} color="secondary" startIcon={<TaskIcon />} onConfirm={requestComplete} /> : <></> |
| | | ) |
| | | |
| | | |
| | |
| | | ), |
| | | headerClassName: "custom", |
| | | }, |
| | | { |
| | | field: 'splrName', |
| | | headerName: translate('table.field.asnOrderItem.splrName') + "*", |
| | | minWidth: 100, |
| | | flex: 1, |
| | | editable: true, |
| | | renderEditCell: (params) => ( |
| | | <SelectInputSplrNameEditCell {...params} /> |
| | | ), |
| | | headerClassName: "custom", |
| | | }, |
| | | // { |
| | | // field: 'splrName', |
| | | // headerName: translate('table.field.asnOrderItem.splrName') + "*", |
| | | // minWidth: 100, |
| | | // flex: 1, |
| | | // editable: true, |
| | | // renderEditCell: (params) => ( |
| | | // <SelectInputSplrNameEditCell {...params} /> |
| | | // ), |
| | | // headerClassName: "custom", |
| | | // }, |
| | | // { |
| | | // field: 'packName', |
| | | // headerName: translate('table.field.asnOrderItem.packName'), |
| | |
| | | // flex: 1, |
| | | // }, |
| | | { |
| | | field: 'poCode', |
| | | headerName: translate('table.field.asnOrderItem.poDetlCode') + "*", |
| | | field: 'platItemId', |
| | | headerName: translate('table.field.asnOrderItem.platItemId') + "*", |
| | | minWidth: 100, |
| | | flex: 1, |
| | | editable: true, |
| | | headerClassName: "custom", |
| | | }, |
| | | |
| | | // { |
| | | // field: 'poCode', |
| | | // headerName: translate('table.field.asnOrderItem.poDetlCode') + "*", |
| | | // minWidth: 100, |
| | | // flex: 1, |
| | | // editable: true, |
| | | // headerClassName: "custom", |
| | | // }, |
| | | |
| | | { |
| | | field: 'stockUnit', |
| | | headerName: translate('table.field.asnOrderItem.stockUnit'), |
| | |
| | | <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"> |
| | | <SelectSiteButton source={source} setOpen={setOpen} refresh={refresh} notify={notify} /> |
| | | <SelectSiteButton source={source} setOpen={setOpen} refresh={refresh} notify={notify} /> |
| | | </WrapperField> |
| | | </StyledDatagrid> |
| | | </List> |
| | |
| | | const [drawerVal, setDrawerVal] = useState(false); |
| | | |
| | | const CreateTaskButton = () => { |
| | | const record = useRecordContext(); |
| | | const record = useRecordContext(); |
| | | const notify = useNotify(); |
| | | const refresh = useRefresh(); |
| | | const { selectedIds, onUnselectItems, data } = useListContext(); |
| | |
| | | ) |
| | | } |
| | | |
| | | const BulkActionButtons = () => { |
| | | const CreateTaskRowButton = () => { |
| | | const record = useRecordContext(); |
| | | const refresh = useRefresh(); |
| | | |
| | | const createTask = (event) => { |
| | | event.stopPropagation(); |
| | | setSiteDialog(true) |
| | | setSource([record]) |
| | | refresh() |
| | | } |
| | | |
| | | return ( |
| | | <> |
| | | <Button onClick={(event) => createTask(event)} label={"toolbar.createTask"}> |
| | | <AddIcon /> |
| | | </Button> |
| | | </> |
| | | ) |
| | | } |
| | | |
| | | return ( |
| | | <Box display="flex"> |
| | | <List |
| | |
| | | <TextField source="memo" label="common.field.memo" sortable={false} /> |
| | | <WrapperField cellClassName="opt" label="common.field.opt"> |
| | | <EditButton label="toolbar.detail" sx={{ padding: '1px', fontSize: '.75rem' }} /> |
| | | <CreateTaskRowButton /> |
| | | {/* <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> */} |
| | | </WrapperField> |
| | | </StyledDatagrid> |
| | |
| | | export default WaitPakinList; |
| | | |
| | | |
| | | |
| | | |
| | |
| | | import com.vincent.rsf.server.manager.entity.*; |
| | | import com.vincent.rsf.server.manager.enums.AsnExceStatus; |
| | | import com.vincent.rsf.server.manager.enums.PakinIOStatus; |
| | | import com.vincent.rsf.server.manager.enums.QlyIsptResult; |
| | | import com.vincent.rsf.server.manager.enums.QlyIsptStatus; |
| | | import com.vincent.rsf.server.manager.mapper.*; |
| | | import com.vincent.rsf.server.manager.service.*; |
| | |
| | | if (asnOrderItemMapper.updateById(orderItem) < 1) { |
| | | throw new CoolException("通知单明细数量修改失败!!"); |
| | | } |
| | | /**保存明细至收货区**/ |
| | | extracted(loginUserId, dto, areasItem, orderItem, asnOrder, matnr); |
| | | |
| | | 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)); |
| | |
| | | .setFieldsIndex(orderItem.getFieldsIndex()) |
| | | .setShipperId(matnr.getShipperId()); |
| | | //TODO 供应商标识未设置,标识由PO单供应商编码转换 |
| | | |
| | | WarehouseAreasItem serviceOne = warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>() |
| | | .eq(WarehouseAreasItem::getAsnItemId, item.getAsnItemId()) |
| | | .eq(WarehouseAreasItem::getTrackCode, item.getTrackCode()) |
| | | .eq(StringUtils.isNotBlank(item.getSplrBatch()), WarehouseAreasItem::getSplrBatch, item.getSplrBatch())); |
| | | if (!Objects.isNull(serviceOne)) { |
| | | item.setAnfme(item.getAnfme() + serviceOne.getAnfme()); |
| | | item.setId(serviceOne.getId()); |
| | | } |
| | | |
| | | //未质检 |
| | | if (!warehouseAreasItemService.saveOrUpdate(item)) { |
| | | throw new CoolException("收货失败!!"); |
| | | } |
| | | |
| | | // if (null != orderItem.getSafeQty() || null != orderItem.getDisQty() ) { |
| | | // |
| | | // } |
| | | // else { |
| | | // //不合格数量 |
| | | // if (orderItem.getDisQty().compareTo(0.00) > 0) { |
| | | // item.setIsptQty(orderItem.getDisQty()).setFlagNorm(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val); |
| | | // if (!warehouseAreasItemService.saveOrUpdate(item)) { |
| | | // throw new CoolException("收货失败!!"); |
| | | // } |
| | | // } |
| | | // |
| | | // item.setIsptQty(orderItem.getSafeQty()).setFlagNorm(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val); |
| | | // if (!warehouseAreasItemService.saveOrUpdate(item)) { |
| | | // throw new CoolException("收货失败!!"); |
| | | // } |
| | | // } |
| | | |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | 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.manager.entity.AsnOrderItem; |
| | | import com.vincent.rsf.server.manager.entity.Purchase; |
| | | import com.vincent.rsf.server.manager.service.AsnOrderItemService; |
| | | import com.vincent.rsf.server.manager.service.PurchaseService; |
| | | import com.vincent.rsf.server.system.constant.SerialRuleCode; |
| | | import com.vincent.rsf.server.system.controller.BaseController; |
| | | import com.vincent.rsf.server.system.utils.SerialRuleUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @RestController |
| | | public class PurchaseController extends BaseController { |
| | | |
| | | @Autowired |
| | | private PurchaseService purchaseService; |
| | | |
| | | @Autowired |
| | | private AsnOrderItemService asnOrderItemService; |
| | | |
| | | @PreAuthorize("hasAuthority('manager:purchase:list')") |
| | | @PostMapping("/purchase/page") |
| | |
| | | purchase.setCreateTime(new Date()); |
| | | purchase.setUpdateBy(getLoginUserId()); |
| | | purchase.setUpdateTime(new Date()); |
| | | if (StringUtils.isBlank(purchase.getCode())) { |
| | | String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_ORDER_PO_CODE, purchase); |
| | | purchase.setCode(ruleCode); |
| | | } |
| | | |
| | | if (!purchaseService.save(purchase)) { |
| | | return R.error("Save Fail"); |
| | | } |
| | |
| | | @OperationLog("Delete ERP采购单") |
| | | @PostMapping("/purchase/remove/{ids}") |
| | | public R remove(@PathVariable Long[] ids) { |
| | | List<Purchase> purchases = purchaseService.listByIds(Arrays.asList(ids)); |
| | | Set<String> stringSet = purchases.stream().map(Purchase::getCode).collect(Collectors.toSet()); |
| | | List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getPoCode, stringSet)); |
| | | if (!orderItems.isEmpty()) { |
| | | return R.error("单据有已生成的收货单明细,不可执行删除操作!!"); |
| | | } |
| | | if (!purchaseService.removeByIds(Arrays.asList(ids))) { |
| | | return R.error("Delete Fail"); |
| | | } |
| | |
| | | |
| | | |
| | | @ApiModelProperty("合格数量") |
| | | @TableField(exist = false) |
| | | private Double safeQty; |
| | | |
| | | @ApiModelProperty("不合格数量") |
| | | @TableField(exist = false) |
| | | private Double disQty; |
| | | |
| | | /** |
| | |
| | | @ApiModelProperty(value= "修改人员") |
| | | private Long updateBy; |
| | | |
| | | @ApiModelProperty("是否合格") |
| | | private Short flagNorm; |
| | | |
| | | @ApiModelProperty("质检数量") |
| | | private Double isptQty; |
| | | |
| | | /** |
| | | * 修改时间 |
| | | */ |
| | |
| | | QLY_ISPT_RESULT_DEFECT("2", "不合格"), |
| | | QLY_ISPT_RESULT_PENDING("3", "待定"), |
| | | QLY_ISPT_RESULT_SECTION("4", "部分合格"), |
| | | QLY_ISPT_RESULT_HOLD("0", "其它") |
| | | QLY_ISPT_RESULT_HOLD("0", "未质检") |
| | | ; |
| | | |
| | | QlyIsptResult(String val, String desc) { |
| | |
| | | String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LABEL_CODE, asnOrderItem); |
| | | asnOrderItem.setTrackCode(ruleCode).setBarcode(ruleCode); |
| | | } |
| | | if (StringUtils.isNoneBlank(asnOrderItem.getSplrCode())) { |
| | | Companys companys = companysService.getOne(new LambdaQueryWrapper<Companys>() |
| | | .eq(Companys::getId, asnOrderItem.getSplrCode()) |
| | | .eq(Companys::getType, CompanysType.COMPANYS_TYPE_SUPPLIER.val)); |
| | | if (!Objects.isNull(companys)) { |
| | | asnOrderItem.setSplrCode(companys.getCode()).setSplrName(companys.getName()); |
| | | } |
| | | } |
| | | if (Objects.isNull(asnOrderItem.getAnfme()) || Double.compare(asnOrderItem.getAnfme(), 0.0) <= 0) { |
| | | throw new CoolException("计划数不能为空!!"); |
| | | } |
| | |
| | | */ |
| | | public final static String SYS_WAVE_TYPE = "sys_wave_type"; |
| | | |
| | | /**PO单编码*/ |
| | | public final static String SYS_ORDER_PO_CODE = "sys_order_po_code"; |
| | | |
| | | } |
| | |
| | | if (serialRule.getReset().equals(SerialRuleReset.SERIAL_REST_TYPE_YEAR.type)) { |
| | | format = DateUtils.format(new Date(), "yyyy"); |
| | | } else if (serialRule.getReset().equals(SerialRuleReset.SERIAL_REST_TYPE_MONTH.type)) { |
| | | format = DateUtils.format(new Date(), "yyyyMM"); |
| | | format = DateUtils.format(new Date(), "yyMM"); |
| | | } else if (serialRule.getReset().equals(SerialRuleReset.SERIAL_REST_TYPE_DAYS.type)){ |
| | | format = DateUtils.format(new Date(), "yyyyMMdd"); |
| | | format = DateUtils.format(new Date(), "yyMMdd"); |
| | | } |
| | | //当前值自动加1 |
| | | Integer curVal = serialRule.getCurrValue() + 1; |